--- a/net/minecraft/server/Bootstrap.java +++ b/net/minecraft/server/Bootstrap.java @@ -17,6 +17,9 @@ import net.minecraft.core.dispenser.DispenseItemBehavior; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.locale.Language; +import net.minecraft.util.datafix.fixes.BlockStateData; +import net.minecraft.util.datafix.fixes.ItemIdFix; +import net.minecraft.util.datafix.fixes.ItemSpawnEggFix; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.ai.attributes.Attribute; @@ -30,7 +33,8 @@ import net.minecraft.world.level.block.state.BlockBehaviour; import org.slf4j.Logger; -@SuppressForbidden(a = "System.out setup") +@SuppressForbidden(reason = "System.out setup") +// CraftBukkit end public class Bootstrap { public static final PrintStream STDOUT = System.out; @@ -42,9 +46,27 @@ public static void bootStrap() { if (!Bootstrap.isBootstrapped) { + // CraftBukkit start + /*String name = Bootstrap.class.getSimpleName(); // Paper + switch (name) { + case "DispenserRegistry": + break; + case "Bootstrap": + System.err.println("***************************************************************************"); + System.err.println("*** WARNING: This server jar may only be used for development purposes. ***"); + System.err.println("***************************************************************************"); + break; + default: + System.err.println("**********************************************************************"); + System.err.println("*** WARNING: This server jar is unsupported, use at your own risk. ***"); + System.err.println("**********************************************************************"); + break; + }*/ // Paper + // CraftBukkit end Bootstrap.isBootstrapped = true; Instant instant = Instant.now(); + io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler.enterBootstrappers(); // Paper - Entrypoint for bootstrapping if (BuiltInRegistries.REGISTRY.keySet().isEmpty()) { throw new IllegalStateException("Unable to load registries"); } else { @@ -56,11 +78,77 @@ EntitySelectorOptions.bootStrap(); DispenseItemBehavior.bootStrap(); CauldronInteraction.bootStrap(); - BuiltInRegistries.bootStrap(); + // Paper start + BuiltInRegistries.bootStrap(() -> { + }); + // Paper end CreativeModeTabs.validate(); Bootstrap.wrapStreams(); Bootstrap.bootstrapDuration.set(Duration.between(instant, Instant.now()).toMillis()); } + // CraftBukkit start - easier than fixing the decompile + BlockStateData.register(1008, "{Name:'minecraft:oak_sign',Properties:{rotation:'0'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'0'}}"); + BlockStateData.register(1009, "{Name:'minecraft:oak_sign',Properties:{rotation:'1'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'1'}}"); + BlockStateData.register(1010, "{Name:'minecraft:oak_sign',Properties:{rotation:'2'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'2'}}"); + BlockStateData.register(1011, "{Name:'minecraft:oak_sign',Properties:{rotation:'3'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'3'}}"); + BlockStateData.register(1012, "{Name:'minecraft:oak_sign',Properties:{rotation:'4'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'4'}}"); + BlockStateData.register(1013, "{Name:'minecraft:oak_sign',Properties:{rotation:'5'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'5'}}"); + BlockStateData.register(1014, "{Name:'minecraft:oak_sign',Properties:{rotation:'6'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'6'}}"); + BlockStateData.register(1015, "{Name:'minecraft:oak_sign',Properties:{rotation:'7'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'7'}}"); + BlockStateData.register(1016, "{Name:'minecraft:oak_sign',Properties:{rotation:'8'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'8'}}"); + BlockStateData.register(1017, "{Name:'minecraft:oak_sign',Properties:{rotation:'9'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'9'}}"); + BlockStateData.register(1018, "{Name:'minecraft:oak_sign',Properties:{rotation:'10'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'10'}}"); + BlockStateData.register(1019, "{Name:'minecraft:oak_sign',Properties:{rotation:'11'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'11'}}"); + BlockStateData.register(1020, "{Name:'minecraft:oak_sign',Properties:{rotation:'12'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'12'}}"); + BlockStateData.register(1021, "{Name:'minecraft:oak_sign',Properties:{rotation:'13'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'13'}}"); + BlockStateData.register(1022, "{Name:'minecraft:oak_sign',Properties:{rotation:'14'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'14'}}"); + BlockStateData.register(1023, "{Name:'minecraft:oak_sign',Properties:{rotation:'15'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'15'}}"); + ItemIdFix.ITEM_NAMES.put(323, "minecraft:oak_sign"); + + BlockStateData.register(1440, "{Name:\'minecraft:portal\',Properties:{axis:\'x\'}}", new String[]{"{Name:\'minecraft:portal\',Properties:{axis:\'x\'}}"}); + + ItemIdFix.ITEM_NAMES.put(409, "minecraft:prismarine_shard"); + ItemIdFix.ITEM_NAMES.put(410, "minecraft:prismarine_crystals"); + ItemIdFix.ITEM_NAMES.put(411, "minecraft:rabbit"); + ItemIdFix.ITEM_NAMES.put(412, "minecraft:cooked_rabbit"); + ItemIdFix.ITEM_NAMES.put(413, "minecraft:rabbit_stew"); + ItemIdFix.ITEM_NAMES.put(414, "minecraft:rabbit_foot"); + ItemIdFix.ITEM_NAMES.put(415, "minecraft:rabbit_hide"); + ItemIdFix.ITEM_NAMES.put(416, "minecraft:armor_stand"); + + ItemIdFix.ITEM_NAMES.put(423, "minecraft:mutton"); + ItemIdFix.ITEM_NAMES.put(424, "minecraft:cooked_mutton"); + ItemIdFix.ITEM_NAMES.put(425, "minecraft:banner"); + ItemIdFix.ITEM_NAMES.put(426, "minecraft:end_crystal"); + ItemIdFix.ITEM_NAMES.put(427, "minecraft:spruce_door"); + ItemIdFix.ITEM_NAMES.put(428, "minecraft:birch_door"); + ItemIdFix.ITEM_NAMES.put(429, "minecraft:jungle_door"); + ItemIdFix.ITEM_NAMES.put(430, "minecraft:acacia_door"); + ItemIdFix.ITEM_NAMES.put(431, "minecraft:dark_oak_door"); + ItemIdFix.ITEM_NAMES.put(432, "minecraft:chorus_fruit"); + ItemIdFix.ITEM_NAMES.put(433, "minecraft:chorus_fruit_popped"); + ItemIdFix.ITEM_NAMES.put(434, "minecraft:beetroot"); + ItemIdFix.ITEM_NAMES.put(435, "minecraft:beetroot_seeds"); + ItemIdFix.ITEM_NAMES.put(436, "minecraft:beetroot_soup"); + ItemIdFix.ITEM_NAMES.put(437, "minecraft:dragon_breath"); + ItemIdFix.ITEM_NAMES.put(438, "minecraft:splash_potion"); + ItemIdFix.ITEM_NAMES.put(439, "minecraft:spectral_arrow"); + ItemIdFix.ITEM_NAMES.put(440, "minecraft:tipped_arrow"); + ItemIdFix.ITEM_NAMES.put(441, "minecraft:lingering_potion"); + ItemIdFix.ITEM_NAMES.put(442, "minecraft:shield"); + ItemIdFix.ITEM_NAMES.put(443, "minecraft:elytra"); + ItemIdFix.ITEM_NAMES.put(444, "minecraft:spruce_boat"); + ItemIdFix.ITEM_NAMES.put(445, "minecraft:birch_boat"); + ItemIdFix.ITEM_NAMES.put(446, "minecraft:jungle_boat"); + ItemIdFix.ITEM_NAMES.put(447, "minecraft:acacia_boat"); + ItemIdFix.ITEM_NAMES.put(448, "minecraft:dark_oak_boat"); + ItemIdFix.ITEM_NAMES.put(449, "minecraft:totem_of_undying"); + ItemIdFix.ITEM_NAMES.put(450, "minecraft:shulker_shell"); + ItemIdFix.ITEM_NAMES.put(452, "minecraft:iron_nugget"); + ItemIdFix.ITEM_NAMES.put(453, "minecraft:knowledge_book"); + + ItemSpawnEggFix.ID_TO_ENTITY[23] = "Arrow"; + // CraftBukkit end } } }