From 1a9ab897b5348137335ec7c16012271fcd8a65e2 Mon Sep 17 00:00:00 2001 From: Chaoscaot Date: Sun, 27 Dec 2020 19:47:54 +0100 Subject: [PATCH] Chaos-Patches --- SteamWar-Patches/Chaos-Patches.patch | 1389 ------------------- SteamWar-Patches/Disable_BuildVersion.patch | 32 + SteamWar-Patches/Remove_EULA_Check.patch | 47 + SteamWar-Patches/Remove_RAM_Check.patch | 18 + 4 files changed, 97 insertions(+), 1389 deletions(-) delete mode 100644 SteamWar-Patches/Chaos-Patches.patch create mode 100644 SteamWar-Patches/Disable_BuildVersion.patch create mode 100644 SteamWar-Patches/Remove_EULA_Check.patch create mode 100644 SteamWar-Patches/Remove_RAM_Check.patch diff --git a/SteamWar-Patches/Chaos-Patches.patch b/SteamWar-Patches/Chaos-Patches.patch deleted file mode 100644 index 75d2030..0000000 --- a/SteamWar-Patches/Chaos-Patches.patch +++ /dev/null @@ -1,1389 +0,0 @@ -Index: pom.xml -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== -diff --git a/pom.xml b/pom.xml ---- a/pom.xml (revision 22fba2706e53d3d24a5901b2881c3d97f9781f34) -+++ b/pom.xml (revision a16617e368c59c772e5873c8c3a4040444e4ea57) -@@ -345,6 +345,7 @@ - - - -+ spigot - - - -Index: src/main/java/net/minecraft/server/CommandDispatcher.java -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== -diff --git a/src/main/java/net/minecraft/server/CommandDispatcher.java b/src/main/java/net/minecraft/server/CommandDispatcher.java ---- a/src/main/java/net/minecraft/server/CommandDispatcher.java (revision 22fba2706e53d3d24a5901b2881c3d97f9781f34) -+++ b/src/main/java/net/minecraft/server/CommandDispatcher.java (revision a16617e368c59c772e5873c8c3a4040444e4ea57) -@@ -7,7 +7,6 @@ - import com.mojang.brigadier.builder.ArgumentBuilder; - import com.mojang.brigadier.builder.LiteralArgumentBuilder; - import com.mojang.brigadier.builder.RequiredArgumentBuilder; --import com.mojang.brigadier.context.CommandContext; - import com.mojang.brigadier.exceptions.CommandSyntaxException; - import com.mojang.brigadier.tree.CommandNode; - import com.mojang.brigadier.tree.RootCommandNode; -@@ -22,7 +21,6 @@ - // CraftBukkit start - import com.google.common.base.Joiner; - import java.util.LinkedHashSet; --import org.bukkit.craftbukkit.command.VanillaCommandWrapper; - import org.bukkit.event.player.PlayerCommandSendEvent; - import org.bukkit.event.server.ServerCommandEvent; - // CraftBukkit end -@@ -34,79 +32,18 @@ - - // CraftBukkit start - public final CommandDispatcher init(boolean flag) { -- CommandAdvancement.a(this.b); -- CommandExecute.a(this.b); -- CommandBossBar.a(this.b); - CommandClear.a(this.b); -- CommandClone.a(this.b); -- CommandData.a(this.b); -- CommandDatapack.a(this.b); -- CommandDebug.a(this.b); - CommandGamemodeDefault.a(this.b); -- CommandDifficulty.a(this.b); -- CommandEffect.a(this.b); -- CommandMe.a(this.b); -- CommandEnchant.a(this.b); -- CommandXp.a(this.b); -- CommandFill.a(this.b); -- CommandForceload.a(this.b); -- CommandFunction.a(this.b); - CommandGamemode.a(this.b); - CommandGamerule.a(this.b); - CommandGive.a(this.b); - CommandHelp.a(this.b); -- CommandKick.a(this.b); -- CommandKill.a(this.b); -- CommandList.a(this.b); -- CommandLocate.a(this.b); -- CommandLoot.a(this.b); -- CommandTell.a(this.b); -- CommandParticle.a(this.b); -- CommandPlaySound.a(this.b); -- CommandPublish.a(this.b); - CommandReload.a(this.b); -- CommandRecipe.a(this.b); -- CommandReplaceItem.a(this.b); -- CommandSay.a(this.b); -- CommandSchedule.a(this.b); -- CommandScoreboard.a(this.b); -- CommandSeed.a(this.b); -- CommandSetBlock.a(this.b); -- CommandSpawnpoint.a(this.b); -- CommandSetWorldSpawn.a(this.b); - CommandSpectate.a(this.b); -- CommandSpreadPlayers.a(this.b); -- CommandStopSound.a(this.b); -- CommandSummon.a(this.b); -- CommandTag.a(this.b); -- CommandTeam.a(this.b); -- CommandTeamMsg.a(this.b); - CommandTeleport.a(this.b); -- CommandTellRaw.a(this.b); - CommandTime.a(this.b); -- CommandTitle.a(this.b); -- CommandTrigger.a(this.b); -- CommandWeather.a(this.b); -- CommandWorldBorder.a(this.b); -- if (SharedConstants.b) { -- GameTestHarnessTestCommand.a(this.b); -- } - -- if (flag) { -- CommandBanIp.a(this.b); -- CommandBanList.a(this.b); -- CommandBan.a(this.b); -- CommandDeop.a(this.b); -- CommandOp.a(this.b); -- CommandPardon.a(this.b); -- CommandPardonIP.a(this.b); -- CommandSaveAll.a(this.b); -- CommandSaveOff.a(this.b); -- CommandSaveOn.a(this.b); -- CommandIdleTimeout.a(this.b); -- CommandStop.a(this.b); -- CommandWhitelist.a(this.b); -- } -+ CommandStop.a(this.b); - - this.b.findAmbiguities((commandnode, commandnode1, commandnode2, collection) -> { - // CommandDispatcher.LOGGER.warn("Ambiguity between arguments {} and {} with inputs: {}", this.b.getPath(commandnode1), this.b.getPath(commandnode2), collection); // CraftBukkit -Index: src/main/java/net/minecraft/server/DedicatedServer.java -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== -diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java ---- a/src/main/java/net/minecraft/server/DedicatedServer.java (revision 22fba2706e53d3d24a5901b2881c3d97f9781f34) -+++ b/src/main/java/net/minecraft/server/DedicatedServer.java (revision a16617e368c59c772e5873c8c3a4040444e4ea57) -@@ -151,12 +151,13 @@ - thread.setUncaughtExceptionHandler(new DefaultUncaughtExceptionHandler(DedicatedServer.LOGGER)); - thread.start(); - DedicatedServer.LOGGER.info("Starting minecraft server version " + SharedConstants.getGameVersion().getName()); -- if (Runtime.getRuntime().maxMemory() / 1024L / 1024L < 512L) { -- DedicatedServer.LOGGER.warn("To start the server with more ram, launch it as \"java -Xmx1024M -Xms1024M -jar minecraft_server.jar\""); -- } - - DedicatedServer.LOGGER.info("Loading properties"); - DedicatedServerProperties dedicatedserverproperties = this.propertyManager.getProperties(); -+ long l = SystemUtils.getMonotonicNanos() - MinecraftServer.startNanos; -+ String s2 = String.format(Locale.ROOT, "%.3fs", (double) l / 1.0E9D); -+ -+ DedicatedServer.LOGGER.info("({})! For loading properties", s2); - - if (this.isEmbeddedServer()) { - this.b("127.0.0.1"); -@@ -170,6 +171,10 @@ - org.spigotmc.SpigotConfig.init((File) options.valueOf("spigot-settings")); - org.spigotmc.SpigotConfig.registerCommands(); - // Spigot end -+ l = SystemUtils.getMonotonicNanos() - MinecraftServer.startNanos; -+ s2 = String.format(Locale.ROOT, "%.3fs", (double) l / 1.0E9D); -+ -+ DedicatedServer.LOGGER.info("({})! For loading spigot-settings", s2); - - this.setSpawnAnimals(dedicatedserverproperties.spawnAnimals); - this.setSpawnNPCs(dedicatedserverproperties.spawnNpcs); -@@ -194,6 +199,10 @@ - - DedicatedServer.LOGGER.info("Generating keypair"); - this.a(MinecraftEncryption.b()); -+ l = SystemUtils.getMonotonicNanos() - MinecraftServer.startNanos; -+ s2 = String.format(Locale.ROOT, "%.3fs", (double) l / 1.0E9D); -+ -+ DedicatedServer.LOGGER.info("({})! For Encryption + Properties", s2); - DedicatedServer.LOGGER.info("Starting Minecraft server on {}:{}", this.getServerIp().isEmpty() ? "*" : this.getServerIp(), this.getPort()); - - try { -@@ -208,8 +217,11 @@ - // CraftBukkit start - // this.a((PlayerList) (new DedicatedPlayerList(this))); // Spigot - moved up - server.loadPlugins(); -- server.enablePlugins(org.bukkit.plugin.PluginLoadOrder.STARTUP); - // CraftBukkit end -+ l = SystemUtils.getMonotonicNanos() - MinecraftServer.startNanos; -+ s2 = String.format(Locale.ROOT, "%.3fs", (double) l / 1.0E9D); -+ -+ DedicatedServer.LOGGER.info("({})! For loading Plugins", s2); - - if (!this.getOnlineMode()) { - DedicatedServer.LOGGER.warn("**** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!"); -@@ -233,7 +245,6 @@ - return false; - } else { - this.convertable = new Convertable(server.getWorldContainer().toPath(), server.getWorldContainer().toPath().resolve("../backups"), this.dataConverterManager); // CraftBukkit - moved from MinecraftServer constructor -- long i = SystemUtils.getMonotonicNanos(); - String s = dedicatedserverproperties.levelSeed; - String s1 = dedicatedserverproperties.generatorSettings; - long j = (new Random()).nextLong(); -@@ -256,6 +267,10 @@ - TileEntitySkull.a(this.getUserCache()); - TileEntitySkull.a(this.getMinecraftSessionService()); - UserCache.a(this.getOnlineMode()); -+ l = SystemUtils.getMonotonicNanos() - MinecraftServer.startNanos; -+ s2 = String.format(Locale.ROOT, "%.3fs", (double) l / 1.0E9D); -+ -+ DedicatedServer.LOGGER.info("({})! For Initializing stuff", s2); - DedicatedServer.LOGGER.info("Preparing level \"{}\"", this.getWorld()); - JsonObject jsonobject = new JsonObject(); - -@@ -272,8 +287,8 @@ - } - - this.a(this.getWorld(), this.getWorld(), j, worldtype, jsonobject); -- long l = SystemUtils.getMonotonicNanos() - i; -- String s2 = String.format(Locale.ROOT, "%.3fs", (double) l / 1.0E9D); -+ l = SystemUtils.getMonotonicNanos() - MinecraftServer.startNanos; -+ s2 = String.format(Locale.ROOT, "%.3fs", (double) l / 1.0E9D); - - DedicatedServer.LOGGER.info("Done ({})! For help, type \"help\"", s2); - if (dedicatedserverproperties.announcePlayerAchievements != null) { -Index: src/main/java/net/minecraft/server/DispenserRegistry.java -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== -diff --git a/src/main/java/net/minecraft/server/DispenserRegistry.java b/src/main/java/net/minecraft/server/DispenserRegistry.java ---- a/src/main/java/net/minecraft/server/DispenserRegistry.java (revision 22fba2706e53d3d24a5901b2881c3d97f9781f34) -+++ b/src/main/java/net/minecraft/server/DispenserRegistry.java (revision a16617e368c59c772e5873c8c3a4040444e4ea57) -@@ -7,16 +7,6 @@ - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; - --// CraftBukkit start --import java.util.List; --import org.bukkit.Location; --import org.bukkit.TreeType; --import org.bukkit.craftbukkit.inventory.CraftItemStack; --import org.bukkit.craftbukkit.util.DummyGeneratorAccess; --import org.bukkit.event.block.BlockDispenseEvent; --import org.bukkit.event.world.StructureGrowEvent; --// CraftBukkit end -- - public class DispenserRegistry { - - public static final PrintStream a = System.out; -@@ -30,79 +20,16 @@ - throw new IllegalStateException("Unable to load registries"); - } else { - BlockFire.c(); -- BlockComposter.c(); -+ //BlockComposter.c(); - if (EntityTypes.getName(EntityTypes.PLAYER) == null) { - throw new IllegalStateException("Failed loading EntityTypes"); - } else { -- PotionBrewer.a(); -- PlayerSelector.a(); -+ //PotionBrewer.a(); -+ //PlayerSelector.a(); - IDispenseBehavior.c(); - ArgumentRegistry.a(); - d(); - } -- // CraftBukkit start - easier than fixing the decompile -- DataConverterFlattenData.map(1008, "{Name:'minecraft:oak_sign',Properties:{rotation:'0'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'0'}}"); -- DataConverterFlattenData.map(1009, "{Name:'minecraft:oak_sign',Properties:{rotation:'1'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'1'}}"); -- DataConverterFlattenData.map(1010, "{Name:'minecraft:oak_sign',Properties:{rotation:'2'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'2'}}"); -- DataConverterFlattenData.map(1011, "{Name:'minecraft:oak_sign',Properties:{rotation:'3'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'3'}}"); -- DataConverterFlattenData.map(1012, "{Name:'minecraft:oak_sign',Properties:{rotation:'4'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'4'}}"); -- DataConverterFlattenData.map(1013, "{Name:'minecraft:oak_sign',Properties:{rotation:'5'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'5'}}"); -- DataConverterFlattenData.map(1014, "{Name:'minecraft:oak_sign',Properties:{rotation:'6'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'6'}}"); -- DataConverterFlattenData.map(1015, "{Name:'minecraft:oak_sign',Properties:{rotation:'7'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'7'}}"); -- DataConverterFlattenData.map(1016, "{Name:'minecraft:oak_sign',Properties:{rotation:'8'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'8'}}"); -- DataConverterFlattenData.map(1017, "{Name:'minecraft:oak_sign',Properties:{rotation:'9'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'9'}}"); -- DataConverterFlattenData.map(1018, "{Name:'minecraft:oak_sign',Properties:{rotation:'10'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'10'}}"); -- DataConverterFlattenData.map(1019, "{Name:'minecraft:oak_sign',Properties:{rotation:'11'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'11'}}"); -- DataConverterFlattenData.map(1020, "{Name:'minecraft:oak_sign',Properties:{rotation:'12'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'12'}}"); -- DataConverterFlattenData.map(1021, "{Name:'minecraft:oak_sign',Properties:{rotation:'13'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'13'}}"); -- DataConverterFlattenData.map(1022, "{Name:'minecraft:oak_sign',Properties:{rotation:'14'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'14'}}"); -- DataConverterFlattenData.map(1023, "{Name:'minecraft:oak_sign',Properties:{rotation:'15'}}", "{Name:'minecraft:standing_sign',Properties:{rotation:'15'}}"); -- DataConverterMaterialId.ID_MAPPING.put(323, "minecraft:oak_sign"); -- -- DataConverterFlattenData.map(1440, "{Name:\'minecraft:portal\',Properties:{axis:\'x\'}}", new String[]{"{Name:\'minecraft:portal\',Properties:{axis:\'x\'}}"}); -- -- DataConverterMaterialId.ID_MAPPING.put(409, "minecraft:prismarine_shard"); -- DataConverterMaterialId.ID_MAPPING.put(410, "minecraft:prismarine_crystals"); -- DataConverterMaterialId.ID_MAPPING.put(411, "minecraft:rabbit"); -- DataConverterMaterialId.ID_MAPPING.put(412, "minecraft:cooked_rabbit"); -- DataConverterMaterialId.ID_MAPPING.put(413, "minecraft:rabbit_stew"); -- DataConverterMaterialId.ID_MAPPING.put(414, "minecraft:rabbit_foot"); -- DataConverterMaterialId.ID_MAPPING.put(415, "minecraft:rabbit_hide"); -- DataConverterMaterialId.ID_MAPPING.put(416, "minecraft:armor_stand"); -- -- DataConverterMaterialId.ID_MAPPING.put(423, "minecraft:mutton"); -- DataConverterMaterialId.ID_MAPPING.put(424, "minecraft:cooked_mutton"); -- DataConverterMaterialId.ID_MAPPING.put(425, "minecraft:banner"); -- DataConverterMaterialId.ID_MAPPING.put(426, "minecraft:end_crystal"); -- DataConverterMaterialId.ID_MAPPING.put(427, "minecraft:spruce_door"); -- DataConverterMaterialId.ID_MAPPING.put(428, "minecraft:birch_door"); -- DataConverterMaterialId.ID_MAPPING.put(429, "minecraft:jungle_door"); -- DataConverterMaterialId.ID_MAPPING.put(430, "minecraft:acacia_door"); -- DataConverterMaterialId.ID_MAPPING.put(431, "minecraft:dark_oak_door"); -- DataConverterMaterialId.ID_MAPPING.put(432, "minecraft:chorus_fruit"); -- DataConverterMaterialId.ID_MAPPING.put(433, "minecraft:chorus_fruit_popped"); -- DataConverterMaterialId.ID_MAPPING.put(434, "minecraft:beetroot"); -- DataConverterMaterialId.ID_MAPPING.put(435, "minecraft:beetroot_seeds"); -- DataConverterMaterialId.ID_MAPPING.put(436, "minecraft:beetroot_soup"); -- DataConverterMaterialId.ID_MAPPING.put(437, "minecraft:dragon_breath"); -- DataConverterMaterialId.ID_MAPPING.put(438, "minecraft:splash_potion"); -- DataConverterMaterialId.ID_MAPPING.put(439, "minecraft:spectral_arrow"); -- DataConverterMaterialId.ID_MAPPING.put(440, "minecraft:tipped_arrow"); -- DataConverterMaterialId.ID_MAPPING.put(441, "minecraft:lingering_potion"); -- DataConverterMaterialId.ID_MAPPING.put(442, "minecraft:shield"); -- DataConverterMaterialId.ID_MAPPING.put(443, "minecraft:elytra"); -- DataConverterMaterialId.ID_MAPPING.put(444, "minecraft:spruce_boat"); -- DataConverterMaterialId.ID_MAPPING.put(445, "minecraft:birch_boat"); -- DataConverterMaterialId.ID_MAPPING.put(446, "minecraft:jungle_boat"); -- DataConverterMaterialId.ID_MAPPING.put(447, "minecraft:acacia_boat"); -- DataConverterMaterialId.ID_MAPPING.put(448, "minecraft:dark_oak_boat"); -- DataConverterMaterialId.ID_MAPPING.put(449, "minecraft:totem_of_undying"); -- DataConverterMaterialId.ID_MAPPING.put(450, "minecraft:shulker_shell"); -- DataConverterMaterialId.ID_MAPPING.put(452, "minecraft:iron_nugget"); -- DataConverterMaterialId.ID_MAPPING.put(453, "minecraft:knowledge_book"); -- -- DataConverterSpawnEgg.ID_MAPPING[23] = "Arrow"; -- // CraftBukkit end - } - } - } -Index: src/main/java/net/minecraft/server/IDispenseBehavior.java -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== -diff --git a/src/main/java/net/minecraft/server/IDispenseBehavior.java b/src/main/java/net/minecraft/server/IDispenseBehavior.java ---- a/src/main/java/net/minecraft/server/IDispenseBehavior.java (revision 22fba2706e53d3d24a5901b2881c3d97f9781f34) -+++ b/src/main/java/net/minecraft/server/IDispenseBehavior.java (revision a16617e368c59c772e5873c8c3a4040444e4ea57) -@@ -1,16 +1,9 @@ - package net.minecraft.server; - --import java.util.Iterator; --import java.util.List; - import java.util.Random; - // CraftBukkit start --import org.bukkit.Location; --import org.bukkit.TreeType; --import org.bukkit.craftbukkit.event.CraftEventFactory; - import org.bukkit.craftbukkit.inventory.CraftItemStack; --import org.bukkit.craftbukkit.util.DummyGeneratorAccess; - import org.bukkit.event.block.BlockDispenseEvent; --import org.bukkit.event.world.StructureGrowEvent; - // CraftBukkit end - - public interface IDispenseBehavior { -@@ -49,176 +42,6 @@ - entityspectralarrow.fromPlayer = EntityArrow.PickupStatus.ALLOWED; - return entityspectralarrow; - } -- })); -- BlockDispenser.a((IMaterial) Items.EGG, (IDispenseBehavior) (new DispenseBehaviorProjectile() { -- @Override -- protected IProjectile a(World world, IPosition iposition, ItemStack itemstack) { -- return (IProjectile) SystemUtils.a((new EntityEgg(world, iposition.getX(), iposition.getY(), iposition.getZ())), (entityegg) -> { // CraftBukkit - decompile error -- entityegg.setItem(itemstack); -- }); -- } -- })); -- BlockDispenser.a((IMaterial) Items.SNOWBALL, (IDispenseBehavior) (new DispenseBehaviorProjectile() { -- @Override -- protected IProjectile a(World world, IPosition iposition, ItemStack itemstack) { -- return (IProjectile) SystemUtils.a((new EntitySnowball(world, iposition.getX(), iposition.getY(), iposition.getZ())), (entitysnowball) -> { // CraftBukkit - decompile error -- entitysnowball.setItem(itemstack); -- }); -- } -- })); -- BlockDispenser.a((IMaterial) Items.EXPERIENCE_BOTTLE, (IDispenseBehavior) (new DispenseBehaviorProjectile() { -- @Override -- protected IProjectile a(World world, IPosition iposition, ItemStack itemstack) { -- return (IProjectile) SystemUtils.a((new EntityThrownExpBottle(world, iposition.getX(), iposition.getY(), iposition.getZ())), (entitythrownexpbottle) -> { // CraftBukkit - decompile error -- entitythrownexpbottle.setItem(itemstack); -- }); -- } -- -- @Override -- protected float a() { -- return super.a() * 0.5F; -- } -- -- @Override -- protected float getPower() { -- return super.getPower() * 1.25F; -- } -- })); -- BlockDispenser.a((IMaterial) Items.SPLASH_POTION, new IDispenseBehavior() { -- @Override -- public ItemStack dispense(ISourceBlock isourceblock, ItemStack itemstack) { -- return (new DispenseBehaviorProjectile() { -- @Override -- protected IProjectile a(World world, IPosition iposition, ItemStack itemstack1) { -- return (IProjectile) SystemUtils.a((new EntityPotion(world, iposition.getX(), iposition.getY(), iposition.getZ())), (entitypotion) -> { // CraftBukkit - decompile error -- entitypotion.setItem(itemstack1); -- }); -- } -- -- @Override -- protected float a() { -- return super.a() * 0.5F; -- } -- -- @Override -- protected float getPower() { -- return super.getPower() * 1.25F; -- } -- }).dispense(isourceblock, itemstack); -- } -- }); -- BlockDispenser.a((IMaterial) Items.LINGERING_POTION, new IDispenseBehavior() { -- @Override -- public ItemStack dispense(ISourceBlock isourceblock, ItemStack itemstack) { -- return (new DispenseBehaviorProjectile() { -- @Override -- protected IProjectile a(World world, IPosition iposition, ItemStack itemstack1) { -- return (IProjectile) SystemUtils.a((new EntityPotion(world, iposition.getX(), iposition.getY(), iposition.getZ())), (entitypotion) -> { // CraftBukkit - decompile error -- entitypotion.setItem(itemstack1); -- }); -- } -- -- @Override -- protected float a() { -- return super.a() * 0.5F; -- } -- -- @Override -- protected float getPower() { -- return super.getPower() * 1.25F; -- } -- }).dispense(isourceblock, itemstack); -- } -- }); -- DispenseBehaviorItem dispensebehavioritem = new DispenseBehaviorItem() { -- @Override -- public ItemStack a(ISourceBlock isourceblock, ItemStack itemstack) { -- EnumDirection enumdirection = (EnumDirection) isourceblock.getBlockData().get(BlockDispenser.FACING); -- EntityTypes entitytypes = ((ItemMonsterEgg) itemstack.getItem()).b(itemstack.getTag()); -- -- // CraftBukkit start -- World world = isourceblock.getWorld(); -- ItemStack itemstack1 = itemstack.cloneAndSubtract(1); -- org.bukkit.block.Block block = world.getWorld().getBlockAt(isourceblock.getBlockPosition().getX(), isourceblock.getBlockPosition().getY(), isourceblock.getBlockPosition().getZ()); -- CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack1); -- -- BlockDispenseEvent event = new BlockDispenseEvent(block, craftItem.clone(), new org.bukkit.util.Vector(0, 0, 0)); -- if (!BlockDispenser.eventFired) { -- world.getServer().getPluginManager().callEvent(event); -- } -- -- if (event.isCancelled()) { -- itemstack.add(1); -- return itemstack; -- } -- -- if (!event.getItem().equals(craftItem)) { -- itemstack.add(1); -- // Chain to handler for new item -- ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem()); -- IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.REGISTRY.get(eventStack.getItem()); -- if (idispensebehavior != IDispenseBehavior.NONE && idispensebehavior != this) { -- idispensebehavior.dispense(isourceblock, eventStack); -- return itemstack; -- } -- } -- -- entitytypes.spawnCreature(isourceblock.getWorld(), itemstack, (EntityHuman) null, isourceblock.getBlockPosition().shift(enumdirection), EnumMobSpawn.DISPENSER, enumdirection != EnumDirection.UP, false); -- // itemstack.subtract(1); // Handled during event processing -- // CraftBukkit end -- return itemstack; -- } -- }; -- Iterator iterator = ItemMonsterEgg.f().iterator(); -- -- while (iterator.hasNext()) { -- ItemMonsterEgg itemmonsteregg = (ItemMonsterEgg) iterator.next(); -- -- BlockDispenser.a((IMaterial) itemmonsteregg, (IDispenseBehavior) dispensebehavioritem); -- } -- -- BlockDispenser.a((IMaterial) Items.ARMOR_STAND, (IDispenseBehavior) (new DispenseBehaviorItem() { -- @Override -- public ItemStack a(ISourceBlock isourceblock, ItemStack itemstack) { -- EnumDirection enumdirection = (EnumDirection) isourceblock.getBlockData().get(BlockDispenser.FACING); -- BlockPosition blockposition = isourceblock.getBlockPosition().shift(enumdirection); -- World world = isourceblock.getWorld(); -- -- // CraftBukkit start -- ItemStack itemstack1 = itemstack.cloneAndSubtract(1); -- org.bukkit.block.Block block = world.getWorld().getBlockAt(isourceblock.getBlockPosition().getX(), isourceblock.getBlockPosition().getY(), isourceblock.getBlockPosition().getZ()); -- CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack1); -- -- BlockDispenseEvent event = new BlockDispenseEvent(block, craftItem.clone(), new org.bukkit.util.Vector(0, 0, 0)); -- if (!BlockDispenser.eventFired) { -- world.getServer().getPluginManager().callEvent(event); -- } -- -- if (event.isCancelled()) { -- itemstack.add(1); -- return itemstack; -- } -- -- if (!event.getItem().equals(craftItem)) { -- itemstack.add(1); -- // Chain to handler for new item -- ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem()); -- IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.REGISTRY.get(eventStack.getItem()); -- if (idispensebehavior != IDispenseBehavior.NONE && idispensebehavior != this) { -- idispensebehavior.dispense(isourceblock, eventStack); -- return itemstack; -- } -- } -- // CraftBukkit end -- -- EntityArmorStand entityarmorstand = new EntityArmorStand(world, (double) blockposition.getX() + 0.5D, (double) blockposition.getY(), (double) blockposition.getZ() + 0.5D); -- -- EntityTypes.a(world, (EntityHuman) null, (Entity) entityarmorstand, itemstack.getTag()); -- entityarmorstand.yaw = enumdirection.n(); -- world.addEntity(entityarmorstand); -- // itemstack.subtract(1); // CraftBukkit - Handled during event processing -- return itemstack; -- } - })); - BlockDispenser.a((IMaterial) Items.FIREWORK_ROCKET, (IDispenseBehavior) (new DispenseBehaviorItem() { - @Override -@@ -326,139 +149,6 @@ - protected void a(ISourceBlock isourceblock) { - isourceblock.getWorld().triggerEffect(1018, isourceblock.getBlockPosition(), 0); - } -- })); -- BlockDispenser.a((IMaterial) Items.OAK_BOAT, (IDispenseBehavior) (new DispenseBehaviorBoat(EntityBoat.EnumBoatType.OAK))); -- BlockDispenser.a((IMaterial) Items.SPRUCE_BOAT, (IDispenseBehavior) (new DispenseBehaviorBoat(EntityBoat.EnumBoatType.SPRUCE))); -- BlockDispenser.a((IMaterial) Items.BIRCH_BOAT, (IDispenseBehavior) (new DispenseBehaviorBoat(EntityBoat.EnumBoatType.BIRCH))); -- BlockDispenser.a((IMaterial) Items.JUNGLE_BOAT, (IDispenseBehavior) (new DispenseBehaviorBoat(EntityBoat.EnumBoatType.JUNGLE))); -- BlockDispenser.a((IMaterial) Items.DARK_OAK_BOAT, (IDispenseBehavior) (new DispenseBehaviorBoat(EntityBoat.EnumBoatType.DARK_OAK))); -- BlockDispenser.a((IMaterial) Items.ACACIA_BOAT, (IDispenseBehavior) (new DispenseBehaviorBoat(EntityBoat.EnumBoatType.ACACIA))); -- DispenseBehaviorItem dispensebehavioritem1 = new DispenseBehaviorItem() { -- private final DispenseBehaviorItem b = new DispenseBehaviorItem(); -- -- @Override -- public ItemStack a(ISourceBlock isourceblock, ItemStack itemstack) { -- ItemBucket itembucket = (ItemBucket) itemstack.getItem(); -- BlockPosition blockposition = isourceblock.getBlockPosition().shift((EnumDirection) isourceblock.getBlockData().get(BlockDispenser.FACING)); -- World world = isourceblock.getWorld(); -- -- // CraftBukkit start -- int x = blockposition.getX(); -- int y = blockposition.getY(); -- int z = blockposition.getZ(); -- IBlockData iblockdata = world.getType(blockposition); -- Material material = iblockdata.getMaterial(); -- if (world.isEmpty(blockposition) || !material.isBuildable() || material.isReplaceable() || ((iblockdata.getBlock() instanceof IFluidContainer) && ((IFluidContainer) iblockdata.getBlock()).canPlace(world, blockposition, iblockdata, itembucket.fluidType))) { -- org.bukkit.block.Block block = world.getWorld().getBlockAt(isourceblock.getBlockPosition().getX(), isourceblock.getBlockPosition().getY(), isourceblock.getBlockPosition().getZ()); -- CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack); -- -- BlockDispenseEvent event = new BlockDispenseEvent(block, craftItem.clone(), new org.bukkit.util.Vector(x, y, z)); -- if (!BlockDispenser.eventFired) { -- world.getServer().getPluginManager().callEvent(event); -- } -- -- if (event.isCancelled()) { -- return itemstack; -- } -- -- if (!event.getItem().equals(craftItem)) { -- // Chain to handler for new item -- ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem()); -- IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.REGISTRY.get(eventStack.getItem()); -- if (idispensebehavior != IDispenseBehavior.NONE && idispensebehavior != this) { -- idispensebehavior.dispense(isourceblock, eventStack); -- return itemstack; -- } -- } -- -- itembucket = (ItemBucket) CraftItemStack.asNMSCopy(event.getItem()).getItem(); -- } -- // CraftBukkit end -- -- if (itembucket.a((EntityHuman) null, world, blockposition, (MovingObjectPositionBlock) null)) { -- itembucket.a(world, itemstack, blockposition); -- // CraftBukkit start - Handle stacked buckets -- Item item = Items.BUCKET; -- itemstack.subtract(1); -- if (itemstack.isEmpty()) { -- itemstack.setItem(Items.BUCKET); -- itemstack.setCount(1); -- } else if (((TileEntityDispenser) isourceblock.getTileEntity()).addItem(new ItemStack(item)) < 0) { -- this.b.dispense(isourceblock, new ItemStack(item)); -- } -- // CraftBukkit end -- return itemstack; -- } else { -- return this.b.dispense(isourceblock, itemstack); -- } -- } -- }; -- -- BlockDispenser.a((IMaterial) Items.LAVA_BUCKET, (IDispenseBehavior) dispensebehavioritem1); -- BlockDispenser.a((IMaterial) Items.WATER_BUCKET, (IDispenseBehavior) dispensebehavioritem1); -- BlockDispenser.a((IMaterial) Items.SALMON_BUCKET, (IDispenseBehavior) dispensebehavioritem1); -- BlockDispenser.a((IMaterial) Items.COD_BUCKET, (IDispenseBehavior) dispensebehavioritem1); -- BlockDispenser.a((IMaterial) Items.PUFFERFISH_BUCKET, (IDispenseBehavior) dispensebehavioritem1); -- BlockDispenser.a((IMaterial) Items.TROPICAL_FISH_BUCKET, (IDispenseBehavior) dispensebehavioritem1); -- BlockDispenser.a((IMaterial) Items.BUCKET, (IDispenseBehavior) (new DispenseBehaviorItem() { -- private final DispenseBehaviorItem b = new DispenseBehaviorItem(); -- -- @Override -- public ItemStack a(ISourceBlock isourceblock, ItemStack itemstack) { -- World world = isourceblock.getWorld(); -- BlockPosition blockposition = isourceblock.getBlockPosition().shift((EnumDirection) isourceblock.getBlockData().get(BlockDispenser.FACING)); -- IBlockData iblockdata = world.getType(blockposition); -- Block block = iblockdata.getBlock(); -- -- if (block instanceof IFluidSource) { -- FluidType fluidtype = ((IFluidSource) block).removeFluid(DummyGeneratorAccess.INSTANCE, blockposition, iblockdata); // CraftBukkit -- -- if (!(fluidtype instanceof FluidTypeFlowing)) { -- return super.a(isourceblock, itemstack); -- } else { -- Item item = fluidtype.a(); -- -- // CraftBukkit start -- org.bukkit.block.Block bukkitBlock = world.getWorld().getBlockAt(isourceblock.getBlockPosition().getX(), isourceblock.getBlockPosition().getY(), isourceblock.getBlockPosition().getZ()); -- CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack); -- -- BlockDispenseEvent event = new BlockDispenseEvent(bukkitBlock, craftItem.clone(), new org.bukkit.util.Vector(blockposition.getX(), blockposition.getY(), blockposition.getZ())); -- if (!BlockDispenser.eventFired) { -- world.getServer().getPluginManager().callEvent(event); -- } -- -- if (event.isCancelled()) { -- return itemstack; -- } -- -- if (!event.getItem().equals(craftItem)) { -- // Chain to handler for new item -- ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem()); -- IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.REGISTRY.get(eventStack.getItem()); -- if (idispensebehavior != IDispenseBehavior.NONE && idispensebehavior != this) { -- idispensebehavior.dispense(isourceblock, eventStack); -- return itemstack; -- } -- } -- -- fluidtype = ((IFluidSource) block).removeFluid(world, blockposition, iblockdata); // From above -- // CraftBukkit end -- -- itemstack.subtract(1); -- if (itemstack.isEmpty()) { -- return new ItemStack(item); -- } else { -- if (((TileEntityDispenser) isourceblock.getTileEntity()).addItem(new ItemStack(item)) < 0) { -- this.b.dispense(isourceblock, new ItemStack(item)); -- } -- -- return itemstack; -- } -- } -- } else { -- return super.a(isourceblock, itemstack); -- } -- } - })); - BlockDispenser.a((IMaterial) Items.FLINT_AND_STEEL, (IDispenseBehavior) (new DispenseBehaviorMaybe() { - @Override -@@ -512,360 +202,6 @@ - itemstack.setCount(0); - } - -- return itemstack; -- } -- })); -- BlockDispenser.a((IMaterial) Items.BONE_MEAL, (IDispenseBehavior) (new DispenseBehaviorMaybe() { -- @Override -- protected ItemStack a(ISourceBlock isourceblock, ItemStack itemstack) { -- this.dispensed = true; -- World world = isourceblock.getWorld(); -- BlockPosition blockposition = isourceblock.getBlockPosition().shift((EnumDirection) isourceblock.getBlockData().get(BlockDispenser.FACING)); -- // CraftBukkit start -- org.bukkit.block.Block block = world.getWorld().getBlockAt(isourceblock.getBlockPosition().getX(), isourceblock.getBlockPosition().getY(), isourceblock.getBlockPosition().getZ()); -- CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack); -- -- BlockDispenseEvent event = new BlockDispenseEvent(block, craftItem.clone(), new org.bukkit.util.Vector(0, 0, 0)); -- if (!BlockDispenser.eventFired) { -- world.getServer().getPluginManager().callEvent(event); -- } -- -- if (event.isCancelled()) { -- return itemstack; -- } -- -- if (!event.getItem().equals(craftItem)) { -- // Chain to handler for new item -- ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem()); -- IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.REGISTRY.get(eventStack.getItem()); -- if (idispensebehavior != IDispenseBehavior.NONE && idispensebehavior != this) { -- idispensebehavior.dispense(isourceblock, eventStack); -- return itemstack; -- } -- } -- -- world.captureTreeGeneration = true; -- // CraftBukkit end -- -- if (!ItemBoneMeal.a(itemstack, world, blockposition) && !ItemBoneMeal.a(itemstack, world, blockposition, (EnumDirection) null)) { -- this.dispensed = false; -- } else if (!world.isClientSide) { -- world.triggerEffect(2005, blockposition, 0); -- } -- // CraftBukkit start -- world.captureTreeGeneration = false; -- if (world.capturedBlockStates.size() > 0) { -- TreeType treeType = BlockSapling.treeType; -- BlockSapling.treeType = null; -- Location location = new Location(world.getWorld(), blockposition.getX(), blockposition.getY(), blockposition.getZ()); -- List blocks = new java.util.ArrayList<>(world.capturedBlockStates.values()); -- world.capturedBlockStates.clear(); -- StructureGrowEvent structureEvent = null; -- if (treeType != null) { -- structureEvent = new StructureGrowEvent(location, treeType, false, null, blocks); -- org.bukkit.Bukkit.getPluginManager().callEvent(structureEvent); -- } -- if (structureEvent == null || !structureEvent.isCancelled()) { -- for (org.bukkit.block.BlockState blockstate : blocks) { -- blockstate.update(true); -- } -- } -- } -- // CraftBukkit end -- -- return itemstack; -- } -- })); -- BlockDispenser.a((IMaterial) Blocks.TNT, (IDispenseBehavior) (new DispenseBehaviorItem() { -- @Override -- protected ItemStack a(ISourceBlock isourceblock, ItemStack itemstack) { -- World world = isourceblock.getWorld(); -- BlockPosition blockposition = isourceblock.getBlockPosition().shift((EnumDirection) isourceblock.getBlockData().get(BlockDispenser.FACING)); -- // EntityTNTPrimed entitytntprimed = new EntityTNTPrimed(world, (double) blockposition.getX() + 0.5D, (double) blockposition.getY(), (double) blockposition.getZ() + 0.5D, (EntityLiving) null); -- -- // CraftBukkit start -- ItemStack itemstack1 = itemstack.cloneAndSubtract(1); -- org.bukkit.block.Block block = world.getWorld().getBlockAt(isourceblock.getBlockPosition().getX(), isourceblock.getBlockPosition().getY(), isourceblock.getBlockPosition().getZ()); -- CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack1); -- -- BlockDispenseEvent event = new BlockDispenseEvent(block, craftItem.clone(), new org.bukkit.util.Vector((double) blockposition.getX() + 0.5D, (double) blockposition.getY(), (double) blockposition.getZ() + 0.5D)); -- if (!BlockDispenser.eventFired) { -- world.getServer().getPluginManager().callEvent(event); -- } -- -- if (event.isCancelled()) { -- itemstack.add(1); -- return itemstack; -- } -- -- if (!event.getItem().equals(craftItem)) { -- itemstack.add(1); -- // Chain to handler for new item -- ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem()); -- IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.REGISTRY.get(eventStack.getItem()); -- if (idispensebehavior != IDispenseBehavior.NONE && idispensebehavior != this) { -- idispensebehavior.dispense(isourceblock, eventStack); -- return itemstack; -- } -- } -- -- EntityTNTPrimed entitytntprimed = new EntityTNTPrimed(world, event.getVelocity().getX(), event.getVelocity().getY(), event.getVelocity().getZ(), (EntityLiving) null); -- // CraftBukkit end -- -- world.addEntity(entitytntprimed); -- world.playSound((EntityHuman) null, entitytntprimed.locX(), entitytntprimed.locY(), entitytntprimed.locZ(), SoundEffects.ENTITY_TNT_PRIMED, SoundCategory.BLOCKS, 1.0F, 1.0F); -- // itemstack.subtract(1); // CraftBukkit - handled above -- return itemstack; -- } -- })); -- DispenseBehaviorMaybe dispensebehaviormaybe = new DispenseBehaviorMaybe() { -- @Override -- protected ItemStack a(ISourceBlock isourceblock, ItemStack itemstack) { -- this.dispensed = ItemArmor.a(isourceblock, itemstack); -- return itemstack; -- } -- }; -- -- BlockDispenser.a((IMaterial) Items.CREEPER_HEAD, (IDispenseBehavior) dispensebehaviormaybe); -- BlockDispenser.a((IMaterial) Items.ZOMBIE_HEAD, (IDispenseBehavior) dispensebehaviormaybe); -- BlockDispenser.a((IMaterial) Items.DRAGON_HEAD, (IDispenseBehavior) dispensebehaviormaybe); -- BlockDispenser.a((IMaterial) Items.SKELETON_SKULL, (IDispenseBehavior) dispensebehaviormaybe); -- BlockDispenser.a((IMaterial) Items.PLAYER_HEAD, (IDispenseBehavior) dispensebehaviormaybe); -- BlockDispenser.a((IMaterial) Items.WITHER_SKELETON_SKULL, (IDispenseBehavior) (new DispenseBehaviorMaybe() { -- @Override -- protected ItemStack a(ISourceBlock isourceblock, ItemStack itemstack) { -- World world = isourceblock.getWorld(); -- EnumDirection enumdirection = (EnumDirection) isourceblock.getBlockData().get(BlockDispenser.FACING); -- BlockPosition blockposition = isourceblock.getBlockPosition().shift(enumdirection); -- -- // CraftBukkit start -- org.bukkit.block.Block bukkitBlock = world.getWorld().getBlockAt(isourceblock.getBlockPosition().getX(), isourceblock.getBlockPosition().getY(), isourceblock.getBlockPosition().getZ()); -- CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack); -- -- BlockDispenseEvent event = new BlockDispenseEvent(bukkitBlock, craftItem.clone(), new org.bukkit.util.Vector(blockposition.getX(), blockposition.getY(), blockposition.getZ())); -- if (!BlockDispenser.eventFired) { -- world.getServer().getPluginManager().callEvent(event); -- } -- -- if (event.isCancelled()) { -- return itemstack; -- } -- -- if (!event.getItem().equals(craftItem)) { -- // Chain to handler for new item -- ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem()); -- IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.REGISTRY.get(eventStack.getItem()); -- if (idispensebehavior != IDispenseBehavior.NONE && idispensebehavior != this) { -- idispensebehavior.dispense(isourceblock, eventStack); -- return itemstack; -- } -- } -- // CraftBukkit end -- -- if (world.isEmpty(blockposition) && BlockWitherSkull.b(world, blockposition, itemstack)) { -- world.setTypeAndData(blockposition, (IBlockData) Blocks.WITHER_SKELETON_SKULL.getBlockData().set(BlockSkull.a, enumdirection.m() == EnumDirection.EnumAxis.Y ? 0 : enumdirection.opposite().get2DRotationValue() * 4), 3); -- TileEntity tileentity = world.getTileEntity(blockposition); -- -- if (tileentity instanceof TileEntitySkull) { -- BlockWitherSkull.a(world, blockposition, (TileEntitySkull) tileentity); -- } -- -- itemstack.subtract(1); -- this.dispensed = true; -- } else { -- this.dispensed = ItemArmor.a(isourceblock, itemstack); -- } -- -- return itemstack; -- } -- })); -- BlockDispenser.a((IMaterial) Blocks.CARVED_PUMPKIN, (IDispenseBehavior) (new DispenseBehaviorMaybe() { -- @Override -- protected ItemStack a(ISourceBlock isourceblock, ItemStack itemstack) { -- World world = isourceblock.getWorld(); -- BlockPosition blockposition = isourceblock.getBlockPosition().shift((EnumDirection) isourceblock.getBlockData().get(BlockDispenser.FACING)); -- BlockPumpkinCarved blockpumpkincarved = (BlockPumpkinCarved) Blocks.CARVED_PUMPKIN; -- -- // CraftBukkit start -- org.bukkit.block.Block bukkitBlock = world.getWorld().getBlockAt(isourceblock.getBlockPosition().getX(), isourceblock.getBlockPosition().getY(), isourceblock.getBlockPosition().getZ()); -- CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack); -- -- BlockDispenseEvent event = new BlockDispenseEvent(bukkitBlock, craftItem.clone(), new org.bukkit.util.Vector(blockposition.getX(), blockposition.getY(), blockposition.getZ())); -- if (!BlockDispenser.eventFired) { -- world.getServer().getPluginManager().callEvent(event); -- } -- -- if (event.isCancelled()) { -- return itemstack; -- } -- -- if (!event.getItem().equals(craftItem)) { -- // Chain to handler for new item -- ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem()); -- IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.REGISTRY.get(eventStack.getItem()); -- if (idispensebehavior != IDispenseBehavior.NONE && idispensebehavior != this) { -- idispensebehavior.dispense(isourceblock, eventStack); -- return itemstack; -- } -- } -- // CraftBukkit end -- -- if (world.isEmpty(blockposition) && blockpumpkincarved.a((IWorldReader) world, blockposition)) { -- if (!world.isClientSide) { -- world.setTypeAndData(blockposition, blockpumpkincarved.getBlockData(), 3); -- } -- -- itemstack.subtract(1); -- this.dispensed = true; -- } else { -- this.dispensed = ItemArmor.a(isourceblock, itemstack); -- } -- -- return itemstack; -- } -- })); -- BlockDispenser.a((IMaterial) Blocks.SHULKER_BOX.getItem(), (IDispenseBehavior) (new DispenseBehaviorShulkerBox())); -- EnumColor[] aenumcolor = EnumColor.values(); -- int i = aenumcolor.length; -- -- for (int j = 0; j < i; ++j) { -- EnumColor enumcolor = aenumcolor[j]; -- -- BlockDispenser.a((IMaterial) BlockShulkerBox.a(enumcolor).getItem(), (IDispenseBehavior) (new DispenseBehaviorShulkerBox())); -- } -- -- BlockDispenser.a((IMaterial) Items.GLASS_BOTTLE.getItem(), (IDispenseBehavior) (new DispenseBehaviorMaybe() { -- private final DispenseBehaviorItem c = new DispenseBehaviorItem(); -- -- private ItemStack a(ISourceBlock isourceblock, ItemStack itemstack, ItemStack itemstack1) { -- itemstack.subtract(1); -- if (itemstack.isEmpty()) { -- return itemstack1.cloneItemStack(); -- } else { -- if (((TileEntityDispenser) isourceblock.getTileEntity()).addItem(itemstack1.cloneItemStack()) < 0) { -- this.c.dispense(isourceblock, itemstack1.cloneItemStack()); -- } -- -- return itemstack; -- } -- } -- -- @Override -- public ItemStack a(ISourceBlock isourceblock, ItemStack itemstack) { -- this.dispensed = false; -- World world = isourceblock.getWorld(); -- BlockPosition blockposition = isourceblock.getBlockPosition().shift((EnumDirection) isourceblock.getBlockData().get(BlockDispenser.FACING)); -- IBlockData iblockdata = world.getType(blockposition); -- Block block = iblockdata.getBlock(); -- -- // CraftBukkit start -- org.bukkit.block.Block bukkitBlock = world.getWorld().getBlockAt(isourceblock.getBlockPosition().getX(), isourceblock.getBlockPosition().getY(), isourceblock.getBlockPosition().getZ()); -- CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack); -- -- BlockDispenseEvent event = new BlockDispenseEvent(bukkitBlock, craftItem.clone(), new org.bukkit.util.Vector(blockposition.getX(), blockposition.getY(), blockposition.getZ())); -- if (!BlockDispenser.eventFired) { -- world.getServer().getPluginManager().callEvent(event); -- } -- -- if (event.isCancelled()) { -- return itemstack; -- } -- -- if (!event.getItem().equals(craftItem)) { -- // Chain to handler for new item -- ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem()); -- IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.REGISTRY.get(eventStack.getItem()); -- if (idispensebehavior != IDispenseBehavior.NONE && idispensebehavior != this) { -- idispensebehavior.dispense(isourceblock, eventStack); -- return itemstack; -- } -- } -- // CraftBukkit end -- -- if (block.a(TagsBlock.BEEHIVES) && (Integer) iblockdata.get(BlockBeehive.c) >= 5) { -- ((BlockBeehive) iblockdata.getBlock()).a(world.getMinecraftWorld(), iblockdata, blockposition, (EntityHuman) null, TileEntityBeehive.ReleaseStatus.BEE_RELEASED); -- this.dispensed = true; -- return this.a(isourceblock, itemstack, new ItemStack(Items.pX)); -- } else if (world.getFluid(blockposition).a(TagsFluid.WATER)) { -- this.dispensed = true; -- return this.a(isourceblock, itemstack, PotionUtil.a(new ItemStack(Items.POTION), Potions.WATER)); -- } else { -- return super.a(isourceblock, itemstack); -- } -- } -- })); -- BlockDispenser.a((IMaterial) Items.SHEARS.getItem(), (IDispenseBehavior) (new DispenseBehaviorMaybe() { -- @Override -- protected ItemStack a(ISourceBlock isourceblock, ItemStack itemstack) { -- World world = isourceblock.getWorld(); -- // CraftBukkit start -- org.bukkit.block.Block bukkitBlock = world.getWorld().getBlockAt(isourceblock.getBlockPosition().getX(), isourceblock.getBlockPosition().getY(), isourceblock.getBlockPosition().getZ()); -- CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack); -- -- BlockDispenseEvent event = new BlockDispenseEvent(bukkitBlock, craftItem.clone(), new org.bukkit.util.Vector(0, 0, 0)); -- if (!BlockDispenser.eventFired) { -- world.getServer().getPluginManager().callEvent(event); -- } -- -- if (event.isCancelled()) { -- return itemstack; -- } -- -- if (!event.getItem().equals(craftItem)) { -- // Chain to handler for new item -- ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem()); -- IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.REGISTRY.get(eventStack.getItem()); -- if (idispensebehavior != IDispenseBehavior.NONE && idispensebehavior != this) { -- idispensebehavior.dispense(isourceblock, eventStack); -- return itemstack; -- } -- } -- // CraftBukkit end -- -- if (!world.p_()) { -- this.dispensed = false; -- BlockPosition blockposition = isourceblock.getBlockPosition().shift((EnumDirection) isourceblock.getBlockData().get(BlockDispenser.FACING)); -- List list = world.a(EntitySheep.class, new AxisAlignedBB(blockposition)); -- Iterator iterator1 = list.iterator(); -- -- while (iterator1.hasNext()) { -- EntitySheep entitysheep = (EntitySheep) iterator1.next(); -- -- if (entitysheep.isAlive() && !entitysheep.isSheared() && !entitysheep.isBaby()) { -- // CraftBukkit start -- if (CraftEventFactory.callBlockShearEntityEvent(entitysheep, bukkitBlock, craftItem).isCancelled()) { -- continue; -- } -- // CraftBukkit end -- entitysheep.shear(); -- if (itemstack.isDamaged(1, world.random, (EntityPlayer) null)) { -- itemstack.setCount(0); -- } -- -- this.dispensed = true; -- break; -- } -- } -- -- if (!this.dispensed) { -- IBlockData iblockdata = world.getType(blockposition); -- -- if (iblockdata.a(TagsBlock.BEEHIVES)) { -- int k = (Integer) iblockdata.get(BlockBeehive.c); -- -- if (k >= 5) { -- if (itemstack.isDamaged(1, world.random, (EntityPlayer) null)) { -- itemstack.setCount(0); -- } -- -- BlockBeehive.a(world, blockposition); -- ((BlockBeehive) iblockdata.getBlock()).a(world, iblockdata, blockposition, (EntityHuman) null, TileEntityBeehive.ReleaseStatus.BEE_RELEASED); -- this.dispensed = true; -- } -- } -- } -- } -- - return itemstack; - } - })); -Index: src/main/java/net/minecraft/server/JsonList.java -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== -diff --git a/src/main/java/net/minecraft/server/JsonList.java b/src/main/java/net/minecraft/server/JsonList.java ---- a/src/main/java/net/minecraft/server/JsonList.java (revision 22fba2706e53d3d24a5901b2881c3d97f9781f34) -+++ b/src/main/java/net/minecraft/server/JsonList.java (revision a16617e368c59c772e5873c8c3a4040444e4ea57) -@@ -156,6 +156,8 @@ - } - - public void save() throws IOException { -+ if(!c.canWrite()) -+ return; - Collection collection = this.d.values(); - String s = this.b.toJson(collection); - BufferedWriter bufferedwriter = null; -Index: src/main/java/net/minecraft/server/MinecraftServer.java -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== -diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java ---- a/src/main/java/net/minecraft/server/MinecraftServer.java (revision 22fba2706e53d3d24a5901b2881c3d97f9781f34) -+++ b/src/main/java/net/minecraft/server/MinecraftServer.java (revision a16617e368c59c772e5873c8c3a4040444e4ea57) -@@ -30,19 +30,7 @@ - import java.nio.file.Paths; - import java.security.KeyPair; - import java.text.SimpleDateFormat; --import java.util.ArrayList; --import java.util.Arrays; --import java.util.Base64; --import java.util.Collection; --import java.util.Collections; --import java.util.Comparator; --import java.util.Date; --import java.util.Iterator; --import java.util.List; --import java.util.Map; --import java.util.Optional; --import java.util.Random; --import java.util.UUID; -+import java.util.*; - import java.util.Map.Entry; - import java.util.concurrent.CompletableFuture; - import java.util.concurrent.Executor; -@@ -168,11 +156,12 @@ - private boolean forceTicks; - // CraftBukkit end - // Spigot start -- public static final int TPS = 20; -- public static final int TICK_TIME = 1000000000 / TPS; -+ public static int TPS = 20; -+ public static int TICK_TIME = 1000000000 / TPS; - private static final int SAMPLE_INTERVAL = 100; - public final double[] recentTps = new double[ 3 ]; - public final SlackActivityAccountant slackActivityAccountant = new SlackActivityAccountant(); -+ public static long startNanos; - // Spigot end - - public MinecraftServer(OptionSet options, Proxy proxy, DataFixer datafixer, CommandDispatcher commanddispatcher, YggdrasilAuthenticationService yggdrasilauthenticationservice, MinecraftSessionService minecraftsessionservice, GameProfileRepository gameprofilerepository, UserCache usercache, WorldLoadListenerFactory worldloadlistenerfactory, String s) { -@@ -449,10 +438,8 @@ - } - } - this.a(this.getDifficulty(), true); -- for (WorldServer worldserver : this.getWorlds()) { -- this.loadSpawn(worldserver.getChunkProvider().playerChunkMap.worldLoadListener, worldserver); -- this.server.getPluginManager().callEvent(new org.bukkit.event.world.WorldLoadEvent(worldserver.getWorld())); -- } -+ -+ this.getWorlds().forEach(worldserver -> this.server.getPluginManager().callEvent(new org.bukkit.event.world.WorldLoadEvent(worldserver.getWorld()))); - - this.server.enablePlugins(org.bukkit.plugin.PluginLoadOrder.POSTWORLD); - this.server.getPluginManager().callEvent(new ServerLoadEvent(ServerLoadEvent.LoadType.STARTUP)); -@@ -1132,6 +1119,7 @@ - } - - public static void main(final OptionSet optionset) { // CraftBukkit - replaces main(String[] astring) -+ startNanos = SystemUtils.getMonotonicNanos(); - /* CraftBukkit start - Replace everything - OptionParser optionparser = new OptionParser(); - OptionSpec optionspec = optionparser.accepts("nogui"); -@@ -1162,36 +1150,27 @@ - DedicatedServerSettings dedicatedserversettings = new DedicatedServerSettings(optionset); // CraftBukkit - CLI argument support - - dedicatedserversettings.save(); -- java.nio.file.Path java_nio_file_path1 = Paths.get("eula.txt"); -- EULA eula = new EULA(java_nio_file_path1); -- -- if (optionset.has("initSettings")) { // CraftBukkit -- MinecraftServer.LOGGER.info("Initialized '" + java_nio_file_path.toAbsolutePath().toString() + "' and '" + java_nio_file_path1.toAbsolutePath().toString() + "'"); -- return; -- } - - // Spigot Start -- boolean eulaAgreed = Boolean.getBoolean( "com.mojang.eula.agree" ); -- if ( eulaAgreed ) -- { -- System.err.println( "You have used the Spigot command line EULA agreement flag." ); -- System.err.println( "By using this setting you are indicating your agreement to Mojang's EULA (https://account.mojang.com/documents/minecraft_eula)." ); -- System.err.println( "If you do not agree to the above EULA please stop your server and remove this flag immediately." ); -- } -- // Spigot End -- if (!eula.a() && !eulaAgreed) { // Spigot -- MinecraftServer.LOGGER.info("You need to agree to the EULA in order to run the server. Go to eula.txt for more info."); -- return; -- } -- - CrashReport.h(); -- DispenserRegistry.init(); -- DispenserRegistry.c(); -+ Thread registryThread = new Thread(() -> { -+ DispenserRegistry.init(); -+ DispenserRegistry.c(); -+ }, "RegistryInitializer"); -+ registryThread.start(); -+ long l = SystemUtils.getMonotonicNanos() - MinecraftServer.startNanos; -+ String s2 = String.format(Locale.ROOT, "%.3fs", (double) l / 1.0E9D); -+ -+ LOGGER.info("({})! For Loading Registries", s2); - File s = (File) optionset.valueOf("universe"); // CraftBukkit - YggdrasilAuthenticationService yggdrasilauthenticationservice = new YggdrasilAuthenticationService(Proxy.NO_PROXY, UUID.randomUUID().toString()); - MinecraftSessionService minecraftsessionservice = yggdrasilauthenticationservice.createMinecraftSessionService(); - GameProfileRepository gameprofilerepository = yggdrasilauthenticationservice.createProfileRepository(); - UserCache usercache = new UserCache(gameprofilerepository, new File(s, MinecraftServer.b.getName())); -+ l = SystemUtils.getMonotonicNanos() - MinecraftServer.startNanos; -+ s2 = String.format(Locale.ROOT, "%.3fs", (double) l / 1.0E9D); -+ -+ LOGGER.info("({})! For Initializing Repositories", s2); - // CraftBukkit start - String s1 = (String) Optional.ofNullable(optionset.valueOf("world")).orElse(dedicatedserversettings.getProperties().levelName); - final DedicatedServer dedicatedserver = new DedicatedServer(optionset, dedicatedserversettings, DataConverterRegistry.a(), yggdrasilauthenticationservice, minecraftsessionservice, gameprofilerepository, usercache, WorldLoadListenerLogger::new, s1); -@@ -1242,6 +1221,10 @@ - dedicatedserver.setEraseCache(true); - } - -+ l = SystemUtils.getMonotonicNanos() - MinecraftServer.startNanos; -+ s2 = String.format(Locale.ROOT, "%.3fs", (double) l / 1.0E9D); -+ -+ LOGGER.info("({})! For Initializing Dedicated Server", s2); - dedicatedserver.serverThread.start(); - // CraftBukkit end - } catch (Exception exception) { -@@ -1724,47 +1707,39 @@ - } - - private void b(WorldData worlddata) { -- List list = Lists.newArrayList(this.resourcePackRepository.d()); -- Iterator iterator = this.resourcePackRepository.b().iterator(); -- -- while (iterator.hasNext()) { -- ResourcePackLoader resourcepackloader = (ResourcePackLoader) iterator.next(); -+ Thread reloadResource = new Thread(() -> { -+ List list = Lists.newArrayList(this.resourcePackRepository.d()); -+ Iterator iterator = this.resourcePackRepository.b().iterator(); -+ while (iterator.hasNext()) { -+ ResourcePackLoader resourcepackloader = (ResourcePackLoader) iterator.next(); - -- if (!worlddata.N().contains(resourcepackloader.e()) && !list.contains(resourcepackloader)) { -- MinecraftServer.LOGGER.info("Found new data pack {}, loading it automatically", resourcepackloader.e()); -- resourcepackloader.h().a(list, resourcepackloader, (resourcepackloader1) -> { -- return resourcepackloader1; -- }, false); -- } -- } -+ if (!worlddata.N().contains(resourcepackloader.e()) && !list.contains(resourcepackloader)) { -+ MinecraftServer.LOGGER.info("Found new data pack {}, loading it automatically", resourcepackloader.e()); -+ resourcepackloader.h().a(list, resourcepackloader, (resourcepackloader1) -> { -+ return resourcepackloader1; -+ }, false); -+ } -+ } - -- this.resourcePackRepository.a((Collection) list); -- List list1 = Lists.newArrayList(); -+ this.resourcePackRepository.a((Collection) list); -+ List list1 = Lists.newArrayList(); - -- this.resourcePackRepository.d().forEach((resourcepackloader1) -> { -- list1.add(resourcepackloader1.d()); -- }); -- CompletableFuture completablefuture = this.ae.a(this.executorService, this, list1, MinecraftServer.i); -- -- this.awaitTasks(completablefuture::isDone); -- -- try { -- completablefuture.get(); -- } catch (Exception exception) { -- MinecraftServer.LOGGER.error("Failed to reload data packs", exception); -- } -- -- worlddata.O().clear(); -- worlddata.N().clear(); -- this.resourcePackRepository.d().forEach((resourcepackloader1) -> { -- worlddata.O().add(resourcepackloader1.e()); -- }); -- this.resourcePackRepository.b().forEach((resourcepackloader1) -> { -- if (!this.resourcePackRepository.d().contains(resourcepackloader1)) { -- worlddata.N().add(resourcepackloader1.e()); -- } -- -+ this.resourcePackRepository.d().forEach((resourcepackloader1) -> { -+ list1.add(resourcepackloader1.d()); -+ }); -+ this.ae.a(this.executorService, this, list1, MinecraftServer.i); -+ worlddata.O().clear(); -+ worlddata.N().clear(); -+ this.resourcePackRepository.d().forEach((resourcepackloader1) -> { -+ worlddata.O().add(resourcepackloader1.e()); -+ }); -+ this.resourcePackRepository.b().forEach((resourcepackloader1) -> { -+ if (!this.resourcePackRepository.d().contains(resourcepackloader1)) { -+ worlddata.N().add(resourcepackloader1.e()); -+ } -+ }); - }); -+ reloadResource.start(); - } - - public void a(CommandListenerWrapper commandlistenerwrapper) { -@@ -2075,7 +2050,8 @@ - } - - private void bb() { -- Block.REGISTRY_ID.forEach(IBlockData::c); -+ Thread blockRegistry = new Thread(() -> Block.REGISTRY_ID.forEach(IBlockData::c)); -+ blockRegistry.start(); - } - - // CraftBukkit start -Index: src/main/java/org/bukkit/craftbukkit/CraftServer.java -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== -diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java ---- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java (revision 22fba2706e53d3d24a5901b2881c3d97f9781f34) -+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java (revision a16617e368c59c772e5873c8c3a4040444e4ea57) -@@ -38,6 +38,7 @@ - import java.util.Map; - import java.util.Set; - import java.util.UUID; -+import java.util.concurrent.*; - import java.util.function.Consumer; - import java.util.logging.Level; - import java.util.logging.Logger; -@@ -234,6 +235,7 @@ - public boolean ignoreVanillaPermissions = false; - private final List playerView; - public int reloadCount; -+ private boolean allPluginsLoaded = false; - - static { - ConfigurationSerialization.registerClass(CraftOfflinePlayer.class); -@@ -347,22 +349,38 @@ - public void loadPlugins() { - pluginManager.registerInterface(JavaPluginLoader.class); - -- File pluginFolder = (File) console.options.valueOf("plugins"); -+ Thread pluginloader = new Thread(() -> { -+ File pluginFolder = (File) console.options.valueOf("plugins"); - -- if (pluginFolder.exists()) { -- Plugin[] plugins = pluginManager.loadPlugins(pluginFolder); -- for (Plugin plugin : plugins) { -- try { -- String message = String.format("Loading %s", plugin.getDescription().getFullName()); -- plugin.getLogger().info(message); -- plugin.onLoad(); -- } catch (Throwable ex) { -- Logger.getLogger(CraftServer.class.getName()).log(Level.SEVERE, ex.getMessage() + " initializing " + plugin.getDescription().getFullName() + " (Is it up to date?)", ex); -+ if (pluginFolder.exists()) { -+ Plugin[] plugins = pluginManager.loadPlugins(pluginFolder); -+ ThreadPoolExecutor group = new ThreadPoolExecutor(2, 4, 5, TimeUnit.SECONDS, new ArrayBlockingQueue(Math.min(plugins.length, 1))); -+ for (Plugin plugin : plugins) { -+ group.execute(() -> { -+ try { -+ String message = String.format("Loading %s", plugin.getDescription().getFullName()); -+ plugin.getLogger().info(message); -+ plugin.onLoad(); -+ } catch (Throwable ex) { -+ Logger.getLogger(CraftServer.class.getName()).log(Level.SEVERE, ex.getMessage() + " initializing " + plugin.getDescription().getFullName() + " (Is it up to date?)", ex); -+ } -+ }); - } -- } -- } else { -- pluginFolder.mkdir(); -- } -+ try { -+ while (!group.getQueue().isEmpty()) { -+ Thread.sleep(10); -+ } -+ enablePlugins(PluginLoadOrder.STARTUP); -+ } catch (InterruptedException e) { -+ logger.severe(e.getMessage()); -+ e.printStackTrace(); -+ System.exit(1); -+ } -+ } else { -+ pluginFolder.mkdir(); -+ } -+ }); -+ pluginloader.start(); - } - - public void enablePlugins(PluginLoadOrder type) { -@@ -831,7 +849,6 @@ - )); - } - loadPlugins(); -- enablePlugins(PluginLoadOrder.STARTUP); - enablePlugins(PluginLoadOrder.POSTWORLD); - getPluginManager().callEvent(new ServerLoadEvent(ServerLoadEvent.LoadType.RELOAD)); - } -Index: src/main/java/org/bukkit/craftbukkit/Main.java -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== -diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java ---- a/src/main/java/org/bukkit/craftbukkit/Main.java (revision 22fba2706e53d3d24a5901b2881c3d97f9781f34) -+++ b/src/main/java/org/bukkit/craftbukkit/Main.java (revision a16617e368c59c772e5873c8c3a4040444e4ea57) -@@ -181,23 +181,6 @@ - System.setProperty(jline.TerminalFactory.JLINE_TERMINAL, jline.UnsupportedTerminal.class.getName()); - } - -- if (options.has("noconsole")) { -- useConsole = false; -- } -- -- if (false && Main.class.getPackage().getImplementationVendor() != null && System.getProperty("IReallyKnowWhatIAmDoingISwear") == null) { -- Date buildDate = new Date(Integer.parseInt(Main.class.getPackage().getImplementationVendor()) * 1000L); -- -- Calendar deadline = Calendar.getInstance(); -- deadline.add(Calendar.DAY_OF_YEAR, -21); -- if (buildDate.before(deadline.getTime())) { -- System.err.println("*** Error, this build is outdated ***"); -- System.err.println("*** Please download a new build as per instructions from https://www.spigotmc.org/go/outdated-spigot ***"); -- System.err.println("*** Server will start in 20 seconds ***"); -- Thread.sleep(TimeUnit.SECONDS.toMillis(20)); -- } -- } -- - System.out.println("Loading libraries, please wait..."); - MinecraftServer.main(options); - } catch (Throwable t) { -Index: src/main/java/org/bukkit/craftbukkit/command/ColouredConsoleSender.java -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== -diff --git a/src/main/java/org/bukkit/craftbukkit/command/ColouredConsoleSender.java b/src/main/java/org/bukkit/craftbukkit/command/ColouredConsoleSender.java ---- a/src/main/java/org/bukkit/craftbukkit/command/ColouredConsoleSender.java (revision 22fba2706e53d3d24a5901b2881c3d97f9781f34) -+++ b/src/main/java/org/bukkit/craftbukkit/command/ColouredConsoleSender.java (revision a16617e368c59c772e5873c8c3a4040444e4ea57) -@@ -66,10 +66,6 @@ - } - - public static ConsoleCommandSender getInstance() { -- if (Bukkit.getConsoleSender() != null) { -- return Bukkit.getConsoleSender(); -- } else { -- return new ColouredConsoleSender(); -- } -+ return new ColouredConsoleSender(); - } - } diff --git a/SteamWar-Patches/Disable_BuildVersion.patch b/SteamWar-Patches/Disable_BuildVersion.patch new file mode 100644 index 0000000..51a60c3 --- /dev/null +++ b/SteamWar-Patches/Disable_BuildVersion.patch @@ -0,0 +1,32 @@ +Index: src/main/java/org/bukkit/craftbukkit/Main.java +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java +--- a/src/main/java/org/bukkit/craftbukkit/Main.java (revision 163eed5a26a0c45590314f401c743ddc8adc92de) ++++ b/src/main/java/org/bukkit/craftbukkit/Main.java (revision 12c3f23057841f2868e5fcf4a4a836b73e52b1bb) +@@ -181,23 +181,6 @@ + System.setProperty(jline.TerminalFactory.JLINE_TERMINAL, jline.UnsupportedTerminal.class.getName()); + } + +- if (options.has("noconsole")) { +- useConsole = false; +- } +- +- if (false && Main.class.getPackage().getImplementationVendor() != null && System.getProperty("IReallyKnowWhatIAmDoingISwear") == null) { +- Date buildDate = new Date(Integer.parseInt(Main.class.getPackage().getImplementationVendor()) * 1000L); +- +- Calendar deadline = Calendar.getInstance(); +- deadline.add(Calendar.DAY_OF_YEAR, -21); +- if (buildDate.before(deadline.getTime())) { +- System.err.println("*** Error, this build is outdated ***"); +- System.err.println("*** Please download a new build as per instructions from https://www.spigotmc.org/go/outdated-spigot ***"); +- System.err.println("*** Server will start in 20 seconds ***"); +- Thread.sleep(TimeUnit.SECONDS.toMillis(20)); +- } +- } +- + System.out.println("Loading libraries, please wait..."); + MinecraftServer.main(options); + } catch (Throwable t) { diff --git a/SteamWar-Patches/Remove_EULA_Check.patch b/SteamWar-Patches/Remove_EULA_Check.patch new file mode 100644 index 0000000..1c05e82 --- /dev/null +++ b/SteamWar-Patches/Remove_EULA_Check.patch @@ -0,0 +1,47 @@ +Index: src/main/java/net/minecraft/server/MinecraftServer.java +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java +--- a/src/main/java/net/minecraft/server/MinecraftServer.java (revision 80e88864c308ef9c8481a5d5af2ec1bda862fa6d) ++++ b/src/main/java/net/minecraft/server/MinecraftServer.java (revision 74b59be6f63fa4b23e3d93746b36a4a33352a918) +@@ -1162,28 +1162,8 @@ + DedicatedServerSettings dedicatedserversettings = new DedicatedServerSettings(optionset); // CraftBukkit - CLI argument support + + dedicatedserversettings.save(); +- java.nio.file.Path java_nio_file_path1 = Paths.get("eula.txt"); +- EULA eula = new EULA(java_nio_file_path1); +- +- if (optionset.has("initSettings")) { // CraftBukkit +- MinecraftServer.LOGGER.info("Initialized '" + java_nio_file_path.toAbsolutePath().toString() + "' and '" + java_nio_file_path1.toAbsolutePath().toString() + "'"); +- return; +- } + + // Spigot Start +- boolean eulaAgreed = Boolean.getBoolean( "com.mojang.eula.agree" ); +- if ( eulaAgreed ) +- { +- System.err.println( "You have used the Spigot command line EULA agreement flag." ); +- System.err.println( "By using this setting you are indicating your agreement to Mojang's EULA (https://account.mojang.com/documents/minecraft_eula)." ); +- System.err.println( "If you do not agree to the above EULA please stop your server and remove this flag immediately." ); +- } +- // Spigot End +- if (!eula.a() && !eulaAgreed) { // Spigot +- MinecraftServer.LOGGER.info("You need to agree to the EULA in order to run the server. Go to eula.txt for more info."); +- return; +- } +- + CrashReport.h(); + DispenserRegistry.init(); + DispenserRegistry.c(); +@@ -2075,7 +2055,8 @@ + } + + private void bb() { +- Block.REGISTRY_ID.forEach(IBlockData::c); ++ Thread blockRegistry = new Thread(() -> Block.REGISTRY_ID.forEach(IBlockData::c)); ++ blockRegistry.start(); + } + + // CraftBukkit start diff --git a/SteamWar-Patches/Remove_RAM_Check.patch b/SteamWar-Patches/Remove_RAM_Check.patch new file mode 100644 index 0000000..d5ec23d --- /dev/null +++ b/SteamWar-Patches/Remove_RAM_Check.patch @@ -0,0 +1,18 @@ +Index: src/main/java/net/minecraft/server/DedicatedServer.java +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java +--- a/src/main/java/net/minecraft/server/DedicatedServer.java (revision 12c3f23057841f2868e5fcf4a4a836b73e52b1bb) ++++ b/src/main/java/net/minecraft/server/DedicatedServer.java (revision 80e88864c308ef9c8481a5d5af2ec1bda862fa6d) +@@ -151,9 +151,6 @@ + thread.setUncaughtExceptionHandler(new DefaultUncaughtExceptionHandler(DedicatedServer.LOGGER)); + thread.start(); + DedicatedServer.LOGGER.info("Starting minecraft server version " + SharedConstants.getGameVersion().getName()); +- if (Runtime.getRuntime().maxMemory() / 1024L / 1024L < 512L) { +- DedicatedServer.LOGGER.warn("To start the server with more ram, launch it as \"java -Xmx1024M -Xms1024M -jar minecraft_server.jar\""); +- } + + DedicatedServer.LOGGER.info("Loading properties"); + DedicatedServerProperties dedicatedserverproperties = this.propertyManager.getProperties();