Files
2019-02-24 22:29:41 +08:00

139 lines
5.3 KiB
Diff

--- ../src-base/minecraft/net/minecraft/stats/StatList.java
+++ ../src-work/minecraft/net/minecraft/stats/StatList.java
@@ -162,7 +162,7 @@
}
}
- replaceAllSimilarBlocks(CRAFTS_STATS);
+ replaceAllSimilarBlocks(CRAFTS_STATS, true);
}
private static void initMiningStats()
@@ -184,7 +184,7 @@
}
}
- replaceAllSimilarBlocks(BLOCKS_STATS);
+ replaceAllSimilarBlocks(BLOCKS_STATS, false);
}
private static void initStats()
@@ -208,7 +208,7 @@
}
}
- replaceAllSimilarBlocks(OBJECT_USE_STATS);
+ replaceAllSimilarBlocks(OBJECT_USE_STATS, true);
}
private static void initItemDepleteStats()
@@ -227,7 +227,7 @@
}
}
- replaceAllSimilarBlocks(OBJECT_BREAK_STATS);
+ replaceAllSimilarBlocks(OBJECT_BREAK_STATS, true);
}
private static void initPickedUpAndDroppedStats()
@@ -247,7 +247,7 @@
}
}
- replaceAllSimilarBlocks(OBJECT_BREAK_STATS);
+ replaceAllSimilarBlocks(OBJECT_BREAK_STATS, true);
}
private static String getItemName(Item itemIn)
@@ -256,28 +256,35 @@
return resourcelocation != null ? resourcelocation.toString().replace(':', '.') : null;
}
- private static void replaceAllSimilarBlocks(StatBase[] stat)
+ private static void replaceAllSimilarBlocks(StatBase[] stat, boolean useItemIds)
{
- mergeStatBases(stat, Blocks.WATER, Blocks.FLOWING_WATER);
- mergeStatBases(stat, Blocks.LAVA, Blocks.FLOWING_LAVA);
- mergeStatBases(stat, Blocks.LIT_PUMPKIN, Blocks.PUMPKIN);
- mergeStatBases(stat, Blocks.LIT_FURNACE, Blocks.FURNACE);
- mergeStatBases(stat, Blocks.LIT_REDSTONE_ORE, Blocks.REDSTONE_ORE);
- mergeStatBases(stat, Blocks.POWERED_REPEATER, Blocks.UNPOWERED_REPEATER);
- mergeStatBases(stat, Blocks.POWERED_COMPARATOR, Blocks.UNPOWERED_COMPARATOR);
- mergeStatBases(stat, Blocks.REDSTONE_TORCH, Blocks.UNLIT_REDSTONE_TORCH);
- mergeStatBases(stat, Blocks.LIT_REDSTONE_LAMP, Blocks.REDSTONE_LAMP);
- mergeStatBases(stat, Blocks.DOUBLE_STONE_SLAB, Blocks.STONE_SLAB);
- mergeStatBases(stat, Blocks.DOUBLE_WOODEN_SLAB, Blocks.WOODEN_SLAB);
- mergeStatBases(stat, Blocks.DOUBLE_STONE_SLAB2, Blocks.STONE_SLAB2);
- mergeStatBases(stat, Blocks.GRASS, Blocks.DIRT);
- mergeStatBases(stat, Blocks.FARMLAND, Blocks.DIRT);
+ mergeStatBases(stat, Blocks.WATER, Blocks.FLOWING_WATER, useItemIds);
+ mergeStatBases(stat, Blocks.LAVA, Blocks.FLOWING_LAVA, useItemIds);
+ mergeStatBases(stat, Blocks.LIT_PUMPKIN, Blocks.PUMPKIN, useItemIds);
+ mergeStatBases(stat, Blocks.LIT_FURNACE, Blocks.FURNACE, useItemIds);
+ mergeStatBases(stat, Blocks.LIT_REDSTONE_ORE, Blocks.REDSTONE_ORE, useItemIds);
+ mergeStatBases(stat, Blocks.POWERED_REPEATER, Blocks.UNPOWERED_REPEATER, useItemIds);
+ mergeStatBases(stat, Blocks.POWERED_COMPARATOR, Blocks.UNPOWERED_COMPARATOR, useItemIds);
+ mergeStatBases(stat, Blocks.REDSTONE_TORCH, Blocks.UNLIT_REDSTONE_TORCH, useItemIds);
+ mergeStatBases(stat, Blocks.LIT_REDSTONE_LAMP, Blocks.REDSTONE_LAMP, useItemIds);
+ mergeStatBases(stat, Blocks.DOUBLE_STONE_SLAB, Blocks.STONE_SLAB, useItemIds);
+ mergeStatBases(stat, Blocks.DOUBLE_WOODEN_SLAB, Blocks.WOODEN_SLAB, useItemIds);
+ mergeStatBases(stat, Blocks.DOUBLE_STONE_SLAB2, Blocks.STONE_SLAB2, useItemIds);
+ mergeStatBases(stat, Blocks.GRASS, Blocks.DIRT, useItemIds);
+ mergeStatBases(stat, Blocks.FARMLAND, Blocks.DIRT, useItemIds);
}
- private static void mergeStatBases(StatBase[] statBaseIn, Block block1, Block block2)
+ private static void mergeStatBases(StatBase[] statBaseIn, Block block1, Block block2, boolean useItemIds)
{
- int i = Block.getIdFromBlock(block1);
- int j = Block.getIdFromBlock(block2);
+ int i;
+ int j;
+ if (useItemIds) {
+ i = Item.getIdFromItem(Item.getItemFromBlock(block1));
+ j = Item.getIdFromItem(Item.getItemFromBlock(block2));
+ } else {
+ i = Block.getIdFromBlock(block1);
+ j = Block.getIdFromBlock(block2);
+ }
if (statBaseIn[i] != null && statBaseIn[j] == null)
{
@@ -309,4 +316,36 @@
{
return ID_TO_STAT_MAP.get(statName);
}
+
+ @Deprecated //MODDER DO NOT CALL THIS ITS JUST A EVENT CALLBACK FOR FORGE
+ public static void reinit()
+ {
+ ID_TO_STAT_MAP.clear();
+ BASIC_STATS.clear();
+ USE_ITEM_STATS.clear();
+ MINE_BLOCK_STATS.clear();
+
+ for (StatBase[] sb : new StatBase[][]{BLOCKS_STATS, CRAFTS_STATS, OBJECT_USE_STATS, OBJECT_BREAK_STATS, OBJECTS_PICKED_UP_STATS, OBJECTS_DROPPED_STATS})
+ {
+ for (int x = 0; x < sb.length; x++)
+ {
+ if (sb[x] != null)
+ {
+ ALL_STATS.remove(sb[x]);
+ sb[x] = null;
+ }
+ }
+ }
+ List<StatBase> unknown = Lists.newArrayList(ALL_STATS);
+ ALL_STATS.clear();
+
+ for (StatBase b : unknown)
+ b.registerStat();
+
+ initMiningStats();
+ initStats();
+ initItemDepleteStats();
+ initCraftableStats();
+ initPickedUpAndDroppedStats();
+ }
}