├── .gitattributes ├── .gitignore ├── .gitmodules ├── .travis.yml ├── CONTRIBUTING.md ├── FGS.jar ├── ISSUE_TEMPLATE.md ├── LICENSE.txt ├── README.md ├── build.gradle ├── buildSrc ├── build.gradle └── src │ └── main │ └── groovy │ └── thermos │ ├── CreateChangelog.groovy │ ├── InstallBundle.groovy │ └── VersionParser.groovy ├── contigo_icon.png ├── eclipse-workspace-dev.zip ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── jsons ├── 1.7.10-dev.json ├── 1.7.10-rel.json └── 1.7.10.json ├── minecraft ├── params.csv ├── patches ├── cpw │ └── mods │ │ └── fml │ │ ├── common │ │ ├── FMLCommonHandler.java.patch │ │ ├── asm │ │ │ ├── FMLSanityChecker.java.patch │ │ │ └── transformers │ │ │ │ ├── SideTransformer.java.patch │ │ │ │ └── TerminalTransformer.java.patch │ │ ├── discovery │ │ │ └── ModDiscoverer.java.patch │ │ ├── event │ │ │ └── FMLServerStartingEvent.java.patch │ │ ├── launcher │ │ │ └── FMLTweaker.java.patch │ │ ├── network │ │ │ ├── FMLOutboundHandler.java.patch │ │ │ ├── handshake │ │ │ │ ├── ChannelRegistrationHandler.java.patch │ │ │ │ ├── FMLHandshakeServerState.java.patch │ │ │ │ └── NetworkDispatcher.java.patch │ │ │ └── internal │ │ │ │ ├── FMLNetworkHandler.java.patch │ │ │ │ └── HandshakeCompletionHandler.java.patch │ │ └── registry │ │ │ ├── EntityRegistry.java.patch │ │ │ ├── GameData.java.patch │ │ │ └── GameRegistry.java.patch │ │ └── relauncher │ │ ├── CoreModManager.java.patch │ │ └── FMLSecurityManager.java.patch ├── net │ ├── minecraft │ │ ├── block │ │ │ ├── Block.java.patch │ │ │ ├── BlockBasePressurePlate.java.patch │ │ │ ├── BlockBrewingStand.java.patch │ │ │ ├── BlockButton.java.patch │ │ │ ├── BlockCactus.java.patch │ │ │ ├── BlockCake.java.patch │ │ │ ├── BlockCocoa.java.patch │ │ │ ├── BlockCommandBlock.java.patch │ │ │ ├── BlockCrops.java.patch │ │ │ ├── BlockDaylightDetector.java.patch │ │ │ ├── BlockDispenser.java.patch │ │ │ ├── BlockDoor.java.patch │ │ │ ├── BlockDragonEgg.java.patch │ │ │ ├── BlockDropper.java.patch │ │ │ ├── BlockDynamicLiquid.java.patch │ │ │ ├── BlockEndPortal.java.patch │ │ │ ├── BlockFalling.java.patch │ │ │ ├── BlockFarmland.java.patch │ │ │ ├── BlockFire.java.patch │ │ │ ├── BlockGrass.java.patch │ │ │ ├── BlockHopper.java.patch │ │ │ ├── BlockIce.java.patch │ │ │ ├── BlockJukebox.java.patch │ │ │ ├── BlockLeaves.java.patch │ │ │ ├── BlockLever.java.patch │ │ │ ├── BlockLiquid.java.patch │ │ │ ├── BlockMushroom.java.patch │ │ │ ├── BlockMycelium.java.patch │ │ │ ├── BlockNetherWart.java.patch │ │ │ ├── BlockNetherrack.java.patch │ │ │ ├── BlockPistonBase.java.patch │ │ │ ├── BlockPistonExtension.java.patch │ │ │ ├── BlockPortal.java.patch │ │ │ ├── BlockPressurePlate.java.patch │ │ │ ├── BlockPressurePlateWeighted.java.patch │ │ │ ├── BlockPumpkin.java.patch │ │ │ ├── BlockRailDetector.java.patch │ │ │ ├── BlockRedstoneDiode.java.patch │ │ │ ├── BlockRedstoneLight.java.patch │ │ │ ├── BlockRedstoneOre.java.patch │ │ │ ├── BlockRedstoneTorch.java.patch │ │ │ ├── BlockRedstoneWire.java.patch │ │ │ ├── BlockReed.java.patch │ │ │ ├── BlockSapling.java.patch │ │ │ ├── BlockSign.java.patch │ │ │ ├── BlockSkull.java.patch │ │ │ ├── BlockSnow.java.patch │ │ │ ├── BlockStaticLiquid.java.patch │ │ │ ├── BlockStem.java.patch │ │ │ ├── BlockTrapDoor.java.patch │ │ │ ├── BlockTripWire.java.patch │ │ │ ├── BlockTripWireHook.java.patch │ │ │ └── BlockVine.java.patch │ │ ├── client │ │ │ └── Minecraft.java.patch │ │ ├── command │ │ │ ├── CommandHandler.java.patch │ │ │ ├── PlayerSelector.java.patch │ │ │ ├── ServerCommandManager.java.patch │ │ │ └── server │ │ │ │ └── CommandBlockLogic.java.patch │ │ ├── crash │ │ │ └── CrashReport.java.patch │ │ ├── dispenser │ │ │ ├── BehaviorDefaultDispenseItem.java.patch │ │ │ └── BehaviorProjectileDispense.java.patch │ │ ├── enchantment │ │ │ └── Enchantment.java.patch │ │ ├── entity │ │ │ ├── DataWatcher.java.patch │ │ │ ├── Entity.java.patch │ │ │ ├── EntityAgeable.java.patch │ │ │ ├── EntityCreature.java.patch │ │ │ ├── EntityHanging.java.patch │ │ │ ├── EntityLeashKnot.java.patch │ │ │ ├── EntityLiving.java.patch │ │ │ ├── EntityLivingBase.java.patch │ │ │ ├── EntityMinecartCommandBlock.java.patch │ │ │ ├── EntityTracker.java.patch │ │ │ ├── EntityTrackerEntry.java.patch │ │ │ ├── ai │ │ │ │ ├── EntityAIArrowAttack.java.patch │ │ │ │ ├── EntityAIAttackOnCollide.java.patch │ │ │ │ ├── EntityAIBreakDoor.java.patch │ │ │ │ ├── EntityAIEatGrass.java.patch │ │ │ │ ├── EntityAIMate.java.patch │ │ │ │ ├── EntityAIPanic.java.patch │ │ │ │ ├── EntityAIRunAroundLikeCrazy.java.patch │ │ │ │ ├── EntityAISit.java.patch │ │ │ │ ├── EntityAITarget.java.patch │ │ │ │ ├── EntityAITasks.java.patch │ │ │ │ ├── EntityAIVillagerMate.java.patch │ │ │ │ ├── EntityLookHelper.java.patch │ │ │ │ ├── EntityMoveHelper.java.patch │ │ │ │ └── EntitySenses.java.patch │ │ │ ├── boss │ │ │ │ ├── EntityDragon.java.patch │ │ │ │ └── EntityWither.java.patch │ │ │ ├── effect │ │ │ │ └── EntityLightningBolt.java.patch │ │ │ ├── item │ │ │ │ ├── EntityBoat.java.patch │ │ │ │ ├── EntityEnderCrystal.java.patch │ │ │ │ ├── EntityEnderEye.java.patch │ │ │ │ ├── EntityEnderPearl.java.patch │ │ │ │ ├── EntityExpBottle.java.patch │ │ │ │ ├── EntityFallingBlock.java.patch │ │ │ │ ├── EntityFireworkRocket.java.patch │ │ │ │ ├── EntityItem.java.patch │ │ │ │ ├── EntityItemFrame.java.patch │ │ │ │ ├── EntityMinecart.java.patch │ │ │ │ ├── EntityMinecartContainer.java.patch │ │ │ │ ├── EntityPainting.java.patch │ │ │ │ ├── EntityTNTPrimed.java.patch │ │ │ │ └── EntityXPOrb.java.patch │ │ │ ├── monster │ │ │ │ ├── EntityCreeper.java.patch │ │ │ │ ├── EntityEnderman.java.patch │ │ │ │ ├── EntityGhast.java.patch │ │ │ │ ├── EntityMob.java.patch │ │ │ │ ├── EntityPigZombie.java.patch │ │ │ │ ├── EntitySilverfish.java.patch │ │ │ │ ├── EntitySkeleton.java.patch │ │ │ │ ├── EntitySlime.java.patch │ │ │ │ ├── EntitySnowman.java.patch │ │ │ │ ├── EntitySpider.java.patch │ │ │ │ └── EntityZombie.java.patch │ │ │ ├── passive │ │ │ │ ├── EntityCow.java.patch │ │ │ │ ├── EntityHorse.java.patch │ │ │ │ ├── EntityMooshroom.java.patch │ │ │ │ ├── EntityOcelot.java.patch │ │ │ │ ├── EntityPig.java.patch │ │ │ │ ├── EntitySheep.java.patch │ │ │ │ ├── EntitySquid.java.patch │ │ │ │ └── EntityWolf.java.patch │ │ │ ├── player │ │ │ │ ├── EntityPlayer.java.patch │ │ │ │ ├── EntityPlayerMP.java.patch │ │ │ │ ├── InventoryPlayer.java.patch │ │ │ │ └── PlayerCapabilities.java.patch │ │ │ └── projectile │ │ │ │ ├── EntityArrow.java.patch │ │ │ │ ├── EntityEgg.java.patch │ │ │ │ ├── EntityFireball.java.patch │ │ │ │ ├── EntityFishHook.java.patch │ │ │ │ ├── EntityLargeFireball.java.patch │ │ │ │ ├── EntityPotion.java.patch │ │ │ │ ├── EntitySmallFireball.java.patch │ │ │ │ ├── EntitySnowball.java.patch │ │ │ │ ├── EntityThrowable.java.patch │ │ │ │ └── EntityWitherSkull.java.patch │ │ ├── init │ │ │ └── Bootstrap.java.patch │ │ ├── inventory │ │ │ ├── AnimalChest.java.patch │ │ │ ├── Container.java.patch │ │ │ ├── ContainerBeacon.java.patch │ │ │ ├── ContainerBrewingStand.java.patch │ │ │ ├── ContainerChest.java.patch │ │ │ ├── ContainerDispenser.java.patch │ │ │ ├── ContainerEnchantment.java.patch │ │ │ ├── ContainerFurnace.java.patch │ │ │ ├── ContainerHopper.java.patch │ │ │ ├── ContainerMerchant.java.patch │ │ │ ├── ContainerPlayer.java.patch │ │ │ ├── ContainerRepair.java.patch │ │ │ ├── ContainerWorkbench.java.patch │ │ │ ├── IInventory.java.patch │ │ │ ├── InventoryBasic.java.patch │ │ │ ├── InventoryCraftResult.java.patch │ │ │ ├── InventoryCrafting.java.patch │ │ │ ├── InventoryEnderChest.java.patch │ │ │ ├── InventoryLargeChest.java.patch │ │ │ ├── InventoryMerchant.java.patch │ │ │ ├── Slot.java.patch │ │ │ └── SlotFurnace.java.patch │ │ ├── item │ │ │ ├── Item.java.patch │ │ │ ├── ItemBoat.java.patch │ │ │ ├── ItemBow.java.patch │ │ │ ├── ItemBucket.java.patch │ │ │ ├── ItemDye.java.patch │ │ │ ├── ItemEmptyMap.java.patch │ │ │ ├── ItemFireball.java.patch │ │ │ ├── ItemFishingRod.java.patch │ │ │ ├── ItemFlintAndSteel.java.patch │ │ │ ├── ItemHangingEntity.java.patch │ │ │ ├── ItemLead.java.patch │ │ │ ├── ItemLilyPad.java.patch │ │ │ ├── ItemMap.java.patch │ │ │ ├── ItemMinecart.java.patch │ │ │ ├── ItemMonsterPlacer.java.patch │ │ │ ├── ItemShears.java.patch │ │ │ ├── ItemStack.java.patch │ │ │ ├── ItemWritableBook.java.patch │ │ │ └── crafting │ │ │ │ ├── CraftingManager.java.patch │ │ │ │ ├── FurnaceRecipes.java.patch │ │ │ │ ├── IRecipe.java.patch │ │ │ │ ├── RecipeBookCloning.java.patch │ │ │ │ ├── RecipeFireworks.java.patch │ │ │ │ ├── RecipesArmorDyes.java.patch │ │ │ │ ├── RecipesMapCloning.java.patch │ │ │ │ ├── ShapedRecipes.java.patch │ │ │ │ └── ShapelessRecipes.java.patch │ │ ├── nbt │ │ │ ├── NBTTagCompound.java.patch │ │ │ └── NBTTagList.java.patch │ │ ├── network │ │ │ ├── NetHandlerPlayServer.java.patch │ │ │ ├── NetworkManager.java.patch │ │ │ ├── NetworkSystem.java.patch │ │ │ ├── Packet.java.patch │ │ │ ├── PacketBuffer.java.patch │ │ │ ├── handshake │ │ │ │ └── client │ │ │ │ │ └── C00Handshake.java.patch │ │ │ ├── play │ │ │ │ ├── client │ │ │ │ │ ├── C01PacketChatMessage.java.patch │ │ │ │ │ ├── C03PacketPlayer.java.patch │ │ │ │ │ ├── C0DPacketCloseWindow.java.patch │ │ │ │ │ └── C17PacketCustomPayload.java.patch │ │ │ │ └── server │ │ │ │ │ ├── S02PacketChat.java.patch │ │ │ │ │ ├── S05PacketSpawnPosition.java.patch │ │ │ │ │ ├── S21PacketChunkData.java.patch │ │ │ │ │ ├── S26PacketMapChunkBulk.java.patch │ │ │ │ │ └── S3FPacketCustomPayload.java.patch │ │ │ └── rcon │ │ │ │ ├── RConConsoleSource.java.patch │ │ │ │ └── RConThreadClient.java.patch │ │ ├── pathfinding │ │ │ └── PathNavigate.java.patch │ │ ├── potion │ │ │ └── Potion.java.patch │ │ ├── scoreboard │ │ │ └── ServerScoreboard.java.patch │ │ ├── server │ │ │ ├── MinecraftServer.java.patch │ │ │ ├── ServerEula.java.patch │ │ │ ├── dedicated │ │ │ │ ├── DedicatedServer.java.patch │ │ │ │ └── PropertyManager.java.patch │ │ │ ├── integrated │ │ │ │ └── IntegratedServer.java.patch │ │ │ ├── management │ │ │ │ ├── BanEntry.java.patch │ │ │ │ ├── ItemInWorldManager.java.patch │ │ │ │ ├── PlayerManager.java.patch │ │ │ │ ├── ServerConfigurationManager.java.patch │ │ │ │ ├── UserList.java.patch │ │ │ │ ├── UserListEntry.java.patch │ │ │ │ └── UserListOps.java.patch │ │ │ └── network │ │ │ │ ├── NetHandlerHandshakeTCP.java.patch │ │ │ │ ├── NetHandlerLoginServer.java.patch │ │ │ │ └── NetHandlerStatusServer.java.patch │ │ ├── stats │ │ │ └── StatFileWriter.java.patch │ │ ├── tileentity │ │ │ ├── MobSpawnerBaseLogic.java.patch │ │ │ ├── TileEntity.java.patch │ │ │ ├── TileEntityBeacon.java.patch │ │ │ ├── TileEntityBrewingStand.java.patch │ │ │ ├── TileEntityChest.java.patch │ │ │ ├── TileEntityCommandBlock.java.patch │ │ │ ├── TileEntityComparator.java.patch │ │ │ ├── TileEntityDispenser.java.patch │ │ │ ├── TileEntityDropper.java.patch │ │ │ ├── TileEntityEndPortal.java.patch │ │ │ ├── TileEntityFlowerPot.java.patch │ │ │ ├── TileEntityFurnace.java.patch │ │ │ ├── TileEntityHopper.java.patch │ │ │ ├── TileEntityNote.java.patch │ │ │ ├── TileEntityPiston.java.patch │ │ │ ├── TileEntitySign.java.patch │ │ │ └── TileEntitySkull.java.patch │ │ ├── util │ │ │ ├── ChunkCoordinates.java.patch │ │ │ ├── EntityDamageSourceIndirect.java.patch │ │ │ ├── FoodStats.java.patch │ │ │ ├── IntHashMap.java.patch │ │ │ ├── MessageDeserializer.java.patch │ │ │ ├── RegistryNamespaced.java.patch │ │ │ └── WeightedRandomFishable.java.patch │ │ ├── village │ │ │ ├── Village.java.patch │ │ │ └── VillageSiege.java.patch │ │ └── world │ │ │ ├── Explosion.java.patch │ │ │ ├── NextTickListEntry.java.patch │ │ │ ├── SpawnerAnimals.java.patch │ │ │ ├── Teleporter.java.patch │ │ │ ├── World.java.patch │ │ │ ├── WorldManager.java.patch │ │ │ ├── WorldServer.java.patch │ │ │ ├── WorldServerMulti.java.patch │ │ │ ├── WorldType.java.patch │ │ │ ├── biome │ │ │ ├── BiomeDecorator.java.patch │ │ │ └── WorldChunkManager.java.patch │ │ │ ├── chunk │ │ │ ├── Chunk.java.patch │ │ │ ├── EmptyChunk.java.patch │ │ │ ├── NibbleArray.java.patch │ │ │ └── storage │ │ │ │ ├── AnvilChunkLoader.java.patch │ │ │ │ ├── AnvilSaveHandler.java.patch │ │ │ │ ├── ChunkLoader.java.patch │ │ │ │ ├── ExtendedBlockStorage.java.patch │ │ │ │ ├── RegionFile.java.patch │ │ │ │ └── RegionFileCache.java.patch │ │ │ ├── gen │ │ │ ├── ChunkProviderGenerate.java.patch │ │ │ ├── ChunkProviderServer.java.patch │ │ │ ├── FlatLayerInfo.java.patch │ │ │ ├── feature │ │ │ │ ├── WorldGenIceSpike.java.patch │ │ │ │ ├── WorldGenShrub.java.patch │ │ │ │ └── WorldGeneratorBonusChest.java.patch │ │ │ ├── layer │ │ │ │ └── GenLayerRareBiome.java.patch │ │ │ └── structure │ │ │ │ ├── MapGenStronghold.java.patch │ │ │ │ ├── MapGenStructure.java.patch │ │ │ │ └── StructureStart.java.patch │ │ │ └── storage │ │ │ ├── DerivedWorldInfo.java.patch │ │ │ ├── ISaveHandler.java.patch │ │ │ ├── MapData.java.patch │ │ │ ├── SaveHandler.java.patch │ │ │ ├── SaveHandlerMP.java.patch │ │ │ ├── ThreadedFileIOBase.java.patch │ │ │ └── WorldInfo.java.patch │ └── minecraftforge │ │ ├── common │ │ ├── DimensionManager.java.patch │ │ ├── ForgeChunkManager.java.patch │ │ ├── ForgeHooks.java.patch │ │ ├── ForgeVersion.java.patch │ │ ├── ISpecialArmor.java.patch │ │ ├── WorldSpecificSaveHandler.java.patch │ │ ├── chunkio │ │ │ ├── ChunkIOExecutor.java.patch │ │ │ └── ChunkIOProvider.java.patch │ │ ├── network │ │ │ └── ForgeNetworkHandler.java.patch │ │ └── util │ │ │ ├── EnumHelper.java.patch │ │ │ └── FakePlayerFactory.java.patch │ │ ├── event │ │ ├── ForgeEventFactory.java.patch │ │ ├── entity │ │ │ ├── living │ │ │ │ └── LivingSpawnEvent.java.patch │ │ │ └── player │ │ │ │ └── PlayerInteractEvent.java.patch │ │ └── world │ │ │ ├── BlockEvent.java.patch │ │ │ └── ExplosionEvent.java.patch │ │ ├── fluids │ │ └── BlockFluidClassic.java.patch │ │ └── oredict │ │ ├── OreDictionary.java.patch │ │ ├── ShapedOreRecipe.java.patch │ │ └── ShapelessOreRecipe.java.patch └── org │ └── bukkit │ ├── Bukkit.java.patch │ ├── Effect.java.patch │ ├── GameMode.java.patch │ ├── Material.java.patch │ ├── Server.java.patch │ ├── World.java.patch │ ├── command │ ├── Command.java.patch │ ├── SimpleCommandMap.java.patch │ └── defaults │ │ ├── AchievementCommand.java.patch │ │ ├── BanIpCommand.java.patch │ │ ├── DeopCommand.java.patch │ │ ├── GameModeCommand.java.patch │ │ ├── OpCommand.java.patch │ │ ├── PluginsCommand.java.patch │ │ ├── ReloadCommand.java.patch │ │ ├── SpreadPlayersCommand.java.patch │ │ ├── TellCommand.java.patch │ │ ├── TestForCommand.java.patch │ │ ├── TimingsCommand.java.patch │ │ ├── VersionCommand.java.patch │ │ └── WhitelistCommand.java.patch │ ├── configuration │ └── MemorySection.java.patch │ ├── conversations │ ├── BooleanPrompt.java.patch │ └── Conversation.java.patch │ ├── entity │ ├── Arrow.java.patch │ ├── Entity.java.patch │ └── Player.java.patch │ ├── event │ ├── entity │ │ ├── EntityDamageByBlockEvent.java.patch │ │ ├── EntityDamageByEntityEvent.java.patch │ │ └── EntityDamageEvent.java.patch │ ├── inventory │ │ └── InventoryClickEvent.java.patch │ └── player │ │ ├── PlayerChatTabCompleteEvent.java.patch │ │ ├── PlayerLoginEvent.java.patch │ │ └── PlayerTeleportEvent.java.patch │ ├── material │ └── Cake.java.patch │ ├── plugin │ ├── SimplePluginManager.java.patch │ ├── SimpleServicesManager.java.patch │ ├── TimedRegisteredListener.java.patch │ ├── java │ │ ├── JavaPluginLoader.java.patch │ │ └── PluginClassLoader.java.patch │ └── messaging │ │ ├── Messenger.java.patch │ │ └── StandardMessenger.java.patch │ └── potion │ └── PotionEffectType.java.patch ├── scripts ├── build.sh ├── clean.sh ├── reformat.sh └── setup.sh ├── settings.gradle ├── src └── main │ ├── guava10.zip │ ├── guava17.zip │ ├── java │ ├── jline │ │ ├── AnsiWindowsTerminal.java │ │ └── internal │ │ │ └── TerminalLineSettings.java │ ├── net │ │ ├── md_5 │ │ │ └── bungee │ │ │ │ ├── api │ │ │ │ ├── ChatColor.java │ │ │ │ ├── ChatMessageType.java │ │ │ │ └── chat │ │ │ │ │ ├── BaseComponent.java │ │ │ │ │ ├── ClickEvent.java │ │ │ │ │ ├── ComponentBuilder.java │ │ │ │ │ ├── HoverEvent.java │ │ │ │ │ ├── TextComponent.java │ │ │ │ │ └── TranslatableComponent.java │ │ │ │ └── chat │ │ │ │ ├── BaseComponentSerializer.java │ │ │ │ ├── ComponentSerializer.java │ │ │ │ ├── TextComponentSerializer.java │ │ │ │ └── TranslatableComponentSerializer.java │ │ ├── minecraft │ │ │ ├── entity │ │ │ │ └── EntityMinecartCommandBlockListener.java │ │ │ ├── inventory │ │ │ │ ├── ContainerEnchantTableInventory.java │ │ │ │ └── ContainerRepairInventory.java │ │ │ ├── server │ │ │ │ └── network │ │ │ │ │ └── ThreadPlayerLookupUUID.java │ │ │ ├── tileentity │ │ │ │ └── TileEntityCommandBlockListener.java │ │ │ └── world │ │ │ │ └── Coords.java │ │ └── minecraftforge │ │ │ └── cauldron │ │ │ ├── CauldronHooks.java │ │ │ ├── CauldronUtils.java │ │ │ ├── CompatibilityMarker.java │ │ │ ├── SushchestvoCache.java │ │ │ ├── TileEntityCache.java │ │ │ ├── VersionInfo.java │ │ │ ├── api │ │ │ ├── Cauldron.java │ │ │ ├── CauldronApi.java │ │ │ ├── Fishing.java │ │ │ ├── WeightedRandomFishable.java │ │ │ └── inventory │ │ │ │ ├── BukkitOreDictionary.java │ │ │ │ └── OreDictionaryEntry.java │ │ │ ├── apiimpl │ │ │ ├── CauldronPluginInterface.java │ │ │ ├── FishingInterface.java │ │ │ └── inventory │ │ │ │ └── OreDictionaryInterface.java │ │ │ ├── block │ │ │ └── CraftCustomContainer.java │ │ │ ├── command │ │ │ ├── CauldronCommand.java │ │ │ ├── SushchestvoCommand.java │ │ │ └── TileEntityCommand.java │ │ │ ├── configuration │ │ │ ├── ArraySetting.java │ │ │ ├── BoolSetting.java │ │ │ ├── CauldronConfig.java │ │ │ ├── CauldronWorldConfig.java │ │ │ ├── ConfigBase.java │ │ │ ├── IntArraySetting.java │ │ │ ├── IntSetting.java │ │ │ ├── ItemDataArraySetting.java │ │ │ ├── Setting.java │ │ │ ├── StringArraySetting.java │ │ │ ├── StringSetting.java │ │ │ ├── SushchestvoConfig.java │ │ │ ├── SushchestvoWorldConfig.java │ │ │ ├── TileEntityConfig.java │ │ │ ├── TileEntityWorldConfig.java │ │ │ └── WorldConfig.java │ │ │ ├── entity │ │ │ └── CraftCustomEntity.java │ │ │ └── inventory │ │ │ ├── CraftCustomInventory.java │ │ │ ├── CraftCustomInventoryView.java │ │ │ └── CustomModRecipe.java │ ├── org │ │ ├── apache │ │ │ └── logging │ │ │ │ └── log4j │ │ │ │ └── core │ │ │ │ └── appender │ │ │ │ └── ConsoleAppender.java │ │ ├── bukkit │ │ │ ├── craftbukkit │ │ │ │ ├── CraftArt.java │ │ │ │ ├── CraftChunk.java │ │ │ │ ├── CraftChunkSnapshot.java │ │ │ │ ├── CraftCrashReport.java │ │ │ │ ├── CraftEffect.java │ │ │ │ ├── CraftIpBanEntry.java │ │ │ │ ├── CraftIpBanList.java │ │ │ │ ├── CraftOfflinePlayer.java │ │ │ │ ├── CraftProfileBanEntry.java │ │ │ │ ├── CraftProfileBanList.java │ │ │ │ ├── CraftServer.java │ │ │ │ ├── CraftSound.java │ │ │ │ ├── CraftStatistic.java │ │ │ │ ├── CraftTravelAgent.java │ │ │ │ ├── CraftWorld.java │ │ │ │ ├── LoggerOutputStream.java │ │ │ │ ├── Overridden.java │ │ │ │ ├── SpigotTimings.java │ │ │ │ ├── TrigMath.java │ │ │ │ ├── block │ │ │ │ │ ├── CraftBeacon.java │ │ │ │ │ ├── CraftBlock.java │ │ │ │ │ ├── CraftBlockState.java │ │ │ │ │ ├── CraftBrewingStand.java │ │ │ │ │ ├── CraftChest.java │ │ │ │ │ ├── CraftCommandBlock.java │ │ │ │ │ ├── CraftCreatureSpawner.java │ │ │ │ │ ├── CraftDispenser.java │ │ │ │ │ ├── CraftDropper.java │ │ │ │ │ ├── CraftFurnace.java │ │ │ │ │ ├── CraftHopper.java │ │ │ │ │ ├── CraftJukebox.java │ │ │ │ │ ├── CraftNoteBlock.java │ │ │ │ │ ├── CraftSign.java │ │ │ │ │ └── CraftSkull.java │ │ │ │ ├── command │ │ │ │ │ ├── ColouredConsoleSender.java │ │ │ │ │ ├── ConsoleCommandCompleter.java │ │ │ │ │ ├── CraftBlockCommandSender.java │ │ │ │ │ ├── CraftConsoleCommandSender.java │ │ │ │ │ ├── CraftRemoteConsoleCommandSender.java │ │ │ │ │ ├── CraftSimpleCommandMap.java │ │ │ │ │ ├── ModCustomCommand.java │ │ │ │ │ ├── ServerCommandSender.java │ │ │ │ │ ├── TicksPerSecondCommand.java │ │ │ │ │ └── VanillaCommandWrapper.java │ │ │ │ ├── conversations │ │ │ │ │ └── ConversationTracker.java │ │ │ │ ├── enchantments │ │ │ │ │ └── CraftEnchantment.java │ │ │ │ ├── entity │ │ │ │ │ ├── AbstractProjectile.java │ │ │ │ │ ├── CraftAgeable.java │ │ │ │ │ ├── CraftAmbient.java │ │ │ │ │ ├── CraftAnimals.java │ │ │ │ │ ├── CraftArrow.java │ │ │ │ │ ├── CraftBat.java │ │ │ │ │ ├── CraftBlaze.java │ │ │ │ │ ├── CraftBoat.java │ │ │ │ │ ├── CraftCaveSpider.java │ │ │ │ │ ├── CraftChicken.java │ │ │ │ │ ├── CraftComplexLivingEntity.java │ │ │ │ │ ├── CraftComplexPart.java │ │ │ │ │ ├── CraftCow.java │ │ │ │ │ ├── CraftCreature.java │ │ │ │ │ ├── CraftCreeper.java │ │ │ │ │ ├── CraftEgg.java │ │ │ │ │ ├── CraftEnderCrystal.java │ │ │ │ │ ├── CraftEnderDragon.java │ │ │ │ │ ├── CraftEnderDragonPart.java │ │ │ │ │ ├── CraftEnderPearl.java │ │ │ │ │ ├── CraftEnderSignal.java │ │ │ │ │ ├── CraftEnderman.java │ │ │ │ │ ├── CraftEntity.java │ │ │ │ │ ├── CraftExperienceOrb.java │ │ │ │ │ ├── CraftFallingSand.java │ │ │ │ │ ├── CraftFireball.java │ │ │ │ │ ├── CraftFirework.java │ │ │ │ │ ├── CraftFish.java │ │ │ │ │ ├── CraftFlying.java │ │ │ │ │ ├── CraftGhast.java │ │ │ │ │ ├── CraftGiant.java │ │ │ │ │ ├── CraftGolem.java │ │ │ │ │ ├── CraftHanging.java │ │ │ │ │ ├── CraftHorse.java │ │ │ │ │ ├── CraftHumanEntity.java │ │ │ │ │ ├── CraftIronGolem.java │ │ │ │ │ ├── CraftItem.java │ │ │ │ │ ├── CraftItemFrame.java │ │ │ │ │ ├── CraftLargeFireball.java │ │ │ │ │ ├── CraftLeash.java │ │ │ │ │ ├── CraftLightningStrike.java │ │ │ │ │ ├── CraftLivingEntity.java │ │ │ │ │ ├── CraftMagmaCube.java │ │ │ │ │ ├── CraftMinecart.java │ │ │ │ │ ├── CraftMinecartChest.java │ │ │ │ │ ├── CraftMinecartCommand.java │ │ │ │ │ ├── CraftMinecartFurnace.java │ │ │ │ │ ├── CraftMinecartHopper.java │ │ │ │ │ ├── CraftMinecartMobSpawner.java │ │ │ │ │ ├── CraftMinecartRideable.java │ │ │ │ │ ├── CraftMinecartTNT.java │ │ │ │ │ ├── CraftMonster.java │ │ │ │ │ ├── CraftMushroomCow.java │ │ │ │ │ ├── CraftOcelot.java │ │ │ │ │ ├── CraftPainting.java │ │ │ │ │ ├── CraftPig.java │ │ │ │ │ ├── CraftPigZombie.java │ │ │ │ │ ├── CraftPlayer.java │ │ │ │ │ ├── CraftProjectile.java │ │ │ │ │ ├── CraftSheep.java │ │ │ │ │ ├── CraftSilverfish.java │ │ │ │ │ ├── CraftSkeleton.java │ │ │ │ │ ├── CraftSlime.java │ │ │ │ │ ├── CraftSmallFireball.java │ │ │ │ │ ├── CraftSnowball.java │ │ │ │ │ ├── CraftSnowman.java │ │ │ │ │ ├── CraftSpider.java │ │ │ │ │ ├── CraftSquid.java │ │ │ │ │ ├── CraftTNTPrimed.java │ │ │ │ │ ├── CraftTameableAnimal.java │ │ │ │ │ ├── CraftThrownExpBottle.java │ │ │ │ │ ├── CraftThrownPotion.java │ │ │ │ │ ├── CraftVehicle.java │ │ │ │ │ ├── CraftVillager.java │ │ │ │ │ ├── CraftWaterMob.java │ │ │ │ │ ├── CraftWeather.java │ │ │ │ │ ├── CraftWitch.java │ │ │ │ │ ├── CraftWither.java │ │ │ │ │ ├── CraftWitherSkull.java │ │ │ │ │ ├── CraftWolf.java │ │ │ │ │ └── CraftZombie.java │ │ │ │ ├── event │ │ │ │ │ └── CraftEventFactory.java │ │ │ │ ├── generator │ │ │ │ │ ├── CustomChunkGenerator.java │ │ │ │ │ ├── InternalChunkGenerator.java │ │ │ │ │ ├── NetherChunkGenerator.java │ │ │ │ │ ├── NormalChunkGenerator.java │ │ │ │ │ └── SkyLandsChunkGenerator.java │ │ │ │ ├── help │ │ │ │ │ ├── CommandAliasHelpTopic.java │ │ │ │ │ ├── CustomHelpTopic.java │ │ │ │ │ ├── CustomIndexHelpTopic.java │ │ │ │ │ ├── HelpTopicAmendment.java │ │ │ │ │ ├── HelpYamlReader.java │ │ │ │ │ ├── MultipleCommandAliasHelpTopic.java │ │ │ │ │ ├── MultipleCommandAliasHelpTopicFactory.java │ │ │ │ │ └── SimpleHelpMap.java │ │ │ │ ├── inventory │ │ │ │ │ ├── CraftContainer.java │ │ │ │ │ ├── CraftEntityEquipment.java │ │ │ │ │ ├── CraftFurnaceRecipe.java │ │ │ │ │ ├── CraftInventory.java │ │ │ │ │ ├── CraftInventoryAnvil.java │ │ │ │ │ ├── CraftInventoryBeacon.java │ │ │ │ │ ├── CraftInventoryBrewer.java │ │ │ │ │ ├── CraftInventoryCrafting.java │ │ │ │ │ ├── CraftInventoryCustom.java │ │ │ │ │ ├── CraftInventoryDoubleChest.java │ │ │ │ │ ├── CraftInventoryEnchanting.java │ │ │ │ │ ├── CraftInventoryFurnace.java │ │ │ │ │ ├── CraftInventoryHorse.java │ │ │ │ │ ├── CraftInventoryMerchant.java │ │ │ │ │ ├── CraftInventoryPlayer.java │ │ │ │ │ ├── CraftInventoryView.java │ │ │ │ │ ├── CraftItemFactory.java │ │ │ │ │ ├── CraftItemStack.java │ │ │ │ │ ├── CraftMetaBook.java │ │ │ │ │ ├── CraftMetaCharge.java │ │ │ │ │ ├── CraftMetaEnchantedBook.java │ │ │ │ │ ├── CraftMetaFirework.java │ │ │ │ │ ├── CraftMetaItem.java │ │ │ │ │ ├── CraftMetaLeatherArmor.java │ │ │ │ │ ├── CraftMetaMap.java │ │ │ │ │ ├── CraftMetaPotion.java │ │ │ │ │ ├── CraftMetaSkull.java │ │ │ │ │ ├── CraftRecipe.java │ │ │ │ │ ├── CraftShapedRecipe.java │ │ │ │ │ ├── CraftShapelessRecipe.java │ │ │ │ │ ├── InventoryIterator.java │ │ │ │ │ └── RecipeIterator.java │ │ │ │ ├── map │ │ │ │ │ ├── CraftMapCanvas.java │ │ │ │ │ ├── CraftMapRenderer.java │ │ │ │ │ ├── CraftMapView.java │ │ │ │ │ └── RenderData.java │ │ │ │ ├── metadata │ │ │ │ │ ├── BlockMetadataStore.java │ │ │ │ │ ├── EntityMetadataStore.java │ │ │ │ │ ├── PlayerMetadataStore.java │ │ │ │ │ └── WorldMetadataStore.java │ │ │ │ ├── potion │ │ │ │ │ ├── CraftPotionBrewer.java │ │ │ │ │ └── CraftPotionEffectType.java │ │ │ │ ├── projectiles │ │ │ │ │ └── CraftBlockProjectileSource.java │ │ │ │ ├── scheduler │ │ │ │ │ ├── CraftAsyncDebugger.java │ │ │ │ │ ├── CraftAsyncTask.java │ │ │ │ │ ├── CraftFuture.java │ │ │ │ │ ├── CraftScheduler.java │ │ │ │ │ └── CraftTask.java │ │ │ │ ├── scoreboard │ │ │ │ │ ├── CraftCriteria.java │ │ │ │ │ ├── CraftObjective.java │ │ │ │ │ ├── CraftScore.java │ │ │ │ │ ├── CraftScoreboard.java │ │ │ │ │ ├── CraftScoreboardComponent.java │ │ │ │ │ ├── CraftScoreboardManager.java │ │ │ │ │ ├── CraftScoreboardTranslations.java │ │ │ │ │ └── CraftTeam.java │ │ │ │ ├── updater │ │ │ │ │ ├── ArtifactDetails.java │ │ │ │ │ ├── AutoUpdater.java │ │ │ │ │ └── BukkitDLUpdaterService.java │ │ │ │ └── util │ │ │ │ │ ├── AsynchronousExecutor.java │ │ │ │ │ ├── BlockStateListPopulator.java │ │ │ │ │ ├── CraftChatMessage.java │ │ │ │ │ ├── CraftDamageSource.java │ │ │ │ │ ├── CraftIconCache.java │ │ │ │ │ ├── CraftMagicNumbers.java │ │ │ │ │ ├── DatFileFilter.java │ │ │ │ │ ├── ForwardLogHandler.java │ │ │ │ │ ├── Java15Compat.java │ │ │ │ │ ├── LazyHashSet.java │ │ │ │ │ ├── LazyPlayerSet.java │ │ │ │ │ ├── LongHash.java │ │ │ │ │ ├── LongHashSet.java │ │ │ │ │ ├── LongObjectHashMap.java │ │ │ │ │ ├── MojangNameLookup.java │ │ │ │ │ ├── ServerShutdownThread.java │ │ │ │ │ ├── ShortConsoleLogFormatter.java │ │ │ │ │ ├── StructureGrowDelegate.java │ │ │ │ │ ├── TerminalConsoleWriterThread.java │ │ │ │ │ ├── UnsafeList.java │ │ │ │ │ ├── Versioning.java │ │ │ │ │ ├── Waitable.java │ │ │ │ │ └── WeakCollection.java │ │ │ └── event │ │ │ │ └── player │ │ │ │ └── PlayerItemDamageEvent.java │ │ └── spigotmc │ │ │ ├── ActivationRange.java │ │ │ ├── AntiXray.java │ │ │ ├── CustomTimingsHandler.java │ │ │ ├── Metrics.java │ │ │ ├── RestartCommand.java │ │ │ ├── SpigotConfig.java │ │ │ ├── SpigotWorldConfig.java │ │ │ ├── TickLimiter.java │ │ │ ├── TicksPerSecondCommand.java │ │ │ ├── TrackingRange.java │ │ │ ├── VanillaCommandWrapper.java │ │ │ ├── WatchdogThread.java │ │ │ └── event │ │ │ └── entity │ │ │ ├── EntityDismountEvent.java │ │ │ └── EntityMountEvent.java │ └── thermos │ │ ├── BlockCoords.java │ │ ├── CraftInventoryWrapper.java │ │ ├── TLog.java │ │ ├── Thermos.java │ │ ├── ThermosClassTransformer.java │ │ ├── ThermosCommand.java │ │ ├── ThermosConfig.java │ │ ├── ThermosRemapper.java │ │ ├── chaud │ │ ├── DesUtils.java │ │ └── HashedArrayList.java │ │ ├── entity │ │ └── CustomProjectileEntity.java │ │ ├── event │ │ └── BeaconEffectEvent.java │ │ ├── thermite │ │ ├── ThermiteRandom.java │ │ ├── ThermiteTeleportationHandler.java │ │ └── ThermiteTeleporter.java │ │ ├── updater │ │ ├── CommandSenderUpdateCallback.java │ │ ├── DefaultUpdateCallback.java │ │ └── TVersionRetriever.java │ │ └── wrapper │ │ ├── ChunkBlockHashMap.java │ │ ├── LongHashMapTrove.java │ │ ├── ThermiteMap.java │ │ └── VanillaChunkHashMap.java │ ├── mappings.zip │ └── resources │ ├── configurations │ ├── bukkit.yml │ ├── commands.yml │ └── help.yml │ ├── fmlversion.properties │ └── log4j2.xml ├── tasks.txt └── travii └── make.sh /.gitattributes: -------------------------------------------------------------------------------- 1 | * text eol=lf 2 | *.bat text eol=crlf 3 | *.patch text eol=lf 4 | *.cfg text eol=lf 5 | *.py text eol=lf 6 | *.png binary 7 | *.exe binary 8 | *.dll binary 9 | *.zip binary 10 | *.pyd binary 11 | *.jar binary 12 | *.lzma binary -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | !.gitignore 2 | 3 | # eclipse 4 | /eclipse 5 | 6 | # idea 7 | .idea/ 8 | *.iml 9 | 10 | # gradle 11 | build 12 | .gradle 13 | 14 | *.DS_Store 15 | # various other potential build files 16 | /build 17 | 18 | /projects 19 | /plugin 20 | /eclipse 21 | /.gradle 22 | 23 | # intellij 24 | *.ipr 25 | *.iws 26 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "bukkit"] 2 | path = bukkit 3 | url = https://github.com/CyberdyneCC/Thermos-Bukkit 4 | [submodule "forge"] 5 | path = forge 6 | url = https://github.com/MinecraftForge/MinecraftForge.git 7 | branch = 1.7.10 8 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: java 2 | jdk: 3 | - oraclejdk8 4 | before_install: git submodule update --init --recursive 5 | install: echo "WOO, time to take over the world!" 6 | before_script: find . 7 | before_cache: 8 | - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock 9 | cache: 10 | directories: 11 | - "$HOME/.gradle/caches/2.8/" 12 | - "$HOME/.gradle/wrapper/" 13 | - "$HOME/build/distributions/" 14 | - "$HOME/release/" 15 | script: "./travii/make.sh" 16 | deploy: 17 | provider: releases 18 | file_glob: true 19 | skip_cleanup: true 20 | file: "$HOME/release/*" 21 | on: 22 | repo: djoveryde/Contigo 23 | tags: true 24 | -------------------------------------------------------------------------------- /FGS.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djoveryde/Contigo/0c7f04aa6e705823fb064f1ab72362808ddb0b19/FGS.jar -------------------------------------------------------------------------------- /ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | You will receive NO SUPPORT if you do not follow the template below. (Vous ne receverez pas aucune aide si vous effacer ce modèle) 2 | 3 | **Server Log:** *(Use [Pastebin](http://pastebin.com/) or [Github Gist](https://gist.github.com/))* 4 | 5 | **FML Log(s):** *(Use [Pastebin](http://pastebin.com/) or [Github Gist](https://gist.github.com/))* 6 | 7 | **Explanation of issue:** 8 | 9 | **How to recreate this issue:** 10 | 11 | **Modpack Name:** *(Only if public)* 12 | 13 | **Mods Installed:** 14 | 15 | **Plugins Installed:** 16 | 17 | **Warmroast Report:** *(Optional)* 18 | 19 | **Thermos Version:** 20 | 21 | **Forge Version:** 22 | -------------------------------------------------------------------------------- /buildSrc/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'groovy' 2 | 3 | dependencies { 4 | compile gradleApi() 5 | compile localGroovy() 6 | } 7 | -------------------------------------------------------------------------------- /buildSrc/src/main/groovy/thermos/VersionParser.groovy: -------------------------------------------------------------------------------- 1 | package thermos 2 | 3 | import java.util.regex.Matcher 4 | 5 | class VersionParser { 6 | public static String parseForgeVersion(File forgeFile, File propsFile) { 7 | def forgeVersion = forgeFile.text 8 | def int majorVersion = v(forgeVersion =~ /.+int majorVersion\s+=\s+(\d+);/) 9 | def int minorVersion = v(forgeVersion =~ /.+int minorVersion\s+=\s+(\d+);/) 10 | def int revisionVersion = v(forgeVersion =~ /.+int revisionVersion\s+=\s+(\d+);/) 11 | def int buildVersion = parseForgeRevision propsFile 12 | return "${majorVersion}.${minorVersion}.${revisionVersion}.${buildVersion}" 13 | } 14 | 15 | def static int parseForgeRevision(File propsFile) { 16 | def props = new Properties(); 17 | propsFile.withInputStream { props.load(it) } 18 | props['fmlbuild.build.number'] as int 19 | } 20 | 21 | 22 | static int v(Matcher matcher) { 23 | matcher.find() 24 | matcher.group(1) as int 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /contigo_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djoveryde/Contigo/0c7f04aa6e705823fb064f1ab72362808ddb0b19/contigo_icon.png -------------------------------------------------------------------------------- /eclipse-workspace-dev.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djoveryde/Contigo/0c7f04aa6e705823fb064f1ab72362808ddb0b19/eclipse-workspace-dev.zip -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djoveryde/Contigo/0c7f04aa6e705823fb064f1ab72362808ddb0b19/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Sun Aug 27 18:59:17 CDT 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.13-bin.zip 7 | -------------------------------------------------------------------------------- /patches/cpw/mods/fml/common/asm/FMLSanityChecker.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/cpw/mods/fml/common/asm/FMLSanityChecker.java 2 | +++ ../src-work/minecraft/cpw/mods/fml/common/asm/FMLSanityChecker.java 3 | @@ -164,10 +164,12 @@ 4 | FMLRelaunchLog.severe("Technical information: ClientBrandRetriever was at %s, there were %d certificates for it", codeSource.getLocation(), certCount); 5 | } 6 | } 7 | - if (!goodFML) 8 | + // Cauldron start - disable message 9 | + /*if (!goodFML) 10 | { 11 | FMLRelaunchLog.severe("FML appears to be missing any signature data. This is not a good thing"); 12 | - } 13 | + }*/ 14 | + // Cauldron end 15 | return null; 16 | } 17 | 18 | -------------------------------------------------------------------------------- /patches/cpw/mods/fml/common/asm/transformers/SideTransformer.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/cpw/mods/fml/common/asm/transformers/SideTransformer.java 2 | +++ ../src-work/minecraft/cpw/mods/fml/common/asm/transformers/SideTransformer.java 3 | @@ -32,6 +32,7 @@ 4 | { 5 | private static String SIDE = FMLLaunchHandler.side().name(); 6 | private static final boolean DEBUG = false; 7 | + public static boolean allowInvalidSide = false; // Cauldron 8 | @Override 9 | public byte[] transform(String name, String transformedName, byte[] bytes) 10 | { 11 | @@ -41,7 +42,7 @@ 12 | ClassReader classReader = new ClassReader(bytes); 13 | classReader.accept(classNode, 0); 14 | 15 | - if (remove((List)classNode.visibleAnnotations, SIDE)) 16 | + if (remove((List)classNode.visibleAnnotations, SIDE) && !allowInvalidSide) // Cauldron 17 | { 18 | if (DEBUG) 19 | { 20 | -------------------------------------------------------------------------------- /patches/cpw/mods/fml/common/asm/transformers/TerminalTransformer.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/cpw/mods/fml/common/asm/transformers/TerminalTransformer.java 2 | +++ ../src-work/minecraft/cpw/mods/fml/common/asm/transformers/TerminalTransformer.java 3 | @@ -46,7 +46,8 @@ 4 | clsName.equals("net/minecraft/server/dedicated/DedicatedServer") || 5 | clsName.equals("cpw/mods/fml/common/FMLCommonHandler") || 6 | clsName.startsWith("com/jcraft/jogg/") || 7 | - clsName.startsWith("scala/sys/") 8 | + clsName.startsWith("scala/sys/") || 9 | + clsName.startsWith("net/md_5/specialsource") 10 | ); 11 | 12 | return new MethodVisitor(Opcodes.ASM5, super.visitMethod(mAccess, mName, mDesc, mSignature, mExceptions)) 13 | -------------------------------------------------------------------------------- /patches/cpw/mods/fml/common/event/FMLServerStartingEvent.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/cpw/mods/fml/common/event/FMLServerStartingEvent.java 2 | +++ ../src-work/minecraft/cpw/mods/fml/common/event/FMLServerStartingEvent.java 3 | @@ -16,6 +16,7 @@ 4 | import net.minecraft.command.ICommand; 5 | import net.minecraft.server.MinecraftServer; 6 | import cpw.mods.fml.common.LoaderState.ModState; 7 | +import org.bukkit.command.Command; // Cauldron 8 | 9 | public class FMLServerStartingEvent extends FMLStateEvent 10 | { 11 | @@ -43,4 +44,12 @@ 12 | CommandHandler ch = (CommandHandler) getServer().getCommandManager(); 13 | ch.registerCommand(command); 14 | } 15 | + 16 | + // Cauldron start - used for mods to register a Bukkit command 17 | + public void registerServerCommand(String fallbackPrefix, Command command) 18 | + { 19 | + org.bukkit.command.SimpleCommandMap commandMap = getServer().server.getCommandMap(); 20 | + commandMap.register(fallbackPrefix, command); 21 | + } 22 | + // Cauldron end 23 | } 24 | -------------------------------------------------------------------------------- /patches/cpw/mods/fml/common/launcher/FMLTweaker.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/cpw/mods/fml/common/launcher/FMLTweaker.java 2 | +++ ../src-work/minecraft/cpw/mods/fml/common/launcher/FMLTweaker.java 3 | @@ -32,7 +32,9 @@ 4 | System.setProperty("java.net.preferIPv4Stack", "true"); //Lets do this as early as possible. Vanilla does it in Main.main 5 | try 6 | { 7 | - System.setSecurityManager(new FMLSecurityManager()); 8 | + FMLSecurityManager sm = new FMLSecurityManager(); 9 | + sm.defman = System.getSecurityManager(); 10 | + System.setSecurityManager(sm); 11 | } 12 | catch (SecurityException se) 13 | { 14 | -------------------------------------------------------------------------------- /patches/cpw/mods/fml/common/network/FMLOutboundHandler.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/cpw/mods/fml/common/network/FMLOutboundHandler.java 2 | +++ ../src-work/minecraft/cpw/mods/fml/common/network/FMLOutboundHandler.java 3 | @@ -6,6 +6,7 @@ 4 | import io.netty.channel.embedded.EmbeddedChannel; 5 | import io.netty.util.AttributeKey; 6 | import java.util.List; 7 | +import net.minecraft.entity.player.EntityPlayer; 8 | import net.minecraft.entity.player.EntityPlayerMP; 9 | import net.minecraft.network.NetworkManager; 10 | import com.google.common.collect.ImmutableList; 11 | @@ -97,9 +98,9 @@ 12 | @Override 13 | public void validateArgs(Object args) 14 | { 15 | - if (!(args instanceof EntityPlayerMP)) 16 | + if (!(args instanceof EntityPlayer)) 17 | { 18 | - throw new RuntimeException("PLAYER target expects a Player arg"); 19 | + throw new RuntimeException("PLAYER target expects a Player arg... it is a " + args.getClass().getName()); 20 | } 21 | } 22 | @Override 23 | -------------------------------------------------------------------------------- /patches/cpw/mods/fml/common/network/internal/HandshakeCompletionHandler.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/cpw/mods/fml/common/network/internal/HandshakeCompletionHandler.java 2 | +++ ../src-work/minecraft/cpw/mods/fml/common/network/internal/HandshakeCompletionHandler.java 3 | @@ -13,8 +13,14 @@ 4 | @Override 5 | protected void channelRead0(ChannelHandlerContext ctx, CompleteHandshake msg) throws Exception 6 | { 7 | - NetworkDispatcher dispatcher = ctx.channel().attr(NetworkDispatcher.FML_DISPATCHER).getAndRemove(); 8 | - dispatcher.completeHandshake(msg.target); 9 | + // Cauldron start - attempt to fix race condition with attr being null 10 | + io.netty.util.Attribute attr = ctx.channel().attr(NetworkDispatcher.FML_DISPATCHER); 11 | + if (attr != null) 12 | + { 13 | + NetworkDispatcher dispatcher = attr.getAndRemove(); 14 | + if (dispatcher != null) dispatcher.completeHandshake(msg.target); 15 | + } 16 | + // Cauldron end 17 | } 18 | 19 | @Override 20 | -------------------------------------------------------------------------------- /patches/cpw/mods/fml/relauncher/FMLSecurityManager.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/cpw/mods/fml/relauncher/FMLSecurityManager.java 2 | +++ ../src-work/minecraft/cpw/mods/fml/relauncher/FMLSecurityManager.java 3 | @@ -10,6 +10,9 @@ 4 | * 5 | */ 6 | public class FMLSecurityManager extends SecurityManager { 7 | + 8 | + public SecurityManager defman; 9 | + 10 | @Override 11 | public void checkPermission(Permission perm) 12 | { 13 | @@ -29,6 +32,10 @@ 14 | { 15 | throw new SecurityException("Cannot replace the FML security manager"); 16 | } 17 | + else if ("register".equals(permName))// Allow the default security policy to be taken into consideration for "register"-ing 18 | + { 19 | + defman.checkPermission(perm); 20 | + } 21 | return; 22 | } 23 | 24 | -------------------------------------------------------------------------------- /patches/net/minecraft/block/BlockCocoa.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/block/BlockCocoa.java 2 | +++ ../src-work/minecraft/net/minecraft/block/BlockCocoa.java 3 | @@ -51,7 +51,8 @@ 4 | if (i1 < 2) 5 | { 6 | ++i1; 7 | - p_149674_1_.setBlockMetadataWithNotify(p_149674_2_, p_149674_3_, p_149674_4_, i1 << 2 | getDirection(l), 2); 8 | + // CraftBukkit 9 | + org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(p_149674_1_, p_149674_2_, p_149674_3_, p_149674_4_, this, i1 << 2 | getDirection(l)); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /patches/net/minecraft/block/BlockCrops.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/block/BlockCrops.java 2 | +++ ../src-work/minecraft/net/minecraft/block/BlockCrops.java 3 | @@ -49,10 +49,9 @@ 4 | { 5 | float f = this.func_149864_n(p_149674_1_, p_149674_2_, p_149674_3_, p_149674_4_); 6 | 7 | - if (p_149674_5_.nextInt((int)(25.0F / f) + 1) == 0) 8 | + if (p_149674_5_.nextInt((int)(p_149674_1_.growthOdds / p_149674_1_.getSpigotConfig().wheatModifier * (25.0F / f)) + 1) == 0) // Spigot // Cauldron 9 | { 10 | - ++l; 11 | - p_149674_1_.setBlockMetadataWithNotify(p_149674_2_, p_149674_3_, p_149674_4_, l, 2); 12 | + org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(p_149674_1_, p_149674_2_, p_149674_3_, p_149674_4_, this, ++l); // CraftBukkit 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /patches/net/minecraft/block/BlockDaylightDetector.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/block/BlockDaylightDetector.java 2 | +++ ../src-work/minecraft/net/minecraft/block/BlockDaylightDetector.java 3 | @@ -73,6 +73,7 @@ 4 | 5 | if (l != i1) 6 | { 7 | + i1 = org.bukkit.craftbukkit.event.CraftEventFactory.callRedstoneChange(p_149957_1_, p_149957_2_, p_149957_3_, p_149957_4_, l, i1).getNewCurrent(); // CraftBukkit - Call BlockRedstoneEvent 8 | p_149957_1_.setBlockMetadataWithNotify(p_149957_2_, p_149957_3_, p_149957_4_, i1, 3); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /patches/net/minecraft/block/BlockEndPortal.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/block/BlockEndPortal.java 2 | +++ ../src-work/minecraft/net/minecraft/block/BlockEndPortal.java 3 | @@ -15,6 +15,8 @@ 4 | import net.minecraft.world.IBlockAccess; 5 | import net.minecraft.world.World; 6 | 7 | +import org.bukkit.event.entity.EntityPortalEnterEvent; // CraftBukkit 8 | + 9 | public class BlockEndPortal extends BlockContainer 10 | { 11 | public static boolean field_149948_a; 12 | @@ -64,6 +66,10 @@ 13 | { 14 | if (p_149670_5_.ridingEntity == null && p_149670_5_.riddenByEntity == null && !p_149670_1_.isRemote) 15 | { 16 | + // CraftBukkit start - Entity in portal 17 | + EntityPortalEnterEvent event = new EntityPortalEnterEvent(p_149670_5_.getBukkitEntity(), new org.bukkit.Location(p_149670_1_.getWorld(), p_149670_2_, p_149670_3_, p_149670_4_)); 18 | + p_149670_1_.getServer().getPluginManager().callEvent(event); 19 | + // CraftBukkit end 20 | p_149670_5_.travelToDimension(1); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /patches/net/minecraft/block/BlockFalling.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/block/BlockFalling.java 2 | +++ ../src-work/minecraft/net/minecraft/block/BlockFalling.java 3 | @@ -1,7 +1,7 @@ 4 | package net.minecraft.block; 5 | 6 | import java.util.Random; 7 | -import net.minecraft.block.material.Material; 8 | +import net.minecraft.block.material.*; 9 | import net.minecraft.creativetab.CreativeTabs; 10 | import net.minecraft.entity.item.EntityFallingBlock; 11 | import net.minecraft.init.Blocks; 12 | @@ -96,7 +96,7 @@ 13 | { 14 | //TODO: King, take a look here when doing liquids! 15 | Material material = block.blockMaterial; 16 | - return material == Material.water ? true : material == Material.lava; 17 | + return material == Material.water || material == Material.lava || material instanceof MaterialLiquid; 18 | } 19 | } 20 | 21 | -------------------------------------------------------------------------------- /patches/net/minecraft/block/BlockHopper.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/block/BlockHopper.java 2 | +++ ../src-work/minecraft/net/minecraft/block/BlockHopper.java 3 | @@ -22,6 +22,7 @@ 4 | import net.minecraft.util.IIcon; 5 | import net.minecraft.world.IBlockAccess; 6 | import net.minecraft.world.World; 7 | +import net.minecraft.inventory.IInventory; // CraftBukkit 8 | 9 | public class BlockHopper extends BlockContainer 10 | { 11 | @@ -210,7 +211,7 @@ 12 | 13 | public static int getDirectionFromMetadata(int p_149918_0_) 14 | { 15 | - return p_149918_0_ & 7; 16 | + return Math.min(p_149918_0_ & 7, 5); // CraftBukkit - Fix AIOOBE in callers 17 | } 18 | 19 | public static boolean func_149917_c(int p_149917_0_) 20 | -------------------------------------------------------------------------------- /patches/net/minecraft/block/BlockIce.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/block/BlockIce.java 2 | +++ ../src-work/minecraft/net/minecraft/block/BlockIce.java 3 | @@ -86,6 +86,14 @@ 4 | { 5 | if (p_149674_1_.getSavedLightValue(EnumSkyBlock.Block, p_149674_2_, p_149674_3_, p_149674_4_) > 11 - this.getLightOpacity()) 6 | { 7 | + // CraftBukkit start 8 | + if (org.bukkit.craftbukkit.event.CraftEventFactory.callBlockFadeEvent(p_149674_1_.getWorld().getBlockAt(p_149674_2_, p_149674_3_, p_149674_4_), Blocks.water).isCancelled()) 9 | + { 10 | + return; 11 | + } 12 | + 13 | + // CraftBukkit end 14 | + 15 | if (p_149674_1_.provider.isHellWorld) 16 | { 17 | p_149674_1_.setBlockToAir(p_149674_2_, p_149674_3_, p_149674_4_); 18 | -------------------------------------------------------------------------------- /patches/net/minecraft/block/BlockJukebox.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/block/BlockJukebox.java 2 | +++ ../src-work/minecraft/net/minecraft/block/BlockJukebox.java 3 | @@ -163,8 +163,23 @@ 4 | 5 | public void func_145857_a(ItemStack p_145857_1_) 6 | { 7 | + // CraftBukkit start - There can only be one 8 | + if (p_145857_1_ != null) 9 | + { 10 | + p_145857_1_.stackSize = 1; 11 | + } 12 | + 13 | + // CraftBukkit end 14 | this.field_145858_a = p_145857_1_; 15 | this.markDirty(); 16 | } 17 | + 18 | + // Cauldron start 19 | + @Override 20 | + public boolean canUpdate() 21 | + { 22 | + return false; 23 | + } 24 | + // Cauldron end 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /patches/net/minecraft/block/BlockLiquid.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/block/BlockLiquid.java 2 | +++ ../src-work/minecraft/net/minecraft/block/BlockLiquid.java 3 | @@ -509,7 +509,7 @@ 4 | { 5 | p_149805_1_.setBlock(p_149805_2_, p_149805_3_, p_149805_4_, Blocks.obsidian); 6 | } 7 | - else if (l <= 4) 8 | + else if (l > 0) //Paper Spigot 9 | { 10 | p_149805_1_.setBlock(p_149805_2_, p_149805_3_, p_149805_4_, Blocks.cobblestone); 11 | } 12 | -------------------------------------------------------------------------------- /patches/net/minecraft/block/BlockNetherWart.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/block/BlockNetherWart.java 2 | +++ ../src-work/minecraft/net/minecraft/block/BlockNetherWart.java 3 | @@ -45,7 +45,7 @@ 4 | if (l < 3 && p_149674_5_.nextInt(10) == 0) 5 | { 6 | ++l; 7 | - p_149674_1_.setBlockMetadataWithNotify(p_149674_2_, p_149674_3_, p_149674_4_, l, 2); 8 | + org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(p_149674_1_, p_149674_2_, p_149674_3_, p_149674_4_, this, l); // CraftBukkit 9 | } 10 | 11 | super.updateTick(p_149674_1_, p_149674_2_, p_149674_3_, p_149674_4_, p_149674_5_); 12 | -------------------------------------------------------------------------------- /patches/net/minecraft/block/BlockReed.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/block/BlockReed.java 2 | +++ ../src-work/minecraft/net/minecraft/block/BlockReed.java 3 | @@ -44,9 +44,9 @@ 4 | { 5 | int i1 = p_149674_1_.getBlockMetadata(p_149674_2_, p_149674_3_, p_149674_4_); 6 | 7 | - if (i1 == 15) 8 | + if (i1 >= (byte) range(3, (p_149674_1_.growthOdds / p_149674_1_.getSpigotConfig().caneModifier * 15) + 0.5F, 15)) // Spigot // Cauldron 9 | { 10 | - p_149674_1_.setBlock(p_149674_2_, p_149674_3_ + 1, p_149674_4_, this); 11 | + org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockGrowEvent(p_149674_1_, p_149674_2_, p_149674_3_ + 1, p_149674_4_, this, 0); // CraftBukkit 12 | p_149674_1_.setBlockMetadataWithNotify(p_149674_2_, p_149674_3_, p_149674_4_, 0, 4); 13 | } 14 | else 15 | -------------------------------------------------------------------------------- /patches/net/minecraft/block/BlockSign.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/block/BlockSign.java 2 | +++ ../src-work/minecraft/net/minecraft/block/BlockSign.java 3 | @@ -14,6 +14,8 @@ 4 | import net.minecraft.world.IBlockAccess; 5 | import net.minecraft.world.World; 6 | 7 | +import org.bukkit.event.block.BlockRedstoneEvent; // CraftBukkit 8 | + 9 | public class BlockSign extends BlockContainer 10 | { 11 | private Class field_149968_a; 12 | @@ -163,6 +165,17 @@ 13 | } 14 | 15 | super.onNeighborBlockChange(p_149695_1_, p_149695_2_, p_149695_3_, p_149695_4_, p_149695_5_); 16 | + 17 | + // CraftBukkit start 18 | + if (p_149695_5_ != null && p_149695_5_.canProvidePower()) 19 | + { 20 | + org.bukkit.block.Block bukkitBlock = p_149695_1_.getWorld().getBlockAt(p_149695_2_, p_149695_3_, p_149695_4_); 21 | + int power = bukkitBlock.getBlockPower(); 22 | + BlockRedstoneEvent eventRedstone = new BlockRedstoneEvent(bukkitBlock, power, power); 23 | + p_149695_1_.getServer().getPluginManager().callEvent(eventRedstone); 24 | + } 25 | + 26 | + // CraftBukkit end 27 | } 28 | 29 | @SideOnly(Side.CLIENT) 30 | -------------------------------------------------------------------------------- /patches/net/minecraft/block/BlockSnow.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/block/BlockSnow.java 2 | +++ ../src-work/minecraft/net/minecraft/block/BlockSnow.java 3 | @@ -114,6 +114,14 @@ 4 | { 5 | if (p_149674_1_.getSavedLightValue(EnumSkyBlock.Block, p_149674_2_, p_149674_3_, p_149674_4_) > 11) 6 | { 7 | + // CraftBukkit start 8 | + if (org.bukkit.craftbukkit.event.CraftEventFactory.callBlockFadeEvent(p_149674_1_.getWorld().getBlockAt(p_149674_2_, p_149674_3_, p_149674_4_), Blocks.air).isCancelled()) 9 | + { 10 | + return; 11 | + } 12 | + 13 | + // CraftBukkit end 14 | + this.dropBlockAsItem(p_149674_1_, p_149674_2_, p_149674_3_, p_149674_4_, p_149674_1_.getBlockMetadata(p_149674_2_, p_149674_3_, p_149674_4_), 0); 15 | p_149674_1_.setBlockToAir(p_149674_2_, p_149674_3_, p_149674_4_); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /patches/net/minecraft/client/Minecraft.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/client/Minecraft.java 2 | +++ ../src-work/minecraft/net/minecraft/client/Minecraft.java 3 | @@ -148,6 +148,7 @@ 4 | import net.minecraft.util.Timer; 5 | import net.minecraft.util.Util; 6 | import net.minecraft.world.EnumDifficulty; 7 | +import net.minecraft.world.MinecraftException; 8 | import net.minecraft.world.WorldProviderEnd; 9 | import net.minecraft.world.WorldProviderHell; 10 | import net.minecraft.world.WorldSettings; 11 | @@ -2655,7 +2656,14 @@ 12 | 13 | if (integratedserver != null) 14 | { 15 | - integratedserver.stopServer(); 16 | + try 17 | + { 18 | + integratedserver.stopServer(); 19 | + } 20 | + catch (MinecraftException e) 21 | + { 22 | + e.printStackTrace(); 23 | + } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /patches/net/minecraft/command/PlayerSelector.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/command/PlayerSelector.java 2 | +++ ../src-work/minecraft/net/minecraft/command/PlayerSelector.java 3 | @@ -7,6 +7,7 @@ 4 | import java.util.Map; 5 | import java.util.regex.Matcher; 6 | import java.util.regex.Pattern; 7 | +import net.minecraft.command.server.CommandBlockLogic; 8 | import net.minecraft.entity.player.EntityPlayerMP; 9 | import net.minecraft.server.MinecraftServer; 10 | import net.minecraft.util.ChunkCoordinates; 11 | @@ -51,6 +52,13 @@ 12 | 13 | public static EntityPlayerMP[] matchPlayers(ICommandSender p_82380_0_, String p_82380_1_) 14 | { 15 | + // CraftBukkit start 16 | + if (!(p_82380_0_ instanceof CommandBlockLogic)) 17 | + { 18 | + return null; 19 | + } 20 | + 21 | + // CraftBukkit end 22 | Matcher matcher = tokenPattern.matcher(p_82380_1_); 23 | 24 | if (matcher.matches()) 25 | -------------------------------------------------------------------------------- /patches/net/minecraft/enchantment/Enchantment.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/enchantment/Enchantment.java 2 | +++ ../src-work/minecraft/net/minecraft/enchantment/Enchantment.java 3 | @@ -56,6 +56,8 @@ 4 | { 5 | enchantmentsList[p_i1926_1_] = this; 6 | } 7 | + 8 | + org.bukkit.enchantments.Enchantment.registerEnchantment(new org.bukkit.craftbukkit.enchantments.CraftEnchantment(this)); // CraftBukkit 9 | } 10 | 11 | public int getWeight() 12 | -------------------------------------------------------------------------------- /patches/net/minecraft/entity/ai/EntityAIArrowAttack.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/entity/ai/EntityAIArrowAttack.java 2 | +++ ../src-work/minecraft/net/minecraft/entity/ai/EntityAIArrowAttack.java 3 | @@ -5,6 +5,11 @@ 4 | import net.minecraft.entity.IRangedAttackMob; 5 | import net.minecraft.util.MathHelper; 6 | 7 | +// CraftBukkit start 8 | +import net.minecraft.entity.Entity; 9 | +import org.bukkit.event.entity.EntityTargetEvent; 10 | +// CraftBukkit end 11 | + 12 | public class EntityAIArrowAttack extends EntityAIBase 13 | { 14 | private final EntityLiving entityHost; 15 | @@ -67,6 +72,10 @@ 16 | 17 | public void resetTask() 18 | { 19 | + // CraftBukkit start 20 | + EntityTargetEvent.TargetReason reason = this.attackTarget.isEntityAlive() ? EntityTargetEvent.TargetReason.FORGOT_TARGET : EntityTargetEvent.TargetReason.TARGET_DIED; 21 | + org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTargetEvent((Entity) rangedAttackEntityHost, null, reason); 22 | + // CraftBukkit end 23 | this.attackTarget = null; 24 | this.field_75318_f = 0; 25 | this.rangedAttackTime = -1; 26 | -------------------------------------------------------------------------------- /patches/net/minecraft/entity/ai/EntityAIBreakDoor.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/entity/ai/EntityAIBreakDoor.java 2 | +++ ../src-work/minecraft/net/minecraft/entity/ai/EntityAIBreakDoor.java 3 | @@ -58,6 +58,14 @@ 4 | 5 | if (this.breakingTime == 240 && this.theEntity.worldObj.difficultySetting == EnumDifficulty.HARD) 6 | { 7 | + // CraftBukkit start 8 | + if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreakDoorEvent(this.theEntity, this.entityPosX, this.entityPosY, this.entityPosZ).isCancelled()) 9 | + { 10 | + this.updateTask(); 11 | + return; 12 | + } 13 | + 14 | + // CraftBukkit end 15 | this.theEntity.worldObj.setBlockToAir(this.entityPosX, this.entityPosY, this.entityPosZ); 16 | this.theEntity.worldObj.playAuxSFX(1012, this.entityPosX, this.entityPosY, this.entityPosZ, 0); 17 | this.theEntity.worldObj.playAuxSFX(2001, this.entityPosX, this.entityPosY, this.entityPosZ, Block.getIdFromBlock(this.field_151504_e)); 18 | -------------------------------------------------------------------------------- /patches/net/minecraft/entity/ai/EntityAIPanic.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/entity/ai/EntityAIPanic.java 2 | +++ ../src-work/minecraft/net/minecraft/entity/ai/EntityAIPanic.java 3 | @@ -3,6 +3,8 @@ 4 | import net.minecraft.entity.EntityCreature; 5 | import net.minecraft.util.Vec3; 6 | 7 | +import net.minecraft.entity.EntityLivingBase; // CraftBukkit 8 | + 9 | public class EntityAIPanic extends EntityAIBase 10 | { 11 | private EntityCreature theEntityCreature; 12 | @@ -50,6 +52,14 @@ 13 | 14 | public boolean continueExecuting() 15 | { 16 | + // CraftBukkit start - introduce a temporary timeout hack until this is fixed properly 17 | + if ((this.theEntityCreature.ticksExisted - this.theEntityCreature.func_142015_aE()) > 100) 18 | + { 19 | + this.theEntityCreature.setRevengeTarget((EntityLivingBase) null); 20 | + return false; 21 | + } 22 | + 23 | + // CraftBukkit end 24 | return !this.theEntityCreature.getNavigator().noPath(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /patches/net/minecraft/entity/ai/EntityAISit.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/entity/ai/EntityAISit.java 2 | +++ ../src-work/minecraft/net/minecraft/entity/ai/EntityAISit.java 3 | @@ -19,7 +19,7 @@ 4 | { 5 | if (!this.theEntity.isTamed()) 6 | { 7 | - return false; 8 | + return this.isSitting && this.theEntity.getAttackTarget() == null; // CraftBukkit - Allow sitting for wild animals 9 | } 10 | else if (this.theEntity.isInWater()) 11 | { 12 | -------------------------------------------------------------------------------- /patches/net/minecraft/entity/ai/EntityAITasks.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/entity/ai/EntityAITasks.java 2 | +++ ../src-work/minecraft/net/minecraft/entity/ai/EntityAITasks.java 3 | @@ -104,7 +104,10 @@ 4 | while (iterator.hasNext()) 5 | { 6 | entityaitaskentry = (EntityAITasks.EntityAITaskEntry)iterator.next(); 7 | - this.theProfiler.startSection(entityaitaskentry.action.getClass().getSimpleName()); 8 | + if (this.theProfiler.profilingEnabled) //Unnecessary lag...do it only if profiling is on 9 | + this.theProfiler.startSection(entityaitaskentry.action.getClass().getSimpleName()); 10 | + else 11 | + this.theProfiler.startSection("EntityAITaskEntry.EntityAIBase"); 12 | entityaitaskentry.action.startExecuting(); 13 | this.theProfiler.endSection(); 14 | } 15 | -------------------------------------------------------------------------------- /patches/net/minecraft/entity/ai/EntityAIVillagerMate.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/entity/ai/EntityAIVillagerMate.java 2 | +++ ../src-work/minecraft/net/minecraft/entity/ai/EntityAIVillagerMate.java 3 | @@ -119,7 +119,7 @@ 4 | this.villagerObj.setGrowingAge(6000); 5 | entityvillager.setGrowingAge(-24000); 6 | entityvillager.setLocationAndAngles(this.villagerObj.posX, this.villagerObj.posY, this.villagerObj.posZ, 0.0F, 0.0F); 7 | - this.worldObj.spawnEntityInWorld(entityvillager); 8 | + this.worldObj.addEntity(entityvillager, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason 9 | this.worldObj.setEntityState(entityvillager, (byte)12); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /patches/net/minecraft/entity/ai/EntityMoveHelper.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/entity/ai/EntityMoveHelper.java 2 | +++ ../src-work/minecraft/net/minecraft/entity/ai/EntityMoveHelper.java 3 | @@ -56,7 +56,8 @@ 4 | 5 | if (d3 >= 2.500000277905201E-7D) 6 | { 7 | - float f = (float)(Math.atan2(d1, d0) * 180.0D / Math.PI) - 90.0F; 8 | + // CraftBukkit - Math -> TrigMath 9 | + float f = (float)(org.bukkit.craftbukkit.TrigMath.atan2(d1, d0) * 180.0D / Math.PI) - 90.0F; 10 | this.entity.rotationYaw = this.limitAngle(this.entity.rotationYaw, f, 30.0F); 11 | this.entity.setAIMoveSpeed((float)(this.speed * this.entity.getEntityAttribute(SharedMonsterAttributes.movementSpeed).getAttributeValue())); 12 | 13 | -------------------------------------------------------------------------------- /patches/net/minecraft/entity/ai/EntitySenses.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/entity/ai/EntitySenses.java 2 | +++ ../src-work/minecraft/net/minecraft/entity/ai/EntitySenses.java 3 | @@ -1,6 +1,7 @@ 4 | package net.minecraft.entity.ai; 5 | 6 | import java.util.ArrayList; 7 | +import java.util.HashSet; 8 | import java.util.List; 9 | import net.minecraft.entity.Entity; 10 | import net.minecraft.entity.EntityLiving; 11 | @@ -8,8 +9,8 @@ 12 | public class EntitySenses 13 | { 14 | EntityLiving entityObj; 15 | - List seenEntities = new ArrayList(); 16 | - List unseenEntities = new ArrayList(); 17 | + HashSet seenEntities = new HashSet(); // Thermos convert sensing to HashSet for faster sensing checks. 18 | + HashSet unseenEntities = new HashSet(); 19 | private static final String __OBFID = "CL_00001628"; 20 | 21 | public EntitySenses(EntityLiving p_i1672_1_) 22 | -------------------------------------------------------------------------------- /patches/net/minecraft/entity/item/EntityEnderEye.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/entity/item/EntityEnderEye.java 2 | +++ ../src-work/minecraft/net/minecraft/entity/item/EntityEnderEye.java 3 | @@ -117,7 +117,7 @@ 4 | this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F; 5 | 6 | if (!this.worldObj.isRemote) 7 | - { 8 | + { 9 | double d0 = this.targetX - this.posX; 10 | double d1 = this.targetZ - this.posZ; 11 | float f1 = (float)Math.sqrt(d0 * d0 + d1 * d1); 12 | @@ -203,4 +203,11 @@ 13 | { 14 | return false; 15 | } 16 | + 17 | + // Cauldron start 18 | + @Override 19 | + public boolean entityProjectileHook() { 20 | + return true; 21 | + } 22 | + // Cauldron end 23 | } 24 | -------------------------------------------------------------------------------- /patches/net/minecraft/entity/item/EntityFireworkRocket.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/entity/item/EntityFireworkRocket.java 2 | +++ ../src-work/minecraft/net/minecraft/entity/item/EntityFireworkRocket.java 3 | @@ -11,7 +11,7 @@ 4 | public class EntityFireworkRocket extends Entity 5 | { 6 | private int fireworkAge; 7 | - private int lifetime; 8 | + public int lifetime; // CraftBukkit - private -> public 9 | private static final String __OBFID = "CL_00001718"; 10 | 11 | public EntityFireworkRocket(World p_i1762_1_) 12 | @@ -199,4 +199,11 @@ 13 | { 14 | return false; 15 | } 16 | + 17 | + // Cauldron start 18 | + @Override 19 | + public boolean entityProjectileHook() { 20 | + return true; 21 | + } 22 | + // Cauldron end 23 | } 24 | -------------------------------------------------------------------------------- /patches/net/minecraft/entity/item/EntityPainting.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/entity/item/EntityPainting.java 2 | +++ ../src-work/minecraft/net/minecraft/entity/item/EntityPainting.java 3 | @@ -2,7 +2,9 @@ 4 | 5 | import cpw.mods.fml.relauncher.Side; 6 | import cpw.mods.fml.relauncher.SideOnly; 7 | + 8 | import java.util.ArrayList; 9 | + 10 | import net.minecraft.entity.Entity; 11 | import net.minecraft.entity.EntityHanging; 12 | import net.minecraft.entity.player.EntityPlayer; 13 | @@ -19,6 +21,7 @@ 14 | public EntityPainting(World p_i1599_1_) 15 | { 16 | super(p_i1599_1_); 17 | + this.art = EntityPainting.EnumArt.values()[this.rand.nextInt(EntityPainting.EnumArt.values().length)]; // CraftBukkit - generate a non-null painting 18 | } 19 | 20 | public EntityPainting(World p_i1600_1_, int p_i1600_2_, int p_i1600_3_, int p_i1600_4_, int p_i1600_5_) 21 | @@ -170,4 +173,11 @@ 22 | this.offsetY = p_i1598_7_; 23 | } 24 | } 25 | + 26 | + // Cauldron start 27 | + @Override 28 | + public boolean entityProjectileHook() { 29 | + return true; 30 | + } 31 | + // Cauldron end 32 | } 33 | -------------------------------------------------------------------------------- /patches/net/minecraft/entity/passive/EntityMooshroom.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/entity/passive/EntityMooshroom.java 2 | +++ ../src-work/minecraft/net/minecraft/entity/passive/EntityMooshroom.java 3 | @@ -12,6 +12,8 @@ 4 | import net.minecraft.world.World; 5 | import net.minecraftforge.common.IShearable; 6 | 7 | +import org.bukkit.event.player.PlayerShearEntityEvent; // CraftBukkit 8 | + 9 | public class EntityMooshroom extends EntityCow implements IShearable 10 | { 11 | private static final String __OBFID = "CL_00001645"; 12 | -------------------------------------------------------------------------------- /patches/net/minecraft/entity/passive/EntityOcelot.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/entity/passive/EntityOcelot.java 2 | +++ ../src-work/minecraft/net/minecraft/entity/passive/EntityOcelot.java 3 | @@ -89,7 +89,7 @@ 4 | 5 | protected boolean canDespawn() 6 | { 7 | - return !this.isTamed() && this.ticksExisted > 2400; 8 | + return !this.isTamed(); // CraftBukkit 9 | } 10 | 11 | public boolean isAIEnabled() 12 | @@ -188,7 +188,8 @@ 13 | 14 | if (!this.worldObj.isRemote) 15 | { 16 | - if (this.rand.nextInt(3) == 0) 17 | + // CraftBukkit - added event call and isCancelled check 18 | + if (this.rand.nextInt(3) == 0 && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, p_70085_1_).isCancelled()) 19 | { 20 | this.setTamed(true); 21 | this.setTameSkin(1 + this.worldObj.rand.nextInt(3)); 22 | -------------------------------------------------------------------------------- /patches/net/minecraft/entity/passive/EntityWolf.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/entity/passive/EntityWolf.java 2 | +++ ../src-work/minecraft/net/minecraft/entity/passive/EntityWolf.java 3 | @@ -139,7 +139,8 @@ 4 | 5 | protected String getLivingSound() 6 | { 7 | - return this.isAngry() ? "mob.wolf.growl" : (this.rand.nextInt(3) == 0 ? (this.isTamed() && this.dataWatcher.getWatchableObjectFloat(18) < 10.0F ? "mob.wolf.whine" : "mob.wolf.panting") : "mob.wolf.bark"); 8 | + // CraftBukkit - (getFloat(18) < 10) -> (getFloat(18) < this.getMaxHealth() / 2) 9 | + return this.isAngry() ? "mob.wolf.growl" : (this.rand.nextInt(3) == 0 ? (this.isTamed() && this.dataWatcher.getWatchableObjectFloat(18) < (this.getMaxHealth() / 2) ? "mob.wolf.whine" : "mob.wolf.panting") : "mob.wolf.bark"); 10 | } 11 | 12 | protected String getHurtSound() 13 | @@ -527,7 +528,7 @@ 14 | 15 | protected boolean canDespawn() 16 | { 17 | - return !this.isTamed() && this.ticksExisted > 2400; 18 | + return !this.isTamed(); // CraftBukkit 19 | } 20 | 21 | public boolean func_142018_a(EntityLivingBase p_142018_1_, EntityLivingBase p_142018_2_) 22 | -------------------------------------------------------------------------------- /patches/net/minecraft/entity/player/PlayerCapabilities.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/entity/player/PlayerCapabilities.java 2 | +++ ../src-work/minecraft/net/minecraft/entity/player/PlayerCapabilities.java 3 | @@ -11,8 +11,8 @@ 4 | public boolean allowFlying; 5 | public boolean isCreativeMode; 6 | public boolean allowEdit = true; 7 | - private float flySpeed = 0.05F; 8 | - private float walkSpeed = 0.1F; 9 | + public float flySpeed = 0.05F; // CraftBukkit private -> public 10 | + public float walkSpeed = 0.1F; // CraftBukkit private -> public 11 | private static final String __OBFID = "CL_00001708"; 12 | 13 | public void writeCapabilitiesToNBT(NBTTagCompound p_75091_1_) 14 | -------------------------------------------------------------------------------- /patches/net/minecraft/entity/projectile/EntitySnowball.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/entity/projectile/EntitySnowball.java 2 | +++ ../src-work/minecraft/net/minecraft/entity/projectile/EntitySnowball.java 3 | @@ -49,4 +49,11 @@ 4 | this.setDead(); 5 | } 6 | } 7 | + 8 | + // Cauldron start 9 | + @Override 10 | + public boolean entityProjectileHook() { 11 | + return true; 12 | + } 13 | + // Cauldron end 14 | } 15 | -------------------------------------------------------------------------------- /patches/net/minecraft/inventory/ContainerMerchant.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/inventory/ContainerMerchant.java 2 | +++ ../src-work/minecraft/net/minecraft/inventory/ContainerMerchant.java 3 | @@ -8,6 +8,8 @@ 4 | import net.minecraft.item.ItemStack; 5 | import net.minecraft.world.World; 6 | 7 | +import org.bukkit.craftbukkit.inventory.CraftInventoryView; // CraftBukkit 8 | + 9 | public class ContainerMerchant extends Container 10 | { 11 | private IMerchant theMerchant; 12 | -------------------------------------------------------------------------------- /patches/net/minecraft/inventory/IInventory.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/inventory/IInventory.java 2 | +++ ../src-work/minecraft/net/minecraft/inventory/IInventory.java 3 | @@ -3,6 +3,8 @@ 4 | import net.minecraft.entity.player.EntityPlayer; 5 | import net.minecraft.item.ItemStack; 6 | 7 | +import org.bukkit.craftbukkit.entity.CraftHumanEntity; // CraftBukkit 8 | + 9 | public interface IInventory 10 | { 11 | int getSizeInventory(); 12 | @@ -30,4 +32,20 @@ 13 | void closeInventory(); 14 | 15 | boolean isItemValidForSlot(int p_94041_1_, ItemStack p_94041_2_); 16 | + 17 | + // CraftBukkit start 18 | + ItemStack[] getContents(); 19 | + 20 | + void onOpen(CraftHumanEntity who); 21 | + 22 | + void onClose(CraftHumanEntity who); 23 | + 24 | + java.util.List getViewers(); 25 | + 26 | + org.bukkit.inventory.InventoryHolder getOwner(); 27 | + 28 | + void setMaxStackSize(int size); 29 | + 30 | + int MAX_STACK = 64; 31 | + // CraftBukkit end 32 | } 33 | -------------------------------------------------------------------------------- /patches/net/minecraft/inventory/Slot.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/inventory/Slot.java 2 | +++ ../src-work/minecraft/net/minecraft/inventory/Slot.java 3 | @@ -10,7 +10,7 @@ 4 | 5 | public class Slot 6 | { 7 | - private final int slotIndex; 8 | + public final int slotIndex; // CraftBukkit - private -> public 9 | public final IInventory inventory; 10 | public int slotNumber; 11 | public int xDisplayPosition; 12 | -------------------------------------------------------------------------------- /patches/net/minecraft/item/ItemBoat.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/item/ItemBoat.java 2 | +++ ../src-work/minecraft/net/minecraft/item/ItemBoat.java 3 | @@ -80,7 +80,16 @@ 4 | i = movingobjectposition.blockX; 5 | int j = movingobjectposition.blockY; 6 | int k = movingobjectposition.blockZ; 7 | + // CraftBukkit start - Boat placement 8 | + org.bukkit.event.player.PlayerInteractEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerInteractEvent(p_77659_3_, org.bukkit.event.block.Action.RIGHT_CLICK_BLOCK, i, j, k, movingobjectposition.sideHit, p_77659_1_); 9 | 10 | + if (event.isCancelled()) 11 | + { 12 | + return p_77659_1_; 13 | + } 14 | + 15 | + // CraftBukkit end 16 | + 17 | if (p_77659_2_.getBlock(i, j, k) == Blocks.snow_layer) 18 | { 19 | --j; 20 | -------------------------------------------------------------------------------- /patches/net/minecraft/item/ItemEmptyMap.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/item/ItemEmptyMap.java 2 | +++ ../src-work/minecraft/net/minecraft/item/ItemEmptyMap.java 3 | @@ -27,6 +27,7 @@ 4 | mapdata.zCenter = (int)(Math.round(p_77659_3_.posZ / (double)i) * (long)i); 5 | mapdata.dimension = p_77659_2_.provider.dimensionId; 6 | mapdata.markDirty(); 7 | + org.bukkit.craftbukkit.event.CraftEventFactory.callEvent(new org.bukkit.event.server.MapInitializeEvent(mapdata.mapView)); // CraftBukkit 8 | --p_77659_1_.stackSize; 9 | 10 | if (p_77659_1_.stackSize <= 0) 11 | -------------------------------------------------------------------------------- /patches/net/minecraft/item/ItemMinecart.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/item/ItemMinecart.java 2 | +++ ../src-work/minecraft/net/minecraft/item/ItemMinecart.java 3 | @@ -79,6 +79,15 @@ 4 | { 5 | if (!p_77648_3_.isRemote) 6 | { 7 | + // CraftBukkit start - Minecarts 8 | + org.bukkit.event.player.PlayerInteractEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerInteractEvent(p_77648_2_, org.bukkit.event.block.Action.RIGHT_CLICK_BLOCK, p_77648_4_, p_77648_5_, p_77648_6_, p_77648_7_, p_77648_1_); 9 | + 10 | + if (event.isCancelled()) 11 | + { 12 | + return false; 13 | + } 14 | + 15 | + // CraftBukkit end 16 | EntityMinecart entityminecart = EntityMinecart.createMinecart(p_77648_3_, (double)((float)p_77648_4_ + 0.5F), (double)((float)p_77648_5_ + 0.5F), (double)((float)p_77648_6_ + 0.5F), this.minecartType); 17 | 18 | if (p_77648_1_.hasDisplayName()) 19 | -------------------------------------------------------------------------------- /patches/net/minecraft/item/crafting/IRecipe.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/item/crafting/IRecipe.java 2 | +++ ../src-work/minecraft/net/minecraft/item/crafting/IRecipe.java 3 | @@ -13,4 +13,6 @@ 4 | int getRecipeSize(); 5 | 6 | ItemStack getRecipeOutput(); 7 | + 8 | + org.bukkit.inventory.Recipe toBukkitRecipe(); // CraftBukkit 9 | } 10 | -------------------------------------------------------------------------------- /patches/net/minecraft/item/crafting/RecipeBookCloning.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/item/crafting/RecipeBookCloning.java 2 | +++ ../src-work/minecraft/net/minecraft/item/crafting/RecipeBookCloning.java 3 | @@ -6,10 +6,17 @@ 4 | import net.minecraft.nbt.NBTTagCompound; 5 | import net.minecraft.world.World; 6 | 7 | -public class RecipeBookCloning implements IRecipe 8 | +public class RecipeBookCloning extends ShapelessRecipes implements IRecipe // CraftBukkit - added extends 9 | { 10 | private static final String __OBFID = "CL_00000081"; 11 | 12 | + // CraftBukkit start - Delegate to new parent class 13 | + public RecipeBookCloning() 14 | + { 15 | + super(new ItemStack(Items.written_book, 0, -1), java.util.Arrays.asList(new ItemStack(Items.writable_book, 0, 0))); 16 | + } 17 | + // CraftBukkit end 18 | + 19 | public boolean matches(InventoryCrafting p_77569_1_, World p_77569_2_) 20 | { 21 | int i = 0; 22 | -------------------------------------------------------------------------------- /patches/net/minecraft/item/crafting/RecipeFireworks.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/item/crafting/RecipeFireworks.java 2 | +++ ../src-work/minecraft/net/minecraft/item/crafting/RecipeFireworks.java 3 | @@ -9,11 +9,18 @@ 4 | import net.minecraft.nbt.NBTTagList; 5 | import net.minecraft.world.World; 6 | 7 | -public class RecipeFireworks implements IRecipe 8 | +public class RecipeFireworks extends ShapelessRecipes implements IRecipe // CraftBukkit - added extends 9 | { 10 | private ItemStack field_92102_a; 11 | private static final String __OBFID = "CL_00000083"; 12 | 13 | + // CraftBukkit start - Delegate to new parent class with bogus info 14 | + public RecipeFireworks() 15 | + { 16 | + super(new ItemStack(Items.fireworks, 0, 0), java.util.Arrays.asList(new ItemStack(Items.gunpowder, 0, 5))); 17 | + } 18 | + // CraftBukkit end 19 | + 20 | public boolean matches(InventoryCrafting p_77569_1_, World p_77569_2_) 21 | { 22 | this.field_92102_a = null; 23 | -------------------------------------------------------------------------------- /patches/net/minecraft/item/crafting/RecipesArmorDyes.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/item/crafting/RecipesArmorDyes.java 2 | +++ ../src-work/minecraft/net/minecraft/item/crafting/RecipesArmorDyes.java 3 | @@ -9,10 +9,17 @@ 4 | import net.minecraft.item.ItemStack; 5 | import net.minecraft.world.World; 6 | 7 | -public class RecipesArmorDyes implements IRecipe 8 | +public class RecipesArmorDyes extends ShapelessRecipes implements IRecipe // CraftBukkit - added extends 9 | { 10 | private static final String __OBFID = "CL_00000079"; 11 | 12 | + // CraftBukkit start - Delegate to new parent class with bogus info 13 | + public RecipesArmorDyes() 14 | + { 15 | + super(new ItemStack(Items.leather_helmet, 0, 0), java.util.Arrays.asList(new ItemStack(Items.dye, 0, 5))); 16 | + } 17 | + // CraftBukkit end 18 | + 19 | public boolean matches(InventoryCrafting p_77569_1_, World p_77569_2_) 20 | { 21 | ItemStack itemstack = null; 22 | -------------------------------------------------------------------------------- /patches/net/minecraft/item/crafting/RecipesMapCloning.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/item/crafting/RecipesMapCloning.java 2 | +++ ../src-work/minecraft/net/minecraft/item/crafting/RecipesMapCloning.java 3 | @@ -5,10 +5,17 @@ 4 | import net.minecraft.item.ItemStack; 5 | import net.minecraft.world.World; 6 | 7 | -public class RecipesMapCloning implements IRecipe 8 | +public class RecipesMapCloning extends ShapelessRecipes implements IRecipe // CraftBukkit - added extends 9 | { 10 | private static final String __OBFID = "CL_00000087"; 11 | 12 | + // CraftBukkit start - Delegate to new parent class 13 | + public RecipesMapCloning() 14 | + { 15 | + super(new ItemStack(Items.filled_map, 0, -1), java.util.Arrays.asList(new ItemStack(Items.map, 0, 0))); 16 | + } 17 | + // CraftBukkit end 18 | + 19 | public boolean matches(InventoryCrafting p_77569_1_, World p_77569_2_) 20 | { 21 | int i = 0; 22 | -------------------------------------------------------------------------------- /patches/net/minecraft/nbt/NBTTagList.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/nbt/NBTTagList.java 2 | +++ ../src-work/minecraft/net/minecraft/nbt/NBTTagList.java 3 | @@ -9,7 +9,7 @@ 4 | 5 | public class NBTTagList extends NBTBase 6 | { 7 | - private List tagList = new ArrayList(); 8 | + private List tagList = new ArrayList(); 9 | private byte tagType = 0; 10 | private static final String __OBFID = "CL_00001224"; 11 | 12 | @@ -192,11 +192,11 @@ 13 | { 14 | NBTTagList nbttaglist = new NBTTagList(); 15 | nbttaglist.tagType = this.tagType; 16 | - Iterator iterator = this.tagList.iterator(); 17 | - 18 | - while (iterator.hasNext()) 19 | + if ( nbttaglist.tagList instanceof ArrayList ) // Thermos, ensure we dont create arrays to then delete them 20 | + ((ArrayList)nbttaglist.tagList).ensureCapacity(this.tagList.size()); 21 | + 22 | + for(NBTBase nbtbase : this.tagList) 23 | { 24 | - NBTBase nbtbase = (NBTBase)iterator.next(); 25 | NBTBase nbtbase1 = nbtbase.copy(); 26 | nbttaglist.tagList.add(nbtbase1); 27 | } 28 | -------------------------------------------------------------------------------- /patches/net/minecraft/network/Packet.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/network/Packet.java 2 | +++ ../src-work/minecraft/net/minecraft/network/Packet.java 3 | @@ -9,6 +9,7 @@ 4 | public abstract class Packet 5 | { 6 | private static final Logger logger = LogManager.getLogger(); 7 | + public final long timestamp = System.currentTimeMillis(); // CraftBukkit 8 | private static final String __OBFID = "CL_00001272"; 9 | 10 | public static Packet generatePacket(BiMap p_148839_0_, int p_148839_1_) 11 | -------------------------------------------------------------------------------- /patches/net/minecraft/network/PacketBuffer.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/network/PacketBuffer.java 2 | +++ ../src-work/minecraft/net/minecraft/network/PacketBuffer.java 3 | @@ -98,7 +98,7 @@ 4 | 5 | public void writeItemStackToBuffer(ItemStack p_150788_1_) throws IOException 6 | { 7 | - if (p_150788_1_ == null) 8 | + if (p_150788_1_ == null || p_150788_1_.getItem() == null) // CraftBukkit - NPE fix itemstack.getItem() 9 | { 10 | this.writeShort(-1); 11 | } 12 | -------------------------------------------------------------------------------- /patches/net/minecraft/network/handshake/client/C00Handshake.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/network/handshake/client/C00Handshake.java 2 | +++ ../src-work/minecraft/net/minecraft/network/handshake/client/C00Handshake.java 3 | @@ -12,8 +12,8 @@ 4 | public class C00Handshake extends Packet 5 | { 6 | private int field_149600_a; 7 | - private String field_149598_b; 8 | - private int field_149599_c; 9 | + public String field_149598_b; // CraftBukkit private -> public 10 | + public int field_149599_c; // CraftBukkit private -> public 11 | private EnumConnectionState field_149597_d; 12 | private static final String __OBFID = "CL_00001372"; 13 | 14 | @@ -31,7 +31,7 @@ 15 | public void readPacketData(PacketBuffer p_148837_1_) throws IOException 16 | { 17 | this.field_149600_a = p_148837_1_.readVarIntFromBuffer(); 18 | - this.field_149598_b = p_148837_1_.readStringFromBuffer(255); 19 | + this.field_149598_b = p_148837_1_.readStringFromBuffer(Short.MAX_VALUE); // Spigot 20 | this.field_149599_c = p_148837_1_.readUnsignedShort(); 21 | this.field_149597_d = EnumConnectionState.func_150760_a(p_148837_1_.readVarIntFromBuffer()); 22 | } 23 | -------------------------------------------------------------------------------- /patches/net/minecraft/network/play/client/C01PacketChatMessage.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/network/play/client/C01PacketChatMessage.java 2 | +++ ../src-work/minecraft/net/minecraft/network/play/client/C01PacketChatMessage.java 3 | @@ -52,4 +52,11 @@ 4 | { 5 | this.processPacket((INetHandlerPlayServer)p_148833_1_); 6 | } 7 | + 8 | + // CraftBukkit start - make chat async 9 | + public boolean hasPriority() 10 | + { 11 | + return !this.field_149440_a.startsWith("/"); 12 | + } 13 | + // CraftBukkit end 14 | } 15 | -------------------------------------------------------------------------------- /patches/net/minecraft/network/play/client/C03PacketPlayer.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/network/play/client/C03PacketPlayer.java 2 | +++ ../src-work/minecraft/net/minecraft/network/play/client/C03PacketPlayer.java 3 | @@ -10,15 +10,17 @@ 4 | 5 | public class C03PacketPlayer extends Packet 6 | { 7 | - protected double field_149479_a; 8 | - protected double field_149477_b; 9 | - protected double field_149478_c; 10 | - protected double field_149475_d; 11 | - protected float field_149476_e; 12 | - protected float field_149473_f; 13 | + // CraftBukkit start - protected -> public 14 | + public double field_149479_a; 15 | + public double field_149477_b; 16 | + public double field_149478_c; 17 | + public double field_149475_d; 18 | + public float field_149476_e; 19 | + public float field_149473_f; 20 | + // CraftBukkit end 21 | protected boolean field_149474_g; 22 | - protected boolean field_149480_h; 23 | - protected boolean field_149481_i; 24 | + public boolean field_149480_h; // CraftBukkit - protected -> public 25 | + public boolean field_149481_i; 26 | private static final String __OBFID = "CL_00001360"; 27 | 28 | public C03PacketPlayer() {} 29 | -------------------------------------------------------------------------------- /patches/net/minecraft/network/play/client/C0DPacketCloseWindow.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/network/play/client/C0DPacketCloseWindow.java 2 | +++ ../src-work/minecraft/net/minecraft/network/play/client/C0DPacketCloseWindow.java 3 | @@ -15,11 +15,12 @@ 4 | 5 | public C0DPacketCloseWindow() {} 6 | 7 | - @SideOnly(Side.CLIENT) 8 | + // CraftBukkit start - Add constructor 9 | public C0DPacketCloseWindow(int p_i45247_1_) 10 | { 11 | this.field_149556_a = p_i45247_1_; 12 | } 13 | + // CraftBukkit end 14 | 15 | public void processPacket(INetHandlerPlayServer p_148833_1_) 16 | { 17 | -------------------------------------------------------------------------------- /patches/net/minecraft/network/play/client/C17PacketCustomPayload.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/network/play/client/C17PacketCustomPayload.java 2 | +++ ../src-work/minecraft/net/minecraft/network/play/client/C17PacketCustomPayload.java 3 | @@ -12,7 +12,7 @@ 4 | public class C17PacketCustomPayload extends Packet 5 | { 6 | private String field_149562_a; 7 | - private int field_149560_b; 8 | + public int field_149560_b; // CraftBukkit - private -> public 9 | private byte[] field_149561_c; 10 | private static final String __OBFID = "CL_00001356"; 11 | 12 | -------------------------------------------------------------------------------- /patches/net/minecraft/network/play/server/S05PacketSpawnPosition.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/network/play/server/S05PacketSpawnPosition.java 2 | +++ ../src-work/minecraft/net/minecraft/network/play/server/S05PacketSpawnPosition.java 3 | @@ -10,9 +10,9 @@ 4 | 5 | public class S05PacketSpawnPosition extends Packet 6 | { 7 | - private int field_149364_a; 8 | - private int field_149362_b; 9 | - private int field_149363_c; 10 | + public int field_149364_a; // CraftBukkit - private -> public 11 | + public int field_149362_b; // CraftBukkit - private -> public 12 | + public int field_149363_c; // CraftBukkit - private -> public 13 | private static final String __OBFID = "CL_00001336"; 14 | 15 | public S05PacketSpawnPosition() {} 16 | -------------------------------------------------------------------------------- /patches/net/minecraft/network/play/server/S3FPacketCustomPayload.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/network/play/server/S3FPacketCustomPayload.java 2 | +++ ../src-work/minecraft/net/minecraft/network/play/server/S3FPacketCustomPayload.java 3 | @@ -30,7 +30,9 @@ 4 | //TODO: Remove this when FML protocol is re-written. To restore vanilla compatibility. 5 | if (p_i45190_2_.length > 0x1FFF9A) // Max size of ANY MC packet is 0x1FFFFF minus max size of this packet (101) 6 | { 7 | - throw new IllegalArgumentException("Payload may not be larger than 2097050 bytes"); 8 | + org.apache.logging.log4j.Logger logger = org.apache.logging.log4j.LogManager.getLogger("NETWORKERROR"); 9 | + logger.error("[Channel: "+ p_i45190_1_ +"] Payload may not be larger than 2097050 bytes"); 10 | + p_i45190_2_ = new byte[1]; 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /patches/net/minecraft/network/rcon/RConConsoleSource.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/network/rcon/RConConsoleSource.java 2 | +++ ../src-work/minecraft/net/minecraft/network/rcon/RConConsoleSource.java 3 | @@ -25,6 +25,13 @@ 4 | return new ChatComponentText(this.getCommandSenderName()); 5 | } 6 | 7 | + // CraftBukkit start - Send a String 8 | + public void sendMessage(String message) 9 | + { 10 | + this.buffer.append(message); 11 | + } 12 | + // CraftBukkit end 13 | + 14 | public void addChatMessage(IChatComponent p_145747_1_) 15 | { 16 | this.buffer.append(p_145747_1_.getUnformattedText()); 17 | -------------------------------------------------------------------------------- /patches/net/minecraft/server/ServerEula.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/server/ServerEula.java 2 | +++ ../src-work/minecraft/net/minecraft/server/ServerEula.java 3 | @@ -26,6 +26,7 @@ 4 | 5 | private boolean func_154347_a(File p_154347_1_) 6 | { 7 | + if (true) return true; // Cauldron 8 | FileInputStream fileinputstream = null; 9 | boolean flag = false; 10 | 11 | -------------------------------------------------------------------------------- /patches/net/minecraft/server/management/BanEntry.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/server/management/BanEntry.java 2 | +++ ../src-work/minecraft/net/minecraft/server/management/BanEntry.java 3 | @@ -76,4 +76,30 @@ 4 | p_152641_1_.addProperty("expires", this.banEndDate == null ? "forever" : dateFormat.format(this.banEndDate)); 5 | p_152641_1_.addProperty("reason", this.reason); 6 | } 7 | + 8 | + // CraftBukkit start 9 | + public String getSource() { 10 | + return this.bannedBy; 11 | + } 12 | + 13 | + public Date getCreated() { 14 | + return this.banStartDate; 15 | + } 16 | + 17 | + private static Object checkExpiry(Object object, JsonObject jsonobject) { 18 | + Date expires = null; 19 | + 20 | + try { 21 | + expires = jsonobject.has("expires") ? dateFormat.parse(jsonobject.get("expires").getAsString()) : null; 22 | + } catch (ParseException ex) { 23 | + // Guess we don't have a date 24 | + } 25 | + 26 | + if (expires == null || expires.after(new Date())) { 27 | + return object; 28 | + } else { 29 | + return null; 30 | + } 31 | + } 32 | + // CraftBukkit end 33 | } 34 | -------------------------------------------------------------------------------- /patches/net/minecraft/server/management/UserList.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/server/management/UserList.java 2 | +++ ../src-work/minecraft/net/minecraft/server/management/UserList.java 3 | @@ -184,6 +184,12 @@ 4 | return this.field_152696_d.size() < 1; 5 | } 6 | 7 | + // CraftBukkit start 8 | + public Collection getValues() { 9 | + return this.field_152696_d.values(); 10 | + } 11 | + // CraftBukkit end 12 | + 13 | @SideOnly(Side.SERVER) 14 | public void func_152679_g() throws IOException 15 | { 16 | -------------------------------------------------------------------------------- /patches/net/minecraft/server/management/UserListEntry.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/server/management/UserListEntry.java 2 | +++ ../src-work/minecraft/net/minecraft/server/management/UserListEntry.java 3 | @@ -17,7 +17,7 @@ 4 | this.field_152642_a = p_i1147_1_; 5 | } 6 | 7 | - Object func_152640_f() 8 | + public Object func_152640_f() // CraftBukkit - private -> public 9 | { 10 | return this.field_152642_a; 11 | } 12 | -------------------------------------------------------------------------------- /patches/net/minecraft/server/management/UserListOps.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/server/management/UserListOps.java 2 | +++ ../src-work/minecraft/net/minecraft/server/management/UserListOps.java 3 | @@ -35,6 +35,7 @@ 4 | 5 | protected String func_152699_b(GameProfile p_152699_1_) 6 | { 7 | + if (p_152699_1_ == null || p_152699_1_.getId() == null) return "invalid"; // Cauldron - handle GameProfiles with no ID 8 | return p_152699_1_.getId().toString(); 9 | } 10 | 11 | -------------------------------------------------------------------------------- /patches/net/minecraft/stats/StatFileWriter.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/stats/StatFileWriter.java 2 | +++ ../src-work/minecraft/net/minecraft/stats/StatFileWriter.java 3 | @@ -27,6 +27,12 @@ 4 | { 5 | if (!p_150871_2_.isAchievement() || this.canUnlockAchievement((Achievement)p_150871_2_)) 6 | { 7 | + // CraftBukkit start 8 | + org.bukkit.event.Cancellable cancellable = org.bukkit.craftbukkit.event.CraftEventFactory.handleStatisticsIncrease(p_150871_1_, p_150871_2_, this.writeStat(p_150871_2_), p_150871_3_); 9 | + if (cancellable != null && cancellable.isCancelled()) { 10 | + return; 11 | + } 12 | + // CraftBukkit end 13 | this.func_150873_a(p_150871_1_, p_150871_2_, this.writeStat(p_150871_2_) + p_150871_3_); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /patches/net/minecraft/tileentity/TileEntityComparator.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/tileentity/TileEntityComparator.java 2 | +++ ../src-work/minecraft/net/minecraft/tileentity/TileEntityComparator.java 3 | @@ -28,4 +28,12 @@ 4 | { 5 | this.field_145997_a = p_145995_1_; 6 | } 7 | + 8 | + // Cauldron start 9 | + @Override 10 | + public boolean canUpdate() 11 | + { 12 | + return false; 13 | + } 14 | + // Cauldron end 15 | } 16 | -------------------------------------------------------------------------------- /patches/net/minecraft/tileentity/TileEntityDropper.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/tileentity/TileEntityDropper.java 2 | +++ ../src-work/minecraft/net/minecraft/tileentity/TileEntityDropper.java 3 | @@ -8,4 +8,12 @@ 4 | { 5 | return this.hasCustomInventoryName() ? this.field_146020_a : "container.dropper"; 6 | } 7 | + 8 | + // Cauldron start 9 | + @Override 10 | + public boolean canUpdate() 11 | + { 12 | + return false; 13 | + } 14 | + // Cauldron end 15 | } 16 | -------------------------------------------------------------------------------- /patches/net/minecraft/tileentity/TileEntityEndPortal.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/tileentity/TileEntityEndPortal.java 2 | +++ ../src-work/minecraft/net/minecraft/tileentity/TileEntityEndPortal.java 3 | @@ -3,4 +3,12 @@ 4 | public class TileEntityEndPortal extends TileEntity 5 | { 6 | private static final String __OBFID = "CL_00000365"; 7 | + 8 | + // Cauldron start 9 | + @Override 10 | + public boolean canUpdate() 11 | + { 12 | + return false; 13 | + } 14 | + // Cauldron end 15 | } 16 | -------------------------------------------------------------------------------- /patches/net/minecraft/tileentity/TileEntityFlowerPot.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/tileentity/TileEntityFlowerPot.java 2 | +++ ../src-work/minecraft/net/minecraft/tileentity/TileEntityFlowerPot.java 3 | @@ -55,4 +55,12 @@ 4 | { 5 | return this.flowerPotData; 6 | } 7 | + 8 | + // Cauldron start 9 | + @Override 10 | + public boolean canUpdate() 11 | + { 12 | + return false; 13 | + } 14 | + // Cauldron end 15 | } 16 | -------------------------------------------------------------------------------- /patches/net/minecraft/tileentity/TileEntityNote.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/tileentity/TileEntityNote.java 2 | +++ ../src-work/minecraft/net/minecraft/tileentity/TileEntityNote.java 3 | @@ -68,7 +68,23 @@ 4 | b0 = 4; 5 | } 6 | 7 | - p_145878_1_.addBlockEvent(p_145878_2_, p_145878_3_, p_145878_4_, Blocks.noteblock, b0, this.note); 8 | + // CraftBukkit start 9 | + org.bukkit.event.block.NotePlayEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callNotePlayEvent(this.worldObj, p_145878_2_, p_145878_3_, p_145878_4_, b0, this.note); 10 | + 11 | + if (!event.isCancelled()) 12 | + { 13 | + this.worldObj.addBlockEvent(p_145878_2_, p_145878_3_, p_145878_4_, Blocks.noteblock, event.getInstrument().getType(), event.getNote().getId()); 14 | + } 15 | + 16 | + // CraftBukkit end 17 | } 18 | } 19 | + 20 | + // Cauldron start 21 | + @Override 22 | + public boolean canUpdate() 23 | + { 24 | + return false; 25 | + } 26 | + // Cauldron end 27 | } 28 | -------------------------------------------------------------------------------- /patches/net/minecraft/tileentity/TileEntityPiston.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/tileentity/TileEntityPiston.java 2 | +++ ../src-work/minecraft/net/minecraft/tileentity/TileEntityPiston.java 3 | @@ -140,6 +140,11 @@ 4 | 5 | public void updateEntity() 6 | { 7 | + if (this.worldObj == null) 8 | + { 9 | + return; // CraftBukkit 10 | + } 11 | + 12 | this.lastProgress = this.progress; 13 | 14 | if (this.lastProgress >= 1.0F) 15 | -------------------------------------------------------------------------------- /patches/net/minecraft/tileentity/TileEntitySkull.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/tileentity/TileEntitySkull.java 2 | +++ ../src-work/minecraft/net/minecraft/tileentity/TileEntitySkull.java 3 | @@ -79,6 +79,14 @@ 4 | this.func_152109_d(); 5 | } 6 | 7 | + // Cauldron start 8 | + @Override 9 | + public boolean canUpdate() 10 | + { 11 | + return false; 12 | + } 13 | + // Cauldron end 14 | + 15 | private void func_152109_d() 16 | { 17 | if (this.field_152110_j != null && !StringUtils.isNullOrEmpty(this.field_152110_j.getName())) 18 | @@ -113,6 +121,13 @@ 19 | this.field_145910_i = p_145903_1_; 20 | } 21 | 22 | + // CraftBukkit start 23 | + public int getRotation() 24 | + { 25 | + return this.field_145910_i; 26 | + } 27 | + // CraftBukkit end 28 | + 29 | @SideOnly(Side.CLIENT) 30 | public int func_145906_b() 31 | { 32 | -------------------------------------------------------------------------------- /patches/net/minecraft/util/ChunkCoordinates.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/util/ChunkCoordinates.java 2 | +++ ../src-work/minecraft/net/minecraft/util/ChunkCoordinates.java 3 | @@ -38,7 +38,7 @@ 4 | 5 | public int hashCode() 6 | { 7 | - return this.posX + this.posZ << 8 + this.posY << 16; 8 | + return this.posX + (this.posZ << 8) + (this.posY << 16); 9 | } 10 | 11 | public int compareTo(ChunkCoordinates p_compareTo_1_) 12 | -------------------------------------------------------------------------------- /patches/net/minecraft/util/MessageDeserializer.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/util/MessageDeserializer.java 2 | +++ ../src-work/minecraft/net/minecraft/util/MessageDeserializer.java 3 | @@ -39,7 +39,10 @@ 4 | 5 | if (packet == null) 6 | { 7 | - throw new IOException("Bad packet id " + j); 8 | + if (j == 92) 9 | + packetbuffer.setIndex(packetbuffer.writerIndex(), packetbuffer.writerIndex()); // Thermos - temporarily drop Factorization packet id 92 by skipping its bytes 10 | + else 11 | + throw new IOException("Bad packet id " + j); 12 | } 13 | else 14 | { 15 | -------------------------------------------------------------------------------- /patches/net/minecraft/util/WeightedRandomFishable.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/util/WeightedRandomFishable.java 2 | +++ ../src-work/minecraft/net/minecraft/util/WeightedRandomFishable.java 3 | @@ -6,9 +6,11 @@ 4 | 5 | public class WeightedRandomFishable extends WeightedRandom.Item 6 | { 7 | - private final ItemStack field_150711_b; 8 | - private float field_150712_c; 9 | - private boolean field_150710_d; 10 | + // Cauldron start - private -> public 11 | + public final ItemStack field_150711_b; 12 | + public float field_150712_c; 13 | + public boolean field_150710_d; 14 | + // Cauldron end 15 | private static final String __OBFID = "CL_00001664"; 16 | 17 | public WeightedRandomFishable(ItemStack p_i45317_1_, int p_i45317_2_) 18 | -------------------------------------------------------------------------------- /patches/net/minecraft/village/Village.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/village/Village.java 2 | +++ ../src-work/minecraft/net/minecraft/village/Village.java 3 | @@ -71,7 +71,7 @@ 4 | { 5 | EntityIronGolem entityirongolem = new EntityIronGolem(this.worldObj); 6 | entityirongolem.setPosition(vec3.xCoord, vec3.yCoord, vec3.zCoord); 7 | - this.worldObj.spawnEntityInWorld(entityirongolem); 8 | + this.worldObj.addEntity(entityirongolem, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.VILLAGE_DEFENSE); // CraftBukkit 9 | ++this.numIronGolems; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /patches/net/minecraft/village/VillageSiege.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/village/VillageSiege.java 2 | +++ ../src-work/minecraft/net/minecraft/village/VillageSiege.java 3 | @@ -196,7 +196,7 @@ 4 | } 5 | 6 | entityzombie.setLocationAndAngles(vec3.xCoord, vec3.yCoord, vec3.zCoord, this.worldObj.rand.nextFloat() * 360.0F, 0.0F); 7 | - this.worldObj.spawnEntityInWorld(entityzombie); 8 | + this.worldObj.addEntity(entityzombie, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.VILLAGE_INVASION); // CraftBukkit 9 | ChunkCoordinates chunkcoordinates = this.theVillage.getCenter(); 10 | entityzombie.setHomeArea(chunkcoordinates.posX, chunkcoordinates.posY, chunkcoordinates.posZ, this.theVillage.getVillageRadius()); 11 | return true; 12 | -------------------------------------------------------------------------------- /patches/net/minecraft/world/NextTickListEntry.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/world/NextTickListEntry.java 2 | +++ ../src-work/minecraft/net/minecraft/world/NextTickListEntry.java 3 | @@ -38,7 +38,7 @@ 4 | 5 | public int hashCode() 6 | { 7 | - return (this.xCoord * 1024 * 1024 + this.zCoord * 1024 + this.yCoord) * 256; 8 | + return ((yCoord * 31 + xCoord) * 31 + zCoord) * 17 + yCoord; 9 | } 10 | 11 | public NextTickListEntry setScheduledTime(long p_77176_1_) 12 | -------------------------------------------------------------------------------- /patches/net/minecraft/world/WorldManager.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/world/WorldManager.java 2 | +++ ../src-work/minecraft/net/minecraft/world/WorldManager.java 3 | @@ -12,7 +12,7 @@ 4 | public class WorldManager implements IWorldAccess 5 | { 6 | private MinecraftServer mcServer; 7 | - private WorldServer theWorldServer; 8 | + public WorldServer theWorldServer; // CraftBukkit - private -> public 9 | private static final String __OBFID = "CL_00001433"; 10 | 11 | public WorldManager(MinecraftServer p_i1517_1_, WorldServer p_i1517_2_) 12 | -------------------------------------------------------------------------------- /patches/net/minecraft/world/WorldType.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/world/WorldType.java 2 | +++ ../src-work/minecraft/net/minecraft/world/WorldType.java 3 | @@ -19,6 +19,7 @@ 4 | import net.minecraft.world.gen.layer.GenLayerZoom; 5 | import cpw.mods.fml.relauncher.Side; 6 | import cpw.mods.fml.relauncher.SideOnly; 7 | +import net.minecraftforge.common.util.EnumHelper; // Cauldron 8 | 9 | public class WorldType 10 | { 11 | @@ -49,6 +50,12 @@ 12 | this.canBeCreated = true; 13 | this.worldTypeId = p_i1960_1_; 14 | worldTypes[p_i1960_1_] = this; 15 | + // Cauldron start - add worldtype for bukkit if it does not already exist 16 | + if (org.bukkit.WorldType.getByName(p_i1960_2_) == null) 17 | + { 18 | + EnumHelper.addBukkitWorldType(p_i1960_2_); 19 | + } 20 | + // Cauldron end 21 | } 22 | 23 | public String getWorldTypeName() 24 | -------------------------------------------------------------------------------- /patches/net/minecraft/world/chunk/EmptyChunk.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/world/chunk/EmptyChunk.java 2 | +++ ../src-work/minecraft/net/minecraft/world/chunk/EmptyChunk.java 3 | @@ -113,7 +113,7 @@ 4 | 5 | public Random getRandomWithSeed(long p_76617_1_) 6 | { 7 | - return new Random(this.worldObj.getSeed() + (long)(this.xPosition * this.xPosition * 4987142) + (long)(this.xPosition * 5947611) + (long)(this.zPosition * this.zPosition) * 4392871L + (long)(this.zPosition * 389711) ^ p_76617_1_); 8 | + return new Random(this.worldObj.getSeed() + (4987142L * this.xPosition * this.xPosition) + (5947611L * this.xPosition) + (4392871L * this.zPosition * this.zPosition) + (389711L * this.zPosition) ^ p_76617_1_); 9 | } 10 | 11 | public boolean isEmpty() 12 | -------------------------------------------------------------------------------- /patches/net/minecraft/world/chunk/storage/AnvilSaveHandler.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/world/chunk/storage/AnvilSaveHandler.java 2 | +++ ../src-work/minecraft/net/minecraft/world/chunk/storage/AnvilSaveHandler.java 3 | @@ -21,6 +21,11 @@ 4 | public IChunkLoader getChunkLoader(WorldProvider p_75763_1_) 5 | { 6 | File file1 = this.getWorldDirectory(); 7 | + // Cauldron start 8 | + // To workaround the issue of Bukkit relying on every world having a seperate container 9 | + // we won't be generating a DIMXX folder for chunk loaders since this name is already generated 10 | + // for the world container with provider.getSaveFolder(). 11 | + /* 12 | File file2; 13 | 14 | if (p_75763_1_.getSaveFolder() != null) 15 | @@ -32,7 +37,9 @@ 16 | else 17 | { 18 | return new AnvilChunkLoader(file1); 19 | - } 20 | + } */ 21 | + return new AnvilChunkLoader(file1); 22 | + // Cauldron end 23 | } 24 | 25 | public void saveWorldInfoWithPlayer(WorldInfo p_75755_1_, NBTTagCompound p_75755_2_) 26 | -------------------------------------------------------------------------------- /patches/net/minecraft/world/chunk/storage/ChunkLoader.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/world/chunk/storage/ChunkLoader.java 2 | +++ ../src-work/minecraft/net/minecraft/world/chunk/storage/ChunkLoader.java 3 | @@ -113,9 +113,11 @@ 4 | NBTTagCompound nbttagcompound1 = new NBTTagCompound(); 5 | nbttagcompound1.setByte("Y", (byte)(j & 255)); 6 | nbttagcompound1.setByteArray("Blocks", abyte1); 7 | - nbttagcompound1.setByteArray("Data", nibblearray.data); 8 | - nbttagcompound1.setByteArray("SkyLight", nibblearray1.data); 9 | - nbttagcompound1.setByteArray("BlockLight", nibblearray2.data); 10 | + // Spigot start - data -> getValueArray() accessor 11 | + nbttagcompound1.setByteArray("Data", nibblearray.getValueArray()); 12 | + nbttagcompound1.setByteArray("SkyLight", nibblearray1.getValueArray()); 13 | + nbttagcompound1.setByteArray("BlockLight", nibblearray2.getValueArray()); 14 | + // Spigot end 15 | nbttaglist.appendTag(nbttagcompound1); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /patches/net/minecraft/world/gen/ChunkProviderGenerate.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/world/gen/ChunkProviderGenerate.java 2 | +++ ../src-work/minecraft/net/minecraft/world/gen/ChunkProviderGenerate.java 3 | @@ -194,6 +194,11 @@ 4 | for (int l = 0; l < 16; ++l) 5 | { 6 | BiomeGenBase biomegenbase = p_147422_5_[l + k * 16]; 7 | + if(biomegenbase == null) 8 | + { 9 | + System.out.println("[Thermos] WARNING: Detected null biomegenbase at " + (l+k*16) + "!"); 10 | + continue; 11 | + } 12 | biomegenbase.genTerrainBlocks(this.worldObj, this.rand, p_147422_3_, p_147422_4_, p_147422_1_ * 16 + k, p_147422_2_ * 16 + l, this.stoneNoise[l + k * 16]); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /patches/net/minecraft/world/gen/FlatLayerInfo.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/world/gen/FlatLayerInfo.java 2 | +++ ../src-work/minecraft/net/minecraft/world/gen/FlatLayerInfo.java 3 | @@ -12,7 +12,6 @@ 4 | 5 | public FlatLayerInfo(int p_i45467_1_, Block p_i45467_2_) 6 | { 7 | - this.layerCount = 1; 8 | this.layerCount = p_i45467_1_; 9 | this.field_151537_a = p_i45467_2_; 10 | } 11 | -------------------------------------------------------------------------------- /patches/net/minecraft/world/gen/feature/WorldGenShrub.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/world/gen/feature/WorldGenShrub.java 2 | +++ ../src-work/minecraft/net/minecraft/world/gen/feature/WorldGenShrub.java 3 | @@ -62,7 +62,13 @@ 4 | } 5 | } 6 | } 7 | + // CraftBukkit start - Return false if gen was unsuccessful 8 | + } 9 | + else 10 | + { 11 | + return false; 12 | } 13 | + // CraftBukkit end 14 | 15 | return true; 16 | } 17 | -------------------------------------------------------------------------------- /patches/net/minecraft/world/gen/feature/WorldGeneratorBonusChest.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/world/gen/feature/WorldGeneratorBonusChest.java 2 | +++ ../src-work/minecraft/net/minecraft/world/gen/feature/WorldGeneratorBonusChest.java 3 | @@ -50,7 +50,7 @@ 4 | p_76484_1_.setBlock(i1, j1, k1, Blocks.chest, 0, 2); 5 | TileEntityChest tileentitychest = (TileEntityChest)p_76484_1_.getTileEntity(i1, j1, k1); 6 | 7 | - if (tileentitychest != null && tileentitychest != null) 8 | + if (tileentitychest != null) 9 | { 10 | WeightedRandomChestContent.generateChestContents(p_76484_2_, this.theBonusChestGenerator, tileentitychest, this.itemsToGenerateInBonusChest); 11 | } 12 | -------------------------------------------------------------------------------- /patches/net/minecraft/world/gen/structure/MapGenStructure.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/world/gen/structure/MapGenStructure.java 2 | +++ ../src-work/minecraft/net/minecraft/world/gen/structure/MapGenStructure.java 3 | @@ -239,8 +239,17 @@ 4 | { 5 | if (this.field_143029_e == null) 6 | { 7 | - this.field_143029_e = (MapGenStructureData)p_143027_1_.perWorldStorage.loadData(MapGenStructureData.class, this.func_143025_a()); 8 | + // Spigot Start 9 | + if (p_143027_1_.getSpigotConfig().saveStructureInfo && !this.func_143025_a().equals("Mineshaft")) // Cauldron 10 | + { 11 | + this.field_143029_e = (MapGenStructureData) p_143027_1_.loadItemData(MapGenStructureData.class, this.func_143025_a()); 12 | + } 13 | + else 14 | + { 15 | + this.field_143029_e = new MapGenStructureData(this.func_143025_a()); 16 | + } 17 | 18 | + // Spigot End 19 | if (this.field_143029_e == null) 20 | { 21 | this.field_143029_e = new MapGenStructureData(this.func_143025_a()); 22 | -------------------------------------------------------------------------------- /patches/net/minecraft/world/gen/structure/StructureStart.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/world/gen/structure/StructureStart.java 2 | +++ ../src-work/minecraft/net/minecraft/world/gen/structure/StructureStart.java 3 | @@ -41,7 +41,8 @@ 4 | { 5 | StructureComponent structurecomponent = (StructureComponent)iterator.next(); 6 | 7 | - if (structurecomponent.getBoundingBox().intersectsWith(p_75068_3_) && !structurecomponent.addComponentParts(p_75068_1_, p_75068_2_, p_75068_3_)) 8 | + // Cauldron - validate structurecomponent 9 | + if ((structurecomponent == null || structurecomponent.getBoundingBox() == null) || (structurecomponent.getBoundingBox().intersectsWith(p_75068_3_) && !structurecomponent.addComponentParts(p_75068_1_, p_75068_2_, p_75068_3_))) 10 | { 11 | iterator.remove(); 12 | } 13 | -------------------------------------------------------------------------------- /patches/net/minecraft/world/storage/ISaveHandler.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/world/storage/ISaveHandler.java 2 | +++ ../src-work/minecraft/net/minecraft/world/storage/ISaveHandler.java 3 | @@ -27,4 +27,6 @@ 4 | File getMapFileFromName(String p_75758_1_); 5 | 6 | String getWorldDirectoryName(); 7 | + 8 | + java.util.UUID getUUID(); // CraftBukkit 9 | } 10 | -------------------------------------------------------------------------------- /patches/net/minecraft/world/storage/SaveHandlerMP.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/world/storage/SaveHandlerMP.java 2 | +++ ../src-work/minecraft/net/minecraft/world/storage/SaveHandlerMP.java 3 | @@ -3,6 +3,8 @@ 4 | import cpw.mods.fml.relauncher.Side; 5 | import cpw.mods.fml.relauncher.SideOnly; 6 | import java.io.File; 7 | +import java.util.UUID; 8 | + 9 | import net.minecraft.nbt.NBTTagCompound; 10 | import net.minecraft.world.MinecraftException; 11 | import net.minecraft.world.WorldProvider; 12 | @@ -50,4 +52,12 @@ 13 | { 14 | return null; 15 | } 16 | + 17 | + // Cauldron start 18 | + @Override 19 | + public UUID getUUID() 20 | + { 21 | + return this.getUUID(); 22 | + } 23 | + // Cauldron end 24 | } 25 | -------------------------------------------------------------------------------- /patches/net/minecraft/world/storage/ThreadedFileIOBase.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraft/world/storage/ThreadedFileIOBase.java 2 | +++ ../src-work/minecraft/net/minecraft/world/storage/ThreadedFileIOBase.java 3 | @@ -38,7 +38,7 @@ 4 | this.threadedIOQueue.remove(i--); 5 | ++this.savedIOCounter; 6 | } 7 | - 8 | + /* // Spigot start - don't sleep in between chunks so we unload faster. 9 | try 10 | { 11 | Thread.sleep(this.isThreadWaiting ? 0L : 10L); 12 | @@ -46,7 +46,7 @@ 13 | catch (InterruptedException interruptedexception1) 14 | { 15 | interruptedexception1.printStackTrace(); 16 | - } 17 | + } */ // Spigot end 18 | } 19 | 20 | if (this.threadedIOQueue.isEmpty()) 21 | -------------------------------------------------------------------------------- /patches/net/minecraftforge/common/ForgeChunkManager.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraftforge/common/ForgeChunkManager.java 2 | +++ ../src-work/minecraft/net/minecraftforge/common/ForgeChunkManager.java 3 | @@ -352,6 +352,7 @@ 4 | { 5 | this.ticket = ticket; 6 | this.location = location; 7 | + ticket.world.activity.put(location, ticket); 8 | } 9 | } 10 | 11 | @@ -363,6 +364,7 @@ 12 | { 13 | this.ticket = ticket; 14 | this.location = location; 15 | + ticket.world.activity.remove(location, ticket); 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /patches/net/minecraftforge/common/ForgeVersion.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraftforge/common/ForgeVersion.java 2 | +++ ../src-work/minecraft/net/minecraftforge/common/ForgeVersion.java 3 | @@ -25,7 +25,7 @@ 4 | //This number is incremented every time a interface changes or new major feature is added, and reset every Minecraft version 5 | public static final int revisionVersion = 4; 6 | //This number is incremented every time Jenkins builds Forge, and never reset. Should always be 0 in the repo code. 7 | - public static final int buildVersion = 0; 8 | + public static final int buildVersion = thermos.Thermos.lookupForgeRevision(); // KCauldron 9 | 10 | private static Status status = PENDING; 11 | private static String target = null; 12 | -------------------------------------------------------------------------------- /patches/net/minecraftforge/common/WorldSpecificSaveHandler.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraftforge/common/WorldSpecificSaveHandler.java 2 | +++ ../src-work/minecraft/net/minecraftforge/common/WorldSpecificSaveHandler.java 3 | @@ -1,6 +1,7 @@ 4 | package net.minecraftforge.common; 5 | 6 | import java.io.File; 7 | +import java.util.UUID; 8 | 9 | import net.minecraft.world.chunk.storage.IChunkLoader; 10 | import net.minecraft.world.storage.IPlayerFileData; 11 | @@ -43,4 +44,11 @@ 12 | return new File(dataDir, name + ".dat"); 13 | } 14 | 15 | + // Cauldron start 16 | + @Override 17 | + public UUID getUUID() 18 | + { 19 | + return parent.getUUID(); 20 | + } 21 | + // Cauldron end 22 | } 23 | -------------------------------------------------------------------------------- /patches/net/minecraftforge/common/chunkio/ChunkIOExecutor.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraftforge/common/chunkio/ChunkIOExecutor.java 2 | +++ ../src-work/minecraft/net/minecraftforge/common/chunkio/ChunkIOExecutor.java 3 | @@ -22,7 +22,7 @@ 4 | } 5 | 6 | public static void adjustPoolSize(int players) { 7 | - int size = Math.max(BASE_THREADS, (int) Math.ceil(players / PLAYERS_PER_THREAD)); 8 | + int size = Math.max(BASE_THREADS, (int) Math.ceil((double) players / PLAYERS_PER_THREAD)); 9 | instance.setActiveThreads(size); 10 | } 11 | 12 | -------------------------------------------------------------------------------- /patches/net/minecraftforge/common/network/ForgeNetworkHandler.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraftforge/common/network/ForgeNetworkHandler.java 2 | +++ ../src-work/minecraft/net/minecraftforge/common/network/ForgeNetworkHandler.java 3 | @@ -35,4 +35,9 @@ 4 | clientChannel.pipeline().addAfter(handlerName, "DimensionHandler", new DimensionMessageHandler()); 5 | clientChannel.pipeline().addAfter(handlerName, "FluidIdRegistryHandler", new FluidIdRegistryMessageHandler()); 6 | } 7 | + 8 | + public static FMLEmbeddedChannel getServerChannel() 9 | + { 10 | + return channelPair.get(Side.SERVER); 11 | + } 12 | } 13 | -------------------------------------------------------------------------------- /patches/net/minecraftforge/event/entity/living/LivingSpawnEvent.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraftforge/event/entity/living/LivingSpawnEvent.java 2 | +++ ../src-work/minecraft/net/minecraftforge/event/entity/living/LivingSpawnEvent.java 3 | @@ -48,6 +48,7 @@ 4 | public CheckSpawn(EntityLiving entity, World world, float x, float y, float z) 5 | { 6 | super(entity, world, x, y, z); 7 | + entity.spawnReason = "natural"; // Cauldron - used to handle CraftBukkit's SpawnReason with CustomSpawners 8 | } 9 | } 10 | 11 | @@ -71,6 +72,7 @@ 12 | public SpecialSpawn(EntityLiving entity, World world, float x, float y, float z) 13 | { 14 | super(entity, world, x, y, z); 15 | + entity.spawnReason = "spawner"; // Cauldron - used to handle CraftBukkit's SpawnReason with CustomSpawners 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /patches/net/minecraftforge/event/entity/player/PlayerInteractEvent.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/net/minecraftforge/event/entity/player/PlayerInteractEvent.java 2 | +++ ../src-work/minecraft/net/minecraftforge/event/entity/player/PlayerInteractEvent.java 3 | @@ -47,7 +47,7 @@ 4 | public final int z; 5 | public final int face; 6 | public final World world; 7 | - 8 | + public org.bukkit.event.player.PlayerInteractEvent cb; 9 | public Result useBlock = DEFAULT; 10 | public Result useItem = DEFAULT; 11 | 12 | -------------------------------------------------------------------------------- /patches/org/bukkit/Bukkit.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/org/bukkit/Bukkit.java 2 | +++ ../src-work/minecraft/org/bukkit/Bukkit.java 3 | @@ -301,6 +301,7 @@ 4 | */ 5 | public static void reload() { 6 | server.reload(); 7 | + org.spigotmc.CustomTimingsHandler.reload(); // Spigot 8 | } 9 | 10 | /** 11 | -------------------------------------------------------------------------------- /patches/org/bukkit/GameMode.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/org/bukkit/GameMode.java 2 | +++ ../src-work/minecraft/org/bukkit/GameMode.java 3 | @@ -11,7 +11,13 @@ 4 | * have 5 | */ 6 | public enum GameMode { 7 | + // Cauldron start - FakePlayers do not set their gametype and use the default 8 | /** 9 | + * Default mode 10 | + */ 11 | + NOT_SET(-1), 12 | + // Cauldron end 13 | + /** 14 | * Creative mode may fly, build instantly, become invulnerable and create 15 | * free items. 16 | */ 17 | -------------------------------------------------------------------------------- /patches/org/bukkit/command/Command.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/org/bukkit/command/Command.java 2 | +++ ../src-work/minecraft/org/bukkit/command/Command.java 3 | @@ -31,6 +31,7 @@ 4 | protected String usageMessage; 5 | private String permission; 6 | private String permissionMessage; 7 | + public org.spigotmc.CustomTimingsHandler timings; // Spigot 8 | 9 | protected Command(String name) { 10 | this(name, "", "/" + name, new ArrayList()); 11 | @@ -44,6 +45,7 @@ 12 | this.usageMessage = usageMessage; 13 | this.aliases = aliases; 14 | this.activeAliases = new ArrayList(aliases); 15 | + this.timings = new org.spigotmc.CustomTimingsHandler("** Command: " + name); // Spigot 16 | } 17 | 18 | /** 19 | @@ -200,6 +202,7 @@ 20 | public boolean setLabel(String name) { 21 | this.nextLabel = name; 22 | if (!isRegistered()) { 23 | + this.timings = new org.spigotmc.CustomTimingsHandler("** Command: " + name); // Spigot 24 | this.label = name; 25 | return true; 26 | } 27 | -------------------------------------------------------------------------------- /patches/org/bukkit/command/SimpleCommandMap.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/org/bukkit/command/SimpleCommandMap.java 2 | +++ ../src-work/minecraft/org/bukkit/command/SimpleCommandMap.java 3 | @@ -167,7 +167,7 @@ 4 | if (args.length == 0) { 5 | return false; 6 | } 7 | - 8 | + 9 | String sentCommandLabel = args[0].toLowerCase(); 10 | Command target = getCommand(sentCommandLabel); 11 | 12 | @@ -176,11 +176,15 @@ 13 | } 14 | 15 | try { 16 | + target.timings.startTiming(); // Spigot 17 | // Note: we don't return the result of target.execute as thats success / failure, we return handled (true) or not handled (false) 18 | target.execute(sender, sentCommandLabel, Arrays_copyOfRange(args, 1, args.length)); 19 | + target.timings.stopTiming(); // Spigot 20 | } catch (CommandException ex) { 21 | + target.timings.stopTiming(); // Spigot 22 | throw ex; 23 | } catch (Throwable ex) { 24 | + target.timings.stopTiming(); // Spigot 25 | throw new CommandException("Unhandled exception executing '" + commandLine + "' in " + target, ex); 26 | } 27 | 28 | -------------------------------------------------------------------------------- /patches/org/bukkit/command/defaults/BanIpCommand.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/org/bukkit/command/defaults/BanIpCommand.java 2 | +++ ../src-work/minecraft/org/bukkit/command/defaults/BanIpCommand.java 3 | @@ -32,7 +32,7 @@ 4 | return false; 5 | } 6 | 7 | - String reason = args.length > 0 ? StringUtils.join(args, ' ', 1, args.length) : null; 8 | + String reason = StringUtils.join(args, ' ', 1, args.length); 9 | 10 | if (ipValidity.matcher(args[0]).matches()) { 11 | processIPBan(args[0], sender, reason); 12 | -------------------------------------------------------------------------------- /patches/org/bukkit/command/defaults/DeopCommand.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/org/bukkit/command/defaults/DeopCommand.java 2 | +++ ../src-work/minecraft/org/bukkit/command/defaults/DeopCommand.java 3 | @@ -49,9 +49,9 @@ 4 | 5 | if (args.length == 1) { 6 | List completions = new ArrayList(); 7 | - for (OfflinePlayer player : Bukkit.getOfflinePlayers()) { 8 | + for (OfflinePlayer player : Bukkit.getOperators()) { 9 | String playerName = player.getName(); 10 | - if (player.isOp() && StringUtil.startsWithIgnoreCase(playerName, args[0])) { 11 | + if (StringUtil.startsWithIgnoreCase(playerName, args[0])) { 12 | completions.add(playerName); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /patches/org/bukkit/command/defaults/GameModeCommand.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/org/bukkit/command/defaults/GameModeCommand.java 2 | +++ ../src-work/minecraft/org/bukkit/command/defaults/GameModeCommand.java 3 | @@ -50,7 +50,7 @@ 4 | 5 | GameMode mode = GameMode.getByValue(value); 6 | 7 | - if (mode == null) { 8 | + if (mode == null || mode == GameMode.NOT_SET) { // Cauldron 9 | if (modeArg.equalsIgnoreCase("creative") || modeArg.equalsIgnoreCase("c")) { 10 | mode = GameMode.CREATIVE; 11 | } else if (modeArg.equalsIgnoreCase("adventure") || modeArg.equalsIgnoreCase("a")) { 12 | -------------------------------------------------------------------------------- /patches/org/bukkit/command/defaults/PluginsCommand.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/org/bukkit/command/defaults/PluginsCommand.java 2 | +++ ../src-work/minecraft/org/bukkit/command/defaults/PluginsCommand.java 3 | @@ -40,4 +40,12 @@ 4 | 5 | return "(" + plugins.length + "): " + pluginList.toString(); 6 | } 7 | + 8 | + // Spigot Start 9 | + @Override 10 | + public java.util.List tabComplete(CommandSender sender, String alias, String[] args) throws IllegalArgumentException 11 | + { 12 | + return java.util.Collections.emptyList(); 13 | + } 14 | + // Spigot End 15 | } 16 | -------------------------------------------------------------------------------- /patches/org/bukkit/command/defaults/SpreadPlayersCommand.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/org/bukkit/command/defaults/SpreadPlayersCommand.java 2 | +++ ../src-work/minecraft/org/bukkit/command/defaults/SpreadPlayersCommand.java 3 | @@ -92,7 +92,7 @@ 4 | final int rangeSpread = range(world, distance, xRangeMin, zRangeMin, xRangeMax, zRangeMax, locations); 5 | 6 | if (rangeSpread == -1) { 7 | - sender.sendMessage(String.format("Could not spread %d %s around %s,%s (too many players for space - try using spread of at most %s)", spreadSize, teams ? "teams" : "players", x, z)); 8 | + sender.sendMessage(String.format("Could not spread %d %s around %s,%s (too many players for space - try using spread of at most %s)", spreadSize, teams ? "teams" : "players", x, z, "TODO")); // TODO: Add latest argument 9 | return false; 10 | } 11 | 12 | -------------------------------------------------------------------------------- /patches/org/bukkit/command/defaults/TellCommand.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/org/bukkit/command/defaults/TellCommand.java 2 | +++ ../src-work/minecraft/org/bukkit/command/defaults/TellCommand.java 3 | @@ -45,4 +45,16 @@ 4 | 5 | return true; 6 | } 7 | + 8 | + // Spigot Start 9 | + @Override 10 | + public java.util.List tabComplete(CommandSender sender, String alias, String[] args) throws IllegalArgumentException 11 | + { 12 | + if ( args.length == 0 ) 13 | + { 14 | + return super.tabComplete( sender, alias, args ); 15 | + } 16 | + return java.util.Collections.emptyList(); 17 | + } 18 | + // Spigot End 19 | } 20 | -------------------------------------------------------------------------------- /patches/org/bukkit/command/defaults/TestForCommand.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/org/bukkit/command/defaults/TestForCommand.java 2 | +++ ../src-work/minecraft/org/bukkit/command/defaults/TestForCommand.java 3 | @@ -23,4 +23,16 @@ 4 | sender.sendMessage(ChatColor.RED + "/testfor is only usable by commandblocks with analog output."); 5 | return true; 6 | } 7 | + 8 | + // Spigot Start 9 | + @Override 10 | + public java.util.List tabComplete(CommandSender sender, String alias, String[] args) throws IllegalArgumentException 11 | + { 12 | + if ( args.length == 0 ) 13 | + { 14 | + return super.tabComplete( sender, alias, args ); 15 | + } 16 | + return java.util.Collections.emptyList(); 17 | + } 18 | + // Spigot End 19 | } 20 | -------------------------------------------------------------------------------- /patches/org/bukkit/command/defaults/WhitelistCommand.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/org/bukkit/command/defaults/WhitelistCommand.java 2 | +++ ../src-work/minecraft/org/bukkit/command/defaults/WhitelistCommand.java 3 | @@ -104,7 +104,7 @@ 4 | } else if (args.length == 2) { 5 | if (args[0].equalsIgnoreCase("add")) { 6 | List completions = new ArrayList(); 7 | - for (OfflinePlayer player : Bukkit.getOfflinePlayers()) { 8 | + for (OfflinePlayer player : Bukkit.getOnlinePlayers()) { 9 | String name = player.getName(); 10 | if (StringUtil.startsWithIgnoreCase(name, args[1]) && !player.isWhitelisted()) { 11 | completions.add(name); 12 | -------------------------------------------------------------------------------- /patches/org/bukkit/conversations/BooleanPrompt.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/org/bukkit/conversations/BooleanPrompt.java 2 | +++ ../src-work/minecraft/org/bukkit/conversations/BooleanPrompt.java 3 | @@ -15,12 +15,13 @@ 4 | 5 | @Override 6 | protected boolean isInputValid(ConversationContext context, String input) { 7 | - String[] accepted = {"true", "false", "on", "off", "yes", "no"}; 8 | + String[] accepted = {"true", "false", "on", "off", "yes", "no" /* Spigot: */, "y", "n", "1", "0", "right", "wrong", "correct", "incorrect", "valid", "invalid"}; // Spigot 9 | return ArrayUtils.contains(accepted, input.toLowerCase()); 10 | } 11 | 12 | @Override 13 | protected Prompt acceptValidatedInput(ConversationContext context, String input) { 14 | + if (input.equalsIgnoreCase("y") || input.equals("1") || input.equalsIgnoreCase("right") || input.equalsIgnoreCase("correct") || input.equalsIgnoreCase("valid")) input = "true"; // Spigot 15 | return acceptValidatedInput(context, BooleanUtils.toBoolean(input)); 16 | } 17 | 18 | -------------------------------------------------------------------------------- /patches/org/bukkit/conversations/Conversation.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/org/bukkit/conversations/Conversation.java 2 | +++ ../src-work/minecraft/org/bukkit/conversations/Conversation.java 3 | @@ -209,6 +209,7 @@ 4 | * @param input The user's chat text. 5 | */ 6 | public void acceptInput(String input) { 7 | + try { // Spigot 8 | if (currentPrompt != null) { 9 | 10 | // Echo the user's input 11 | @@ -228,6 +229,12 @@ 12 | currentPrompt = currentPrompt.acceptInput(context, input); 13 | outputNextPrompt(); 14 | } 15 | + // Spigot Start 16 | + } catch ( Throwable t ) 17 | + { 18 | + org.bukkit.Bukkit.getLogger().log( java.util.logging.Level.SEVERE, "Error handling conversation prompt", t ); 19 | + } 20 | + // Spigot End 21 | } 22 | 23 | /** 24 | -------------------------------------------------------------------------------- /patches/org/bukkit/entity/Arrow.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/org/bukkit/entity/Arrow.java 2 | +++ ../src-work/minecraft/org/bukkit/entity/Arrow.java 3 | @@ -39,4 +39,22 @@ 4 | * @param critical whether or not it should be critical 5 | */ 6 | public void setCritical(boolean critical); 7 | + 8 | + // Spigot start 9 | + public class Spigot extends Entity.Spigot 10 | + { 11 | + 12 | + public double getDamage() 13 | + { 14 | + throw new UnsupportedOperationException( "Not supported yet." ); 15 | + } 16 | + 17 | + public void setDamage(double damage) 18 | + { 19 | + throw new UnsupportedOperationException( "Not supported yet." ); 20 | + } 21 | + } 22 | + 23 | + Spigot spigot(); 24 | + // Spigot end 25 | } 26 | -------------------------------------------------------------------------------- /patches/org/bukkit/entity/Entity.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/org/bukkit/entity/Entity.java 2 | +++ ../src-work/minecraft/org/bukkit/entity/Entity.java 3 | @@ -291,4 +291,22 @@ 4 | * @return The current vehicle. 5 | */ 6 | public Entity getVehicle(); 7 | + 8 | + // Spigot Start 9 | + public class Spigot 10 | + { 11 | + 12 | + /** 13 | + * Returns whether this entity is invulnerable. 14 | + * 15 | + * @return True if the entity is invulnerable. 16 | + */ 17 | + public boolean isInvulnerable() 18 | + { 19 | + throw new UnsupportedOperationException( "Not supported yet." ); 20 | + } 21 | + } 22 | + 23 | + Spigot spigot(); 24 | + // Spigot End 25 | } 26 | -------------------------------------------------------------------------------- /patches/org/bukkit/event/entity/EntityDamageByBlockEvent.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/org/bukkit/event/entity/EntityDamageByBlockEvent.java 2 | +++ ../src-work/minecraft/org/bukkit/event/entity/EntityDamageByBlockEvent.java 3 | @@ -2,6 +2,7 @@ 4 | 5 | import java.util.Map; 6 | 7 | +import com.google.common.base.Function; 8 | import org.bukkit.block.Block; 9 | import org.bukkit.entity.Entity; 10 | 11 | @@ -22,8 +23,8 @@ 12 | this.damager = damager; 13 | } 14 | 15 | - public EntityDamageByBlockEvent(final Block damager, final Entity damagee, final DamageCause cause, final Map modifiers) { 16 | - super(damagee, cause, modifiers); 17 | + public EntityDamageByBlockEvent(final Block damager, final Entity damagee, final DamageCause cause, final Map modifiers, final Map> modifierFunctions) { 18 | + super(damagee, cause, modifiers, modifierFunctions); 19 | this.damager = damager; 20 | } 21 | 22 | -------------------------------------------------------------------------------- /patches/org/bukkit/event/entity/EntityDamageByEntityEvent.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/org/bukkit/event/entity/EntityDamageByEntityEvent.java 2 | +++ ../src-work/minecraft/org/bukkit/event/entity/EntityDamageByEntityEvent.java 3 | @@ -2,6 +2,7 @@ 4 | 5 | import java.util.Map; 6 | 7 | +import com.google.common.base.Function; 8 | import org.bukkit.entity.Entity; 9 | 10 | /** 11 | @@ -21,8 +22,8 @@ 12 | this.damager = damager; 13 | } 14 | 15 | - public EntityDamageByEntityEvent(final Entity damager, final Entity damagee, final DamageCause cause, final Map modifiers) { 16 | - super(damagee, cause, modifiers); 17 | + public EntityDamageByEntityEvent(final Entity damager, final Entity damagee, final DamageCause cause, final Map modifiers, final Map> modifierFunctions) { 18 | + super(damagee, cause, modifiers, modifierFunctions); 19 | this.damager = damager; 20 | } 21 | 22 | -------------------------------------------------------------------------------- /patches/org/bukkit/event/player/PlayerTeleportEvent.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/org/bukkit/event/player/PlayerTeleportEvent.java 2 | +++ ../src-work/minecraft/org/bukkit/event/player/PlayerTeleportEvent.java 3 | @@ -55,11 +55,28 @@ 4 | * portal 5 | */ 6 | END_PORTAL, 7 | + // Cauldron start - added cause for mods 8 | /** 9 | + * Indicates the teleportation was caused by a player entering a 10 | + * Mod portal 11 | + */ 12 | + MOD, 13 | + // Cauldron end 14 | + DEATH, // KCauldron 15 | + /** 16 | * Indicates the teleportation was caused by an event not covered by 17 | * this enum 18 | */ 19 | UNKNOWN; 20 | + 21 | + public boolean isPortal() { 22 | + switch(this) { 23 | + case NETHER_PORTAL: 24 | + case END_PORTAL: 25 | + return true; 26 | + } 27 | + return false; 28 | + } 29 | } 30 | 31 | @Override 32 | -------------------------------------------------------------------------------- /patches/org/bukkit/material/Cake.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/org/bukkit/material/Cake.java 2 | +++ ../src-work/minecraft/org/bukkit/material/Cake.java 3 | @@ -62,7 +62,7 @@ 4 | * @param n The number of slices eaten 5 | */ 6 | public void setSlicesEaten(int n) { 7 | - if (n < 6) { 8 | + if (n < 6 && n >=0) { 9 | setData((byte) n); 10 | } // TODO: else destroy the block? Probably not possible though 11 | } 12 | -------------------------------------------------------------------------------- /patches/org/bukkit/plugin/SimpleServicesManager.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/org/bukkit/plugin/SimpleServicesManager.java 2 | +++ ../src-work/minecraft/org/bukkit/plugin/SimpleServicesManager.java 3 | @@ -79,7 +79,8 @@ 4 | while (it2.hasNext()) { 5 | RegisteredServiceProvider registered = it2.next(); 6 | 7 | - if (registered.getPlugin().equals(plugin)) { 8 | + Plugin oPlugin = registered.getPlugin(); 9 | + if (oPlugin != null ? oPlugin.equals(plugin) : plugin == null) { 10 | it2.remove(); 11 | unregisteredEvents.add(new ServiceUnregisterEvent(registered)); 12 | } 13 | -------------------------------------------------------------------------------- /patches/org/bukkit/plugin/messaging/Messenger.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/org/bukkit/plugin/messaging/Messenger.java 2 | +++ ../src-work/minecraft/org/bukkit/plugin/messaging/Messenger.java 3 | @@ -18,7 +18,7 @@ 4 | /** 5 | * Represents the largest size that a Plugin Channel may be. 6 | */ 7 | - public static final int MAX_CHANNEL_SIZE = 16; 8 | + public static final int MAX_CHANNEL_SIZE = 20; // Cauldron - Vanilla increased limit of C17PacketCustomPayload size from 16 -> 20 in 1.7 9 | 10 | /** 11 | * Checks if the specified channel is a reserved name. 12 | -------------------------------------------------------------------------------- /patches/org/bukkit/plugin/messaging/StandardMessenger.java.patch: -------------------------------------------------------------------------------- 1 | --- ../src-base/minecraft/org/bukkit/plugin/messaging/StandardMessenger.java 2 | +++ ../src-work/minecraft/org/bukkit/plugin/messaging/StandardMessenger.java 3 | @@ -421,7 +421,15 @@ 4 | Set registrations = getIncomingChannelRegistrations(channel); 5 | 6 | for (PluginMessageListenerRegistration registration : registrations) { 7 | - registration.getListener().onPluginMessageReceived(channel, source, message); 8 | + // Spigot Start 9 | + try 10 | + { 11 | + registration.getListener().onPluginMessageReceived( channel, source, message ); 12 | + } catch ( Throwable t ) 13 | + { 14 | + org.bukkit.Bukkit.getLogger().log( java.util.logging.Level.WARNING, "Could not pass incoming plugin message to " + registration.getPlugin(), t ); 15 | + } 16 | + // Spigot End 17 | } 18 | } 19 | 20 | -------------------------------------------------------------------------------- /scripts/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ./gradlew --parallel jar 3 | -------------------------------------------------------------------------------- /scripts/clean.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ./gradlew clean setupCauldron 3 | -------------------------------------------------------------------------------- /scripts/reformat.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | find patches -type f -name '*.java.patch' -exec sed -i "s/\t/ /g" {} \; 3 | find src/main/java -type f -name '*.java' -exec sed -i "s/\t/ /g" {} \; 4 | 5 | -------------------------------------------------------------------------------- /scripts/setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | git submodule update --init --recursive 3 | ./gradlew setupCauldron installBundle 4 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'Contigo' 2 | -------------------------------------------------------------------------------- /src/main/guava10.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djoveryde/Contigo/0c7f04aa6e705823fb064f1ab72362808ddb0b19/src/main/guava10.zip -------------------------------------------------------------------------------- /src/main/guava17.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djoveryde/Contigo/0c7f04aa6e705823fb064f1ab72362808ddb0b19/src/main/guava17.zip -------------------------------------------------------------------------------- /src/main/java/net/md_5/bungee/api/ChatMessageType.java: -------------------------------------------------------------------------------- 1 | package net.md_5.bungee.api; 2 | 3 | public enum ChatMessageType { 4 | CHAT, 5 | SYSTEM, 6 | ACTION_BAR; 7 | 8 | 9 | private ChatMessageType() { 10 | } 11 | } 12 | 13 | -------------------------------------------------------------------------------- /src/main/java/net/md_5/bungee/api/chat/ClickEvent.java: -------------------------------------------------------------------------------- 1 | package net.md_5.bungee.api.chat; 2 | 3 | import java.beans.ConstructorProperties; 4 | 5 | public final class ClickEvent { 6 | private final Action action; 7 | private final String value; 8 | 9 | public Action getAction() { 10 | return this.action; 11 | } 12 | 13 | public String getValue() { 14 | return this.value; 15 | } 16 | 17 | public String toString() { 18 | return "ClickEvent(action=" + (Object)((Object)this.getAction()) + ", value=" + this.getValue() + ")"; 19 | } 20 | 21 | @ConstructorProperties(value={"action", "value"}) 22 | public ClickEvent(Action action, String value) { 23 | this.action = action; 24 | this.value = value; 25 | } 26 | 27 | public static enum Action { 28 | OPEN_URL, 29 | OPEN_FILE, 30 | RUN_COMMAND, 31 | SUGGEST_COMMAND; 32 | 33 | 34 | private Action() { 35 | } 36 | } 37 | 38 | } 39 | 40 | -------------------------------------------------------------------------------- /src/main/java/net/md_5/bungee/api/chat/HoverEvent.java: -------------------------------------------------------------------------------- 1 | package net.md_5.bungee.api.chat; 2 | 3 | import java.beans.ConstructorProperties; 4 | import java.util.Arrays; 5 | import net.md_5.bungee.api.chat.BaseComponent; 6 | 7 | public final class HoverEvent { 8 | private final Action action; 9 | private final BaseComponent[] value; 10 | 11 | public Action getAction() { 12 | return this.action; 13 | } 14 | 15 | public BaseComponent[] getValue() { 16 | return this.value; 17 | } 18 | 19 | public String toString() { 20 | return "HoverEvent(action=" + (Object)((Object)this.getAction()) + ", value=" + Arrays.deepToString(this.getValue()) + ")"; 21 | } 22 | 23 | @ConstructorProperties(value={"action", "value"}) 24 | public HoverEvent(Action action, BaseComponent[] value) { 25 | this.action = action; 26 | this.value = value; 27 | } 28 | 29 | public static enum Action { 30 | SHOW_TEXT, 31 | SHOW_ACHIEVEMENT, 32 | SHOW_ITEM; 33 | 34 | 35 | private Action() { 36 | } 37 | } 38 | 39 | } 40 | 41 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/world/Coords.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.world; 2 | public class Coords 3 | { 4 | public final int[] c; 5 | private final int hash; 6 | public Coords (int x, int y, int z) 7 | { 8 | this.c = new int[] { x, y, z }; 9 | this.hash = ((y * 31 + x) * 31 + z) * 17 + y; 10 | } 11 | @Override 12 | public int hashCode() 13 | { 14 | return this.hash; 15 | } 16 | @Override 17 | public boolean equals(Object o) 18 | { 19 | if(!(o instanceof Coords))return false; 20 | Coords c = (Coords)o; 21 | return this.c[0] == c.c[0] && this.c[1] == c.c[1] && this.c[2] == c.c[2]; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/net/minecraftforge/cauldron/CompatibilityMarker.java: -------------------------------------------------------------------------------- 1 | package net.minecraftforge.cauldron; 2 | 3 | public class CompatibilityMarker { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /src/main/java/net/minecraftforge/cauldron/SushchestvoCache.java: -------------------------------------------------------------------------------- 1 | package net.minecraftforge.cauldron; 2 | 3 | import net.minecraft.entity.Entity; 4 | 5 | public class SushchestvoCache { 6 | 7 | public Class entityClass; 8 | public boolean tickNoPlayers = false; 9 | public boolean neverEverTick = false; 10 | public int tickInterval = 1; 11 | public String configPath; 12 | public String worldName; 13 | 14 | public SushchestvoCache(Class entityClass, String worldName, String configPath, boolean tickNoPlayers, boolean neverEverTick, int tickInterval) 15 | { 16 | this.entityClass = entityClass; 17 | this.worldName = worldName.intern(); 18 | this.tickNoPlayers = tickNoPlayers; 19 | this.neverEverTick = neverEverTick; 20 | this.tickInterval = tickInterval; 21 | this.configPath = configPath; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/net/minecraftforge/cauldron/TileEntityCache.java: -------------------------------------------------------------------------------- 1 | package net.minecraftforge.cauldron; 2 | 3 | import net.minecraft.tileentity.TileEntity; 4 | 5 | public class TileEntityCache { 6 | 7 | public Class tileEntityClass; 8 | public boolean tickNoPlayers = false; 9 | public int tickInterval = 1; 10 | public String configPath; 11 | public String worldName; 12 | 13 | public TileEntityCache(Class tileEntityClass, String worldName, String configPath, boolean tickNoPlayers, int tickInterval) 14 | { 15 | this.tileEntityClass = tileEntityClass; 16 | this.worldName = worldName; 17 | this.tickNoPlayers = tickNoPlayers; 18 | this.tickInterval = tickInterval; 19 | this.configPath = configPath; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/net/minecraftforge/cauldron/api/Cauldron.java: -------------------------------------------------------------------------------- 1 | package net.minecraftforge.cauldron.api; 2 | 3 | import net.minecraftforge.cauldron.api.inventory.BukkitOreDictionary; 4 | 5 | /** 6 | * Represents the Bukkit plugin interface to Cauldron, for version and singleton handling 7 | */ 8 | public class Cauldron { 9 | private static CauldronApi instance; 10 | public static void setInterface(CauldronApi cauldron) { 11 | if (instance != null) { 12 | throw new IllegalStateException(); 13 | } 14 | instance = cauldron; 15 | } 16 | 17 | /** 18 | * Gets the current CauldronApi singleton 19 | * 20 | * @return current instance of CauldronApi. will always be present. 21 | */ 22 | public static CauldronApi getInterface() { 23 | return instance; 24 | } 25 | 26 | public static BukkitOreDictionary getOreDictionary() { 27 | return instance.getOreDictionary(); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/net/minecraftforge/cauldron/api/CauldronApi.java: -------------------------------------------------------------------------------- 1 | package net.minecraftforge.cauldron.api; 2 | 3 | import net.minecraftforge.cauldron.api.inventory.BukkitOreDictionary; 4 | 5 | /** 6 | * Represents the Bukkit plugin interface to Forge features. 7 | */ 8 | public interface CauldronApi { 9 | /** 10 | * Get the ore dictionary interface. 11 | * 12 | * @return ore dictionary interface 13 | */ 14 | public BukkitOreDictionary getOreDictionary(); 15 | 16 | /** 17 | * Get the fishing interface. 18 | * 19 | * @return the fishing interface 20 | */ 21 | public Fishing getFishingInterface(); 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/net/minecraftforge/cauldron/apiimpl/CauldronPluginInterface.java: -------------------------------------------------------------------------------- 1 | package net.minecraftforge.cauldron.apiimpl; 2 | 3 | import net.minecraftforge.cauldron.api.Cauldron; 4 | import net.minecraftforge.cauldron.api.CauldronApi; 5 | import net.minecraftforge.cauldron.api.Fishing; 6 | import net.minecraftforge.cauldron.api.inventory.BukkitOreDictionary; 7 | import net.minecraftforge.cauldron.apiimpl.inventory.OreDictionaryInterface; 8 | import org.bukkit.Bukkit; 9 | import org.bukkit.plugin.ServicePriority; 10 | 11 | public class CauldronPluginInterface implements CauldronApi { 12 | private BukkitOreDictionary oreDictionary = new OreDictionaryInterface(); 13 | private Fishing fishingInterface = new FishingInterface(); 14 | 15 | public void install() { 16 | Cauldron.setInterface(this); 17 | Bukkit.getServicesManager().register(CauldronApi.class, this, null, ServicePriority.Highest); 18 | } 19 | 20 | @Override 21 | public BukkitOreDictionary getOreDictionary() { 22 | return oreDictionary; 23 | } 24 | 25 | @Override 26 | public Fishing getFishingInterface() { 27 | return fishingInterface; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/net/minecraftforge/cauldron/block/CraftCustomContainer.java: -------------------------------------------------------------------------------- 1 | package net.minecraftforge.cauldron.block; 2 | 3 | import net.minecraft.inventory.IInventory; 4 | 5 | import org.bukkit.block.Block; 6 | import org.bukkit.craftbukkit.CraftWorld; 7 | import org.bukkit.craftbukkit.block.CraftBlockState; 8 | import org.bukkit.craftbukkit.inventory.CraftInventory; 9 | import org.bukkit.inventory.Inventory; 10 | import org.bukkit.inventory.InventoryHolder; 11 | 12 | public class CraftCustomContainer extends CraftBlockState implements InventoryHolder { 13 | private final CraftWorld world; 14 | private final net.minecraft.inventory.IInventory container; 15 | 16 | public CraftCustomContainer(Block block) { 17 | super(block); 18 | world = (CraftWorld) block.getWorld(); 19 | container = (IInventory)world.getTileEntityAt(getX(), getY(), getZ()); 20 | } 21 | 22 | @Override 23 | public Inventory getInventory() { 24 | CraftInventory inventory = new CraftInventory(container); 25 | return inventory; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/net/minecraftforge/cauldron/configuration/BoolSetting.java: -------------------------------------------------------------------------------- 1 | package net.minecraftforge.cauldron.configuration; 2 | 3 | import org.apache.commons.lang.BooleanUtils; 4 | 5 | public class BoolSetting extends Setting 6 | { 7 | private Boolean value; 8 | private ConfigBase config; 9 | 10 | public BoolSetting(ConfigBase config, String path, Boolean def, String description) 11 | { 12 | super(path, def, description); 13 | this.value = def; 14 | this.config = config; 15 | } 16 | 17 | @Override 18 | public Boolean getValue() 19 | { 20 | return value; 21 | } 22 | 23 | @Override 24 | public void setValue(String value) 25 | { 26 | this.value = BooleanUtils.toBooleanObject(value); 27 | this.value = this.value == null ? def : this.value; 28 | config.set(path, this.value); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/net/minecraftforge/cauldron/configuration/CauldronWorldConfig.java: -------------------------------------------------------------------------------- 1 | package net.minecraftforge.cauldron.configuration; 2 | 3 | public class CauldronWorldConfig extends WorldConfig 4 | { 5 | public boolean entityDespawnImmediate = true; 6 | 7 | public CauldronWorldConfig(String worldName, ConfigBase configFile) 8 | { 9 | super(worldName, configFile); 10 | init(); 11 | } 12 | 13 | public void init() 14 | { 15 | entityDespawnImmediate = getBoolean( "entity-despawn-immediate", false); 16 | this.save(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/minecraftforge/cauldron/configuration/IntArraySetting.java: -------------------------------------------------------------------------------- 1 | package net.minecraftforge.cauldron.configuration; 2 | 3 | import java.util.ArrayList; 4 | import java.util.HashSet; 5 | 6 | public class IntArraySetting extends ArraySetting 7 | { 8 | public IntArraySetting(ConfigBase config, String path, String def, String description) 9 | { 10 | super(path, def, description, config); 11 | } 12 | 13 | 14 | @Override 15 | public void initArr(String array) { 16 | String[] potential_values = array.split(","); 17 | 18 | this.value_array = new ArrayList(potential_values.length); 19 | this.value_set = new HashSet(potential_values.length); 20 | 21 | for(String potval : potential_values) 22 | { 23 | try 24 | { 25 | if(potval.length() == 0) 26 | continue; 27 | 28 | this.value_array.add(Integer.parseInt(potval)); 29 | } 30 | catch ( Throwable t) 31 | { 32 | System.out.println("[Thermos] Failed to add an option from config file"); 33 | t.printStackTrace(); 34 | } 35 | } 36 | this.value_set.addAll(this.value_array); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/net/minecraftforge/cauldron/configuration/IntSetting.java: -------------------------------------------------------------------------------- 1 | package net.minecraftforge.cauldron.configuration; 2 | 3 | public class IntSetting extends Setting 4 | { 5 | private Integer value; 6 | private ConfigBase config; 7 | 8 | public IntSetting(ConfigBase config, String path, Integer def, String description) 9 | { 10 | super(path, def, description); 11 | this.value = def; 12 | this.config = config; 13 | } 14 | 15 | @Override 16 | public Integer getValue() 17 | { 18 | return value; 19 | } 20 | 21 | @Override 22 | public void setValue(String value) 23 | { 24 | this.value = org.apache.commons.lang.math.NumberUtils.toInt(value, def); 25 | config.set(path, this.value); 26 | } 27 | } 28 | 29 | -------------------------------------------------------------------------------- /src/main/java/net/minecraftforge/cauldron/configuration/Setting.java: -------------------------------------------------------------------------------- 1 | package net.minecraftforge.cauldron.configuration; 2 | 3 | 4 | public abstract class Setting 5 | { 6 | public final String path; 7 | public final T def; 8 | public final String description; 9 | 10 | public Setting(String path, T def, String description) 11 | { 12 | this.path = path; 13 | this.def = def; 14 | this.description = description; 15 | } 16 | 17 | public abstract T getValue(); 18 | 19 | public abstract void setValue(String value); 20 | } -------------------------------------------------------------------------------- /src/main/java/net/minecraftforge/cauldron/configuration/StringArraySetting.java: -------------------------------------------------------------------------------- 1 | package net.minecraftforge.cauldron.configuration; 2 | 3 | import java.util.ArrayList; 4 | import java.util.HashSet; 5 | 6 | public class StringArraySetting extends ArraySetting 7 | { 8 | public StringArraySetting(ConfigBase config, String path, String def, String description) 9 | { 10 | super(path, def, description, config); 11 | } 12 | 13 | @Override 14 | public void initArr(String values) 15 | { 16 | String[] vals = values.split(","); 17 | 18 | this.value_array = new ArrayList(vals.length); 19 | this.value_set = new HashSet(vals.length); 20 | 21 | for(String val : vals) 22 | { 23 | if(val.length() == 0) 24 | continue; 25 | this.value_array.add(val); 26 | } 27 | this.value_set.addAll(this.value_array); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/net/minecraftforge/cauldron/configuration/StringSetting.java: -------------------------------------------------------------------------------- 1 | package net.minecraftforge.cauldron.configuration; 2 | 3 | public class StringSetting extends Setting { 4 | private String value; 5 | private ConfigBase config; 6 | 7 | public StringSetting(ConfigBase config, String path, String def, 8 | String description) { 9 | super(path, def, description); 10 | this.value = def; 11 | this.config = config; 12 | } 13 | 14 | @Override 15 | public String getValue() { 16 | return value; 17 | } 18 | 19 | @Override 20 | public void setValue(String value) { 21 | config.set(path, this.value = value); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/net/minecraftforge/cauldron/configuration/SushchestvoWorldConfig.java: -------------------------------------------------------------------------------- 1 | package net.minecraftforge.cauldron.configuration; 2 | 3 | public class SushchestvoWorldConfig extends WorldConfig 4 | { 5 | public SushchestvoWorldConfig(String worldName, ConfigBase configFile) 6 | { 7 | super(worldName, configFile); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/net/minecraftforge/cauldron/configuration/TileEntityWorldConfig.java: -------------------------------------------------------------------------------- 1 | package net.minecraftforge.cauldron.configuration; 2 | 3 | public class TileEntityWorldConfig extends WorldConfig 4 | { 5 | public TileEntityWorldConfig(String worldName, ConfigBase configFile) 6 | { 7 | super(worldName, configFile); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/net/minecraftforge/cauldron/inventory/CraftCustomInventory.java: -------------------------------------------------------------------------------- 1 | package net.minecraftforge.cauldron.inventory; 2 | 3 | import net.minecraft.inventory.IInventory; 4 | 5 | import org.bukkit.craftbukkit.inventory.CraftInventory; 6 | 7 | public class CraftCustomInventory extends CraftInventory { 8 | 9 | public CraftCustomInventory(IInventory inventory) { 10 | super(inventory); 11 | // TODO Auto-generated constructor stub 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/net/minecraftforge/cauldron/inventory/CraftCustomInventoryView.java: -------------------------------------------------------------------------------- 1 | package net.minecraftforge.cauldron.inventory; 2 | 3 | import net.minecraft.inventory.Container; 4 | 5 | import org.bukkit.craftbukkit.inventory.CraftInventoryView; 6 | import org.bukkit.entity.HumanEntity; 7 | import org.bukkit.inventory.Inventory; 8 | 9 | public class CraftCustomInventoryView extends CraftInventoryView { 10 | 11 | public CraftCustomInventoryView(HumanEntity player, Inventory viewing, 12 | Container container) { 13 | super(player, viewing, container); 14 | // TODO Auto-generated constructor stub 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/net/minecraftforge/cauldron/inventory/CustomModRecipe.java: -------------------------------------------------------------------------------- 1 | package net.minecraftforge.cauldron.inventory; 2 | 3 | import net.minecraft.item.crafting.IRecipe; 4 | import org.bukkit.craftbukkit.inventory.CraftItemStack; 5 | import org.bukkit.inventory.ItemStack; 6 | import org.bukkit.inventory.Recipe; 7 | 8 | /** 9 | * Bukkit API wrapper for non-vanilla IRecipe classes 10 | */ 11 | public class CustomModRecipe implements Recipe { 12 | private IRecipe iRecipe; 13 | 14 | public CustomModRecipe(IRecipe iRecipe) { 15 | this.iRecipe = iRecipe; 16 | } 17 | 18 | @Override 19 | public ItemStack getResult() { 20 | return CraftItemStack.asCraftMirror(iRecipe.getRecipeOutput()); 21 | } 22 | 23 | public IRecipe getHandle() { 24 | return iRecipe; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/LoggerOutputStream.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit; 2 | 3 | import java.io.ByteArrayOutputStream; 4 | import java.io.IOException; 5 | import org.apache.logging.log4j.Level; 6 | import org.apache.logging.log4j.Logger; 7 | 8 | public class LoggerOutputStream extends ByteArrayOutputStream { 9 | private final String separator = System.getProperty("line.separator"); 10 | private final Logger logger; 11 | private final Level level; 12 | 13 | public LoggerOutputStream(Logger logger, Level level) { 14 | super(); 15 | this.logger = logger; 16 | this.level = level; 17 | } 18 | 19 | @Override 20 | public void flush() throws IOException { 21 | synchronized (this) { 22 | super.flush(); 23 | String record = this.toString(); 24 | super.reset(); 25 | 26 | if ((record.length() > 0) && (!record.equals(separator))) { 27 | logger.log(level, record); 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/Overridden.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * Indicates a method needs to be overridden in sub classes 10 | */ 11 | @Target({ElementType.CONSTRUCTOR, ElementType.METHOD}) 12 | @Retention(RetentionPolicy.RUNTIME) 13 | public @interface Overridden { 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/block/CraftBeacon.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.block; 2 | 3 | import net.minecraft.tileentity.TileEntityBeacon; 4 | 5 | import org.bukkit.block.Block; 6 | import org.bukkit.block.Beacon; 7 | import org.bukkit.craftbukkit.CraftWorld; 8 | import org.bukkit.craftbukkit.inventory.CraftInventoryBeacon; 9 | import org.bukkit.inventory.Inventory; 10 | 11 | public class CraftBeacon extends CraftBlockState implements Beacon { 12 | private final CraftWorld world; 13 | private final TileEntityBeacon beacon; 14 | 15 | public CraftBeacon(final Block block) { 16 | super(block); 17 | 18 | world = (CraftWorld) block.getWorld(); 19 | beacon = (TileEntityBeacon) world.getTileEntityAt(getX(), getY(), getZ()); 20 | } 21 | 22 | public Inventory getInventory() { 23 | return new CraftInventoryBeacon(beacon); 24 | } 25 | 26 | @Override 27 | public boolean update(boolean force, boolean applyPhysics) { 28 | boolean result = super.update(force, applyPhysics); 29 | 30 | if (result) { 31 | beacon.markDirty(); 32 | } 33 | 34 | return result; 35 | } 36 | } 37 | 38 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/block/CraftHopper.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.block; 2 | 3 | import net.minecraft.tileentity.TileEntityHopper; 4 | import org.bukkit.block.Block; 5 | import org.bukkit.block.Hopper; 6 | import org.bukkit.craftbukkit.CraftWorld; 7 | import org.bukkit.craftbukkit.inventory.CraftInventory; 8 | import org.bukkit.inventory.Inventory; 9 | 10 | public class CraftHopper extends CraftBlockState implements Hopper { 11 | private final TileEntityHopper hopper; 12 | 13 | public CraftHopper(final Block block) { 14 | super(block); 15 | 16 | hopper = (TileEntityHopper) ((CraftWorld) block.getWorld()).getTileEntityAt(getX(), getY(), getZ()); 17 | } 18 | 19 | public Inventory getInventory() { 20 | return new CraftInventory(hopper); 21 | } 22 | 23 | @Override 24 | public boolean update(boolean force, boolean applyPhysics) { 25 | boolean result = super.update(force, applyPhysics); 26 | 27 | if (result) { 28 | hopper.markDirty(); 29 | } 30 | 31 | return result; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/command/CraftRemoteConsoleCommandSender.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.command; 2 | 3 | import net.minecraft.network.rcon.RConConsoleSource; 4 | import org.bukkit.command.RemoteConsoleCommandSender; 5 | 6 | public class CraftRemoteConsoleCommandSender extends ServerCommandSender implements RemoteConsoleCommandSender { 7 | public CraftRemoteConsoleCommandSender() { 8 | super(); 9 | } 10 | 11 | @Override 12 | public void sendMessage(String message) { 13 | RConConsoleSource.instance.sendMessage(message + "\n"); // Send a newline after each message, to preserve formatting. 14 | } 15 | 16 | @Override 17 | public void sendMessage(String[] messages) { 18 | for (String message : messages) { 19 | sendMessage(message); 20 | } 21 | } 22 | 23 | @Override 24 | public String getName() { 25 | return "Rcon"; 26 | } 27 | 28 | @Override 29 | public boolean isOp() { 30 | return true; 31 | } 32 | 33 | @Override 34 | public void setOp(boolean value) { 35 | throw new UnsupportedOperationException("Cannot change operator status of remote controller."); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/command/ModCustomCommand.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.command; 2 | 3 | import java.util.List; 4 | 5 | import org.bukkit.command.Command; 6 | import org.bukkit.command.CommandSender; 7 | 8 | import net.minecraft.command.ICommand; 9 | import net.minecraft.command.ICommandSender; 10 | 11 | public class ModCustomCommand extends Command { 12 | 13 | public ModCustomCommand(String name) 14 | { 15 | super(name); 16 | } 17 | 18 | public ModCustomCommand(String name, String description, String usageMessage, List aliases) 19 | { 20 | super(name, description, usageMessage, aliases); 21 | } 22 | 23 | @Override 24 | public boolean execute(CommandSender sender, String commandLabel, String[] args) { 25 | // Dummy method 26 | return false; 27 | } 28 | } -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/AbstractProjectile.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import org.bukkit.craftbukkit.CraftServer; 4 | import org.bukkit.entity.Projectile; 5 | 6 | public abstract class AbstractProjectile extends CraftEntity implements Projectile { 7 | 8 | private boolean doesBounce; 9 | 10 | public AbstractProjectile(CraftServer server, net.minecraft.entity.Entity entity) { 11 | super(server, entity); 12 | doesBounce = false; 13 | } 14 | 15 | public boolean doesBounce() { 16 | return doesBounce; 17 | } 18 | 19 | public void setBounce(boolean doesBounce) { 20 | this.doesBounce = doesBounce; 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftAmbient.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import net.minecraft.entity.passive.EntityAmbientCreature; 4 | import org.bukkit.craftbukkit.CraftServer; 5 | import org.bukkit.entity.Ambient; 6 | import org.bukkit.entity.EntityType; 7 | 8 | public class CraftAmbient extends CraftLivingEntity implements Ambient { 9 | public CraftAmbient(CraftServer server, EntityAmbientCreature entity) { 10 | super(server, entity); 11 | } 12 | 13 | @Override 14 | public EntityAmbientCreature getHandle() { 15 | return (EntityAmbientCreature) entity; 16 | } 17 | 18 | @Override 19 | public String toString() { 20 | return this.entityName; // Cauldron 21 | } 22 | 23 | public EntityType getType() { 24 | // Cauldron start 25 | EntityType type = EntityType.fromName(this.entityName); 26 | if (type != null) 27 | return type; 28 | else return EntityType.UNKNOWN; 29 | // Cauldron end 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftAnimals.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import net.minecraft.entity.passive.EntityAnimal; 4 | import org.bukkit.craftbukkit.CraftServer; 5 | import org.bukkit.entity.Animals; 6 | 7 | public class CraftAnimals extends CraftAgeable implements Animals { 8 | 9 | public CraftAnimals(CraftServer server, EntityAnimal entity) { 10 | super(server, entity); 11 | } 12 | 13 | @Override 14 | public EntityAnimal getHandle() { 15 | return (EntityAnimal) entity; 16 | } 17 | 18 | @Override 19 | public String toString() { 20 | return this.entityName; // Cauldron 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftBat.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import net.minecraft.entity.passive.EntityBat; 4 | import org.bukkit.craftbukkit.CraftServer; 5 | import org.bukkit.entity.Bat; 6 | import org.bukkit.entity.EntityType; 7 | 8 | public class CraftBat extends CraftAmbient implements Bat { 9 | public CraftBat(CraftServer server, EntityBat entity) { 10 | super(server, entity); 11 | } 12 | 13 | @Override 14 | public EntityBat getHandle() { 15 | return (EntityBat) entity; 16 | } 17 | 18 | @Override 19 | public String toString() { 20 | return "CraftBat"; 21 | } 22 | 23 | public EntityType getType() { 24 | return EntityType.BAT; 25 | } 26 | 27 | @Override 28 | public boolean isAwake() { 29 | return !getHandle().getIsBatHanging(); 30 | } 31 | 32 | @Override 33 | public void setAwake(boolean state) { 34 | getHandle().setIsBatHanging(!state); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftBlaze.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import net.minecraft.entity.monster.EntityBlaze; 4 | 5 | import org.bukkit.craftbukkit.CraftServer; 6 | import org.bukkit.entity.Blaze; 7 | import org.bukkit.entity.EntityType; 8 | 9 | public class CraftBlaze extends CraftMonster implements Blaze { 10 | public CraftBlaze(CraftServer server, EntityBlaze entity) { 11 | super(server, entity); 12 | } 13 | 14 | @Override 15 | public EntityBlaze getHandle() { 16 | return (EntityBlaze) entity; 17 | } 18 | 19 | @Override 20 | public String toString() { 21 | return "CraftBlaze"; 22 | } 23 | 24 | public EntityType getType() { 25 | return EntityType.BLAZE; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftCaveSpider.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import net.minecraft.entity.monster.EntityCaveSpider; 4 | 5 | import org.bukkit.craftbukkit.CraftServer; 6 | import org.bukkit.entity.CaveSpider; 7 | import org.bukkit.entity.EntityType; 8 | 9 | public class CraftCaveSpider extends CraftSpider implements CaveSpider { 10 | public CraftCaveSpider(CraftServer server, EntityCaveSpider entity) { 11 | super(server, entity); 12 | } 13 | 14 | @Override 15 | public EntityCaveSpider getHandle() { 16 | return (EntityCaveSpider) entity; 17 | } 18 | 19 | @Override 20 | public String toString() { 21 | return "CraftCaveSpider"; 22 | } 23 | 24 | public EntityType getType() { 25 | return EntityType.CAVE_SPIDER; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftChicken.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import net.minecraft.entity.passive.EntityChicken; 4 | 5 | import org.bukkit.craftbukkit.CraftServer; 6 | import org.bukkit.entity.Chicken; 7 | import org.bukkit.entity.EntityType; 8 | 9 | public class CraftChicken extends CraftAnimals implements Chicken { 10 | 11 | public CraftChicken(CraftServer server, EntityChicken entity) { 12 | super(server, entity); 13 | } 14 | 15 | @Override 16 | public EntityChicken getHandle() { 17 | return (EntityChicken) entity; 18 | } 19 | 20 | @Override 21 | public String toString() { 22 | return "CraftChicken"; 23 | } 24 | 25 | public EntityType getType() { 26 | return EntityType.CHICKEN; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftComplexLivingEntity.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import net.minecraft.entity.EntityLivingBase; 4 | 5 | import org.bukkit.craftbukkit.CraftServer; 6 | import org.bukkit.entity.ComplexLivingEntity; 7 | 8 | public abstract class CraftComplexLivingEntity extends CraftLivingEntity implements ComplexLivingEntity { 9 | public CraftComplexLivingEntity(CraftServer server, EntityLivingBase entity) { 10 | super(server, entity); 11 | } 12 | 13 | @Override 14 | public EntityLivingBase getHandle() { 15 | return (EntityLivingBase) entity; 16 | } 17 | 18 | @Override 19 | public String toString() { 20 | return "CraftComplexLivingEntity"; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftCow.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import net.minecraft.entity.passive.EntityCow; 4 | 5 | import org.bukkit.craftbukkit.CraftServer; 6 | import org.bukkit.entity.Cow; 7 | import org.bukkit.entity.EntityType; 8 | 9 | public class CraftCow extends CraftAnimals implements Cow { 10 | 11 | public CraftCow(CraftServer server, EntityCow entity) { 12 | super(server, entity); 13 | } 14 | 15 | @Override 16 | public EntityCow getHandle() { 17 | return (EntityCow) entity; 18 | } 19 | 20 | @Override 21 | public String toString() { 22 | return "CraftCow"; 23 | } 24 | 25 | public EntityType getType() { 26 | return EntityType.COW; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftEgg.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import net.minecraft.entity.projectile.EntityEgg; 4 | import org.bukkit.craftbukkit.CraftServer; 5 | import org.bukkit.entity.Egg; 6 | import org.bukkit.entity.EntityType; 7 | 8 | public class CraftEgg extends CraftProjectile implements Egg { 9 | public CraftEgg(CraftServer server, EntityEgg entity) { 10 | super(server, entity); 11 | } 12 | 13 | @Override 14 | public EntityEgg getHandle() { 15 | return (EntityEgg) entity; 16 | } 17 | 18 | @Override 19 | public String toString() { 20 | return "CraftEgg"; 21 | } 22 | 23 | public EntityType getType() { 24 | return EntityType.EGG; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftEnderCrystal.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import net.minecraft.entity.item.EntityEnderCrystal; 4 | import org.bukkit.craftbukkit.CraftServer; 5 | import org.bukkit.entity.EnderCrystal; 6 | import org.bukkit.entity.EntityType; 7 | 8 | public class CraftEnderCrystal extends CraftEntity implements EnderCrystal { 9 | public CraftEnderCrystal(CraftServer server, EntityEnderCrystal entity) { 10 | super(server, entity); 11 | } 12 | 13 | @Override 14 | public EntityEnderCrystal getHandle() { 15 | return (EntityEnderCrystal) entity; 16 | } 17 | 18 | @Override 19 | public String toString() { 20 | return "CraftEnderCrystal"; 21 | } 22 | 23 | public EntityType getType() { 24 | return EntityType.ENDER_CRYSTAL; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftEnderPearl.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import net.minecraft.entity.item.EntityEnderPearl; 4 | import org.bukkit.craftbukkit.CraftServer; 5 | import org.bukkit.entity.EnderPearl; 6 | import org.bukkit.entity.EntityType; 7 | 8 | public class CraftEnderPearl extends CraftProjectile implements EnderPearl { 9 | public CraftEnderPearl(CraftServer server, EntityEnderPearl entity) { 10 | super(server, entity); 11 | } 12 | 13 | @Override 14 | public EntityEnderPearl getHandle() { 15 | return (EntityEnderPearl) entity; 16 | } 17 | 18 | @Override 19 | public String toString() { 20 | return "CraftEnderPearl"; 21 | } 22 | 23 | public EntityType getType() { 24 | return EntityType.ENDER_PEARL; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftEnderSignal.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import net.minecraft.entity.item.EntityEnderEye; 4 | import org.bukkit.craftbukkit.CraftServer; 5 | import org.bukkit.entity.EnderSignal; 6 | import org.bukkit.entity.EntityType; 7 | 8 | public class CraftEnderSignal extends CraftEntity implements EnderSignal { 9 | public CraftEnderSignal(CraftServer server, EntityEnderEye entity) { 10 | super(server, entity); 11 | } 12 | 13 | @Override 14 | public EntityEnderEye getHandle() { 15 | return (EntityEnderEye) entity; 16 | } 17 | 18 | @Override 19 | public String toString() { 20 | return "CraftEnderSignal"; 21 | } 22 | 23 | public EntityType getType() { 24 | return EntityType.ENDER_SIGNAL; 25 | } 26 | } -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftExperienceOrb.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import net.minecraft.entity.item.EntityXPOrb; 4 | import org.bukkit.craftbukkit.CraftServer; 5 | import org.bukkit.entity.EntityType; 6 | import org.bukkit.entity.ExperienceOrb; 7 | 8 | public class CraftExperienceOrb extends CraftEntity implements ExperienceOrb { 9 | public CraftExperienceOrb(CraftServer server, EntityXPOrb entity) { 10 | super(server, entity); 11 | } 12 | 13 | public int getExperience() { 14 | return getHandle().xpValue; 15 | } 16 | 17 | public void setExperience(int value) { 18 | getHandle().xpValue = value; 19 | } 20 | 21 | @Override 22 | public EntityXPOrb getHandle() { 23 | return (EntityXPOrb) entity; 24 | } 25 | 26 | @Override 27 | public String toString() { 28 | return "CraftExperienceOrb"; 29 | } 30 | 31 | public EntityType getType() { 32 | return EntityType.EXPERIENCE_ORB; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftFlying.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import net.minecraft.entity.EntityFlying; 4 | import org.bukkit.craftbukkit.CraftServer; 5 | import org.bukkit.entity.Flying; 6 | 7 | public class CraftFlying extends CraftLivingEntity implements Flying { 8 | 9 | public CraftFlying(CraftServer server, EntityFlying entity) { 10 | super(server, entity); 11 | } 12 | 13 | @Override 14 | public EntityFlying getHandle() { 15 | return (EntityFlying) entity; 16 | } 17 | 18 | @Override 19 | public String toString() { 20 | return "CraftFlying"; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftGhast.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import net.minecraft.entity.monster.EntityGhast; 4 | 5 | import org.bukkit.craftbukkit.CraftServer; 6 | import org.bukkit.entity.EntityType; 7 | import org.bukkit.entity.Ghast; 8 | 9 | public class CraftGhast extends CraftFlying implements Ghast { 10 | 11 | public CraftGhast(CraftServer server, net.minecraft.entity.monster.EntityGhast entity) { 12 | super(server, entity); 13 | } 14 | 15 | @Override 16 | public EntityGhast getHandle() { 17 | return (EntityGhast) entity; 18 | } 19 | 20 | @Override 21 | public String toString() { 22 | return "CraftGhast"; 23 | } 24 | 25 | public EntityType getType() { 26 | return EntityType.GHAST; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftGiant.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import net.minecraft.entity.monster.EntityGiantZombie; 4 | 5 | import org.bukkit.craftbukkit.CraftServer; 6 | import org.bukkit.entity.EntityType; 7 | import org.bukkit.entity.Giant; 8 | 9 | public class CraftGiant extends CraftMonster implements Giant { 10 | 11 | public CraftGiant(CraftServer server, EntityGiantZombie entity) { 12 | super(server, entity); 13 | } 14 | 15 | @Override 16 | public EntityGiantZombie getHandle() { 17 | return (EntityGiantZombie) entity; 18 | } 19 | 20 | @Override 21 | public String toString() { 22 | return "CraftGiant"; 23 | } 24 | 25 | public EntityType getType() { 26 | return EntityType.GIANT; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftGolem.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import net.minecraft.entity.monster.EntityGolem; 4 | import org.bukkit.craftbukkit.CraftServer; 5 | import org.bukkit.entity.Golem; 6 | 7 | public class CraftGolem extends CraftCreature implements Golem { 8 | public CraftGolem(CraftServer server, EntityGolem entity) { 9 | super(server, entity); 10 | } 11 | 12 | @Override 13 | public EntityGolem getHandle() { 14 | return (EntityGolem) entity; 15 | } 16 | 17 | @Override 18 | public String toString() { 19 | return "CraftGolem"; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftIronGolem.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import org.bukkit.craftbukkit.CraftServer; 4 | import org.bukkit.entity.EntityType; 5 | import org.bukkit.entity.IronGolem; 6 | 7 | public class CraftIronGolem extends CraftGolem implements IronGolem { 8 | public CraftIronGolem(CraftServer server, net.minecraft.entity.monster.EntityIronGolem entity) { 9 | super(server, entity); 10 | } 11 | 12 | @Override 13 | public net.minecraft.entity.monster.EntityIronGolem getHandle() { 14 | return (net.minecraft.entity.monster.EntityIronGolem) entity; 15 | } 16 | 17 | @Override 18 | public String toString() { 19 | return "CraftIronGolem"; 20 | } 21 | 22 | public boolean isPlayerCreated() { 23 | return getHandle().isPlayerCreated(); 24 | } 25 | 26 | public void setPlayerCreated(boolean playerCreated) { 27 | getHandle().setPlayerCreated(playerCreated); 28 | } 29 | 30 | @Override 31 | public EntityType getType() { 32 | return EntityType.IRON_GOLEM; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftLargeFireball.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import org.bukkit.craftbukkit.CraftServer; 4 | import org.bukkit.entity.EntityType; 5 | import org.bukkit.entity.LargeFireball; 6 | 7 | public class CraftLargeFireball extends CraftFireball implements LargeFireball { 8 | public CraftLargeFireball(CraftServer server, net.minecraft.entity.projectile.EntityLargeFireball entity) { 9 | super(server, entity); 10 | } 11 | 12 | @Override 13 | public void setYield(float yield) { 14 | super.setYield(yield); 15 | getHandle().field_92057_e = (int) yield; 16 | } 17 | 18 | @Override 19 | public net.minecraft.entity.projectile.EntityLargeFireball getHandle() { 20 | return (net.minecraft.entity.projectile.EntityLargeFireball) entity; 21 | } 22 | 23 | @Override 24 | public String toString() { 25 | return "CraftLargeFireball"; 26 | } 27 | 28 | public EntityType getType() { 29 | return EntityType.FIREBALL; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftLeash.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | 4 | import org.bukkit.craftbukkit.CraftServer; 5 | import org.bukkit.entity.EntityType; 6 | import org.bukkit.entity.LeashHitch; 7 | 8 | public class CraftLeash extends CraftHanging implements LeashHitch { 9 | public CraftLeash(CraftServer server, net.minecraft.entity.EntityLeashKnot entity) { 10 | super(server, entity); 11 | } 12 | 13 | @Override 14 | public net.minecraft.entity.EntityLeashKnot getHandle() { 15 | return (net.minecraft.entity.EntityLeashKnot) entity; 16 | } 17 | 18 | @Override 19 | public String toString() { 20 | return "CraftLeash"; 21 | } 22 | 23 | public EntityType getType() { 24 | return EntityType.LEASH_HITCH; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftLightningStrike.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import org.bukkit.craftbukkit.CraftServer; 4 | import org.bukkit.entity.EntityType; 5 | import org.bukkit.entity.LightningStrike; 6 | 7 | public class CraftLightningStrike extends CraftEntity implements LightningStrike { 8 | public CraftLightningStrike(final CraftServer server, final net.minecraft.entity.effect.EntityLightningBolt entity) { 9 | super(server, entity); 10 | } 11 | 12 | public boolean isEffect() { 13 | return ((net.minecraft.entity.effect.EntityLightningBolt) super.getHandle()).isEffect; 14 | } 15 | 16 | @Override 17 | public net.minecraft.entity.effect.EntityLightningBolt getHandle() { 18 | return (net.minecraft.entity.effect.EntityLightningBolt) entity; 19 | } 20 | 21 | @Override 22 | public String toString() { 23 | return "CraftLightningStrike"; 24 | } 25 | 26 | public EntityType getType() { 27 | return EntityType.LIGHTNING; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftMagmaCube.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | 4 | import org.bukkit.craftbukkit.CraftServer; 5 | import org.bukkit.entity.EntityType; 6 | import org.bukkit.entity.MagmaCube; 7 | 8 | public class CraftMagmaCube extends CraftSlime implements MagmaCube { 9 | 10 | public CraftMagmaCube(CraftServer server, net.minecraft.entity.monster.EntityMagmaCube entity) { 11 | super(server, entity); 12 | } 13 | 14 | public net.minecraft.entity.monster.EntityMagmaCube getHandle() { 15 | return (net.minecraft.entity.monster.EntityMagmaCube) entity; 16 | } 17 | 18 | @Override 19 | public String toString() { 20 | return "CraftMagmaCube"; 21 | } 22 | 23 | public EntityType getType() { 24 | return EntityType.MAGMA_CUBE; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartChest.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | 4 | import org.bukkit.craftbukkit.CraftServer; 5 | import org.bukkit.craftbukkit.inventory.CraftInventory; 6 | import org.bukkit.entity.EntityType; 7 | import org.bukkit.entity.StorageMinecart; 8 | import org.bukkit.inventory.Inventory; 9 | 10 | @SuppressWarnings("deprecation") 11 | public class CraftMinecartChest extends CraftMinecart implements StorageMinecart { 12 | private final CraftInventory inventory; 13 | 14 | public CraftMinecartChest(CraftServer server, net.minecraft.entity.item.EntityMinecartChest entity) { 15 | super(server, entity); 16 | inventory = new CraftInventory(entity); 17 | } 18 | 19 | public Inventory getInventory() { 20 | return inventory; 21 | } 22 | 23 | @Override 24 | public String toString() { 25 | return "CraftMinecartChest{" + "inventory=" + inventory + '}'; 26 | } 27 | 28 | public EntityType getType() { 29 | return EntityType.MINECART_CHEST; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartFurnace.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | 4 | import org.bukkit.craftbukkit.CraftServer; 5 | import org.bukkit.entity.EntityType; 6 | import org.bukkit.entity.PoweredMinecart; 7 | 8 | @SuppressWarnings("deprecation") 9 | public class CraftMinecartFurnace extends CraftMinecart implements PoweredMinecart { 10 | public CraftMinecartFurnace(CraftServer server, net.minecraft.entity.item.EntityMinecartFurnace entity) { 11 | super(server, entity); 12 | } 13 | 14 | @Override 15 | public String toString() { 16 | return "CraftMinecartFurnace"; 17 | } 18 | 19 | public EntityType getType() { 20 | return EntityType.MINECART_FURNACE; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartHopper.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | 4 | import org.bukkit.craftbukkit.CraftServer; 5 | import org.bukkit.craftbukkit.inventory.CraftInventory; 6 | import org.bukkit.entity.EntityType; 7 | import org.bukkit.entity.minecart.HopperMinecart; 8 | import org.bukkit.inventory.Inventory; 9 | 10 | final class CraftMinecartHopper extends CraftMinecart implements HopperMinecart { 11 | private final CraftInventory inventory; 12 | 13 | CraftMinecartHopper(CraftServer server, net.minecraft.entity.item.EntityMinecartHopper entity) { 14 | super(server, entity); 15 | inventory = new CraftInventory(entity); 16 | } 17 | 18 | @Override 19 | public String toString() { 20 | return "CraftMinecartHopper{" + "inventory=" + inventory + '}'; 21 | } 22 | 23 | public EntityType getType() { 24 | return EntityType.MINECART_HOPPER; 25 | } 26 | 27 | public Inventory getInventory() { 28 | return inventory; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartMobSpawner.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | 4 | import org.bukkit.craftbukkit.CraftServer; 5 | import org.bukkit.entity.EntityType; 6 | import org.bukkit.entity.minecart.SpawnerMinecart; 7 | 8 | final class CraftMinecartMobSpawner extends CraftMinecart implements SpawnerMinecart { 9 | CraftMinecartMobSpawner(CraftServer server, net.minecraft.entity.ai.EntityMinecartMobSpawner entity) { 10 | super(server, entity); 11 | } 12 | 13 | @Override 14 | public String toString() { 15 | return "CraftMinecartMobSpawner"; 16 | } 17 | 18 | public EntityType getType() { 19 | return EntityType.MINECART_MOB_SPAWNER; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartRideable.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | 4 | import org.bukkit.craftbukkit.CraftServer; 5 | import org.bukkit.entity.EntityType; 6 | import org.bukkit.entity.minecart.RideableMinecart; 7 | 8 | public class CraftMinecartRideable extends CraftMinecart implements RideableMinecart { 9 | public CraftMinecartRideable(CraftServer server, net.minecraft.entity.item.EntityMinecart entity) { 10 | super(server, entity); 11 | } 12 | 13 | @Override 14 | public String toString() { 15 | return "CraftMinecartRideable"; 16 | } 17 | 18 | public EntityType getType() { 19 | return EntityType.MINECART; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartTNT.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | 4 | import org.bukkit.craftbukkit.CraftServer; 5 | import org.bukkit.entity.EntityType; 6 | import org.bukkit.entity.minecart.ExplosiveMinecart; 7 | 8 | final class CraftMinecartTNT extends CraftMinecart implements ExplosiveMinecart { 9 | CraftMinecartTNT(CraftServer server, net.minecraft.entity.item.EntityMinecartTNT entity) { 10 | super(server, entity); 11 | } 12 | 13 | @Override 14 | public String toString() { 15 | return "CraftMinecartTNT"; 16 | } 17 | 18 | public EntityType getType() { 19 | return EntityType.MINECART_TNT; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftMonster.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | 4 | import org.bukkit.craftbukkit.CraftServer; 5 | import org.bukkit.entity.Monster; 6 | 7 | public class CraftMonster extends CraftCreature implements Monster { 8 | 9 | public CraftMonster(CraftServer server, net.minecraft.entity.monster.EntityMob entity) { 10 | super(server, entity); 11 | } 12 | 13 | @Override 14 | public net.minecraft.entity.monster.EntityMob getHandle() { 15 | return (net.minecraft.entity.monster.EntityMob) entity; 16 | } 17 | 18 | @Override 19 | public String toString() { 20 | return this.entityName; // Cauldron 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftMushroomCow.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | 4 | import org.bukkit.craftbukkit.CraftServer; 5 | import org.bukkit.entity.EntityType; 6 | import org.bukkit.entity.MushroomCow; 7 | 8 | public class CraftMushroomCow extends CraftCow implements MushroomCow { 9 | public CraftMushroomCow(CraftServer server, net.minecraft.entity.passive.EntityMooshroom entity) { 10 | super(server, entity); 11 | } 12 | 13 | @Override 14 | public net.minecraft.entity.passive.EntityMooshroom getHandle() { 15 | return (net.minecraft.entity.passive.EntityMooshroom) entity; 16 | } 17 | 18 | @Override 19 | public String toString() { 20 | return "CraftMushroomCow"; 21 | } 22 | 23 | public EntityType getType() { 24 | return EntityType.MUSHROOM_COW; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftOcelot.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import org.apache.commons.lang.Validate; 4 | import org.bukkit.craftbukkit.CraftServer; 5 | import org.bukkit.entity.EntityType; 6 | import org.bukkit.entity.Ocelot; 7 | 8 | public class CraftOcelot extends CraftTameableAnimal implements Ocelot { 9 | public CraftOcelot(CraftServer server, net.minecraft.entity.passive.EntityOcelot wolf) { 10 | super(server, wolf); 11 | } 12 | 13 | @Override 14 | public net.minecraft.entity.passive.EntityOcelot getHandle() { 15 | return (net.minecraft.entity.passive.EntityOcelot) entity; 16 | } 17 | 18 | public Type getCatType() { 19 | return Type.getType(getHandle().getTameSkin()); 20 | } 21 | 22 | public void setCatType(Type type) { 23 | Validate.notNull(type, "Cat type cannot be null"); 24 | getHandle().setTameSkin(type.getId()); 25 | } 26 | 27 | @Override 28 | public EntityType getType() { 29 | return EntityType.OCELOT; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftPig.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | 4 | import org.bukkit.craftbukkit.CraftServer; 5 | import org.bukkit.entity.EntityType; 6 | import org.bukkit.entity.Pig; 7 | 8 | public class CraftPig extends CraftAnimals implements Pig { 9 | public CraftPig(CraftServer server, net.minecraft.entity.passive.EntityPig entity) { 10 | super(server, entity); 11 | } 12 | 13 | public boolean hasSaddle() { 14 | return getHandle().getSaddled(); 15 | } 16 | 17 | public void setSaddle(boolean saddled) { 18 | getHandle().setSaddled(saddled); 19 | } 20 | 21 | public net.minecraft.entity.passive.EntityPig getHandle() { 22 | return (net.minecraft.entity.passive.EntityPig) entity; 23 | } 24 | 25 | @Override 26 | public String toString() { 27 | return "CraftPig"; 28 | } 29 | 30 | public EntityType getType() { 31 | return EntityType.PIG; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftSilverfish.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | 4 | import org.bukkit.craftbukkit.CraftServer; 5 | import org.bukkit.entity.EntityType; 6 | import org.bukkit.entity.Silverfish; 7 | 8 | public class CraftSilverfish extends CraftMonster implements Silverfish { 9 | public CraftSilverfish(CraftServer server, net.minecraft.entity.monster.EntitySilverfish entity) { 10 | super(server, entity); 11 | } 12 | 13 | @Override 14 | public net.minecraft.entity.monster.EntitySilverfish getHandle() { 15 | return (net.minecraft.entity.monster.EntitySilverfish) entity; 16 | } 17 | 18 | @Override 19 | public String toString() { 20 | return "CraftSilverfish"; 21 | } 22 | 23 | public EntityType getType() { 24 | return EntityType.SILVERFISH; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftSkeleton.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | 4 | import org.apache.commons.lang.Validate; 5 | import org.bukkit.craftbukkit.CraftServer; 6 | import org.bukkit.entity.EntityType; 7 | import org.bukkit.entity.Skeleton; 8 | 9 | public class CraftSkeleton extends CraftMonster implements Skeleton { 10 | 11 | public CraftSkeleton(CraftServer server, net.minecraft.entity.monster.EntitySkeleton entity) { 12 | super(server, entity); 13 | } 14 | 15 | @Override 16 | public net.minecraft.entity.monster.EntitySkeleton getHandle() { 17 | return (net.minecraft.entity.monster.EntitySkeleton) entity; 18 | } 19 | 20 | @Override 21 | public String toString() { 22 | return "CraftSkeleton"; 23 | } 24 | 25 | public EntityType getType() { 26 | return EntityType.SKELETON; 27 | } 28 | 29 | public SkeletonType getSkeletonType() { 30 | return SkeletonType.getType(getHandle().getSkeletonType()); 31 | } 32 | 33 | public void setSkeletonType(SkeletonType type) { 34 | Validate.notNull(type); 35 | getHandle().setSkeletonType(type.getId()); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftSlime.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | 4 | import org.bukkit.craftbukkit.CraftServer; 5 | import org.bukkit.entity.EntityType; 6 | import org.bukkit.entity.Slime; 7 | 8 | public class CraftSlime extends CraftLivingEntity implements Slime { 9 | 10 | public CraftSlime(CraftServer server, net.minecraft.entity.monster.EntitySlime entity) { 11 | super(server, entity); 12 | } 13 | 14 | public int getSize() { 15 | return getHandle().getSlimeSize(); 16 | } 17 | 18 | public void setSize(int size) { 19 | getHandle().setSlimeSize(size); 20 | } 21 | 22 | @Override 23 | public net.minecraft.entity.monster.EntitySlime getHandle() { 24 | return (net.minecraft.entity.monster.EntitySlime) entity; 25 | } 26 | 27 | @Override 28 | public String toString() { 29 | return "CraftSlime"; 30 | } 31 | 32 | public EntityType getType() { 33 | return EntityType.SLIME; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftSmallFireball.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import org.bukkit.craftbukkit.CraftServer; 4 | import org.bukkit.entity.EntityType; 5 | import org.bukkit.entity.SmallFireball; 6 | 7 | public class CraftSmallFireball extends CraftFireball implements SmallFireball { 8 | public CraftSmallFireball(CraftServer server, net.minecraft.entity.projectile.EntitySmallFireball entity) { 9 | super(server, entity); 10 | } 11 | 12 | @Override 13 | public net.minecraft.entity.projectile.EntitySmallFireball getHandle() { 14 | return (net.minecraft.entity.projectile.EntitySmallFireball) entity; 15 | } 16 | 17 | @Override 18 | public String toString() { 19 | return "CraftSmallFireball"; 20 | } 21 | 22 | public EntityType getType() { 23 | return EntityType.SMALL_FIREBALL; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftSnowball.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import org.bukkit.craftbukkit.CraftServer; 4 | import org.bukkit.entity.EntityType; 5 | import org.bukkit.entity.Snowball; 6 | 7 | public class CraftSnowball extends CraftProjectile implements Snowball { 8 | public CraftSnowball(CraftServer server, net.minecraft.entity.projectile.EntitySnowball entity) { 9 | super(server, entity); 10 | } 11 | 12 | @Override 13 | public net.minecraft.entity.projectile.EntitySnowball getHandle() { 14 | return (net.minecraft.entity.projectile.EntitySnowball) entity; 15 | } 16 | 17 | @Override 18 | public String toString() { 19 | return "CraftSnowball"; 20 | } 21 | 22 | public EntityType getType() { 23 | return EntityType.SNOWBALL; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import org.bukkit.craftbukkit.CraftServer; 4 | import org.bukkit.entity.EntityType; 5 | import org.bukkit.entity.Snowman; 6 | 7 | public class CraftSnowman extends CraftGolem implements Snowman { 8 | public CraftSnowman(CraftServer server, net.minecraft.entity.monster.EntitySnowman entity) { 9 | super(server, entity); 10 | } 11 | 12 | @Override 13 | public net.minecraft.entity.monster.EntitySnowman getHandle() { 14 | return (net.minecraft.entity.monster.EntitySnowman) entity; 15 | } 16 | 17 | @Override 18 | public String toString() { 19 | return "CraftSnowman"; 20 | } 21 | 22 | public EntityType getType() { 23 | return EntityType.SNOWMAN; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftSpider.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | 4 | import org.bukkit.craftbukkit.CraftServer; 5 | import org.bukkit.entity.EntityType; 6 | import org.bukkit.entity.Spider; 7 | 8 | public class CraftSpider extends CraftMonster implements Spider { 9 | 10 | public CraftSpider(CraftServer server, net.minecraft.entity.monster.EntitySpider entity) { 11 | super(server, entity); 12 | } 13 | 14 | @Override 15 | public net.minecraft.entity.monster.EntitySpider getHandle() { 16 | return (net.minecraft.entity.monster.EntitySpider) entity; 17 | } 18 | 19 | @Override 20 | public String toString() { 21 | return "CraftSpider"; 22 | } 23 | 24 | public EntityType getType() { 25 | return EntityType.SPIDER; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftSquid.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | 4 | import org.bukkit.craftbukkit.CraftServer; 5 | import org.bukkit.entity.EntityType; 6 | import org.bukkit.entity.Squid; 7 | 8 | public class CraftSquid extends CraftWaterMob implements Squid { 9 | 10 | public CraftSquid(CraftServer server, net.minecraft.entity.passive.EntitySquid entity) { 11 | super(server, entity); 12 | } 13 | 14 | @Override 15 | public net.minecraft.entity.passive.EntitySquid getHandle() { 16 | return (net.minecraft.entity.passive.EntitySquid) entity; 17 | } 18 | 19 | @Override 20 | public String toString() { 21 | return "CraftSquid"; 22 | } 23 | 24 | public EntityType getType() { 25 | return EntityType.SQUID; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftThrownExpBottle.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import org.bukkit.craftbukkit.CraftServer; 4 | import org.bukkit.entity.EntityType; 5 | import org.bukkit.entity.ThrownExpBottle; 6 | 7 | public class CraftThrownExpBottle extends CraftProjectile implements ThrownExpBottle { 8 | public CraftThrownExpBottle(CraftServer server, net.minecraft.entity.item.EntityExpBottle entity) { 9 | super(server, entity); 10 | } 11 | 12 | @Override 13 | public net.minecraft.entity.item.EntityExpBottle getHandle() { 14 | return (net.minecraft.entity.item.EntityExpBottle) entity; 15 | } 16 | 17 | @Override 18 | public String toString() { 19 | return "EntityThrownExpBottle"; 20 | } 21 | 22 | public EntityType getType() { 23 | return EntityType.THROWN_EXP_BOTTLE; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftVehicle.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import org.bukkit.craftbukkit.CraftServer; 4 | import org.bukkit.entity.Vehicle; 5 | 6 | public abstract class CraftVehicle extends CraftEntity implements Vehicle { 7 | public CraftVehicle(CraftServer server, net.minecraft.entity.Entity entity) { 8 | super(server, entity); 9 | } 10 | 11 | @Override 12 | public String toString() { 13 | return "CraftVehicle{passenger=" + getPassenger() + '}'; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import org.apache.commons.lang.Validate; 4 | import org.bukkit.craftbukkit.CraftServer; 5 | import org.bukkit.entity.EntityType; 6 | import org.bukkit.entity.Villager; 7 | 8 | public class CraftVillager extends CraftAgeable implements Villager { 9 | public CraftVillager(CraftServer server, net.minecraft.entity.passive.EntityVillager entity) { 10 | super(server, entity); 11 | } 12 | 13 | @Override 14 | public net.minecraft.entity.passive.EntityVillager getHandle() { 15 | return (net.minecraft.entity.passive.EntityVillager) entity; 16 | } 17 | 18 | @Override 19 | public String toString() { 20 | return "CraftVillager"; 21 | } 22 | 23 | public EntityType getType() { 24 | return EntityType.VILLAGER; 25 | } 26 | 27 | public Profession getProfession() { 28 | return Profession.getProfession(getHandle().getProfession()); 29 | } 30 | 31 | public void setProfession(Profession profession) { 32 | Validate.notNull(profession); 33 | getHandle().setProfession(profession.getId()); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftWaterMob.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | 4 | import org.bukkit.craftbukkit.CraftServer; 5 | import org.bukkit.entity.WaterMob; 6 | 7 | public class CraftWaterMob extends CraftCreature implements WaterMob { 8 | 9 | public CraftWaterMob(CraftServer server, net.minecraft.entity.passive.EntityWaterMob entity) { 10 | super(server, entity); 11 | } 12 | 13 | @Override 14 | public net.minecraft.entity.passive.EntityWaterMob getHandle() { 15 | return (net.minecraft.entity.passive.EntityWaterMob) entity; 16 | } 17 | 18 | @Override 19 | public String toString() { 20 | return this.entityName; // Cauldron 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftWeather.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import org.bukkit.craftbukkit.CraftServer; 4 | import org.bukkit.entity.EntityType; 5 | import org.bukkit.entity.Weather; 6 | 7 | public class CraftWeather extends CraftEntity implements Weather { 8 | public CraftWeather(final CraftServer server, final net.minecraft.entity.effect.EntityWeatherEffect entity) { 9 | super(server, entity); 10 | } 11 | 12 | @Override 13 | public net.minecraft.entity.effect.EntityWeatherEffect getHandle() { 14 | return (net.minecraft.entity.effect.EntityWeatherEffect) entity; 15 | } 16 | 17 | @Override 18 | public String toString() { 19 | return "CraftWeather"; 20 | } 21 | 22 | public EntityType getType() { 23 | return EntityType.WEATHER; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftWitch.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import org.bukkit.craftbukkit.CraftServer; 4 | import org.bukkit.entity.Witch; 5 | import org.bukkit.entity.EntityType; 6 | 7 | public class CraftWitch extends CraftMonster implements Witch { 8 | public CraftWitch(CraftServer server, net.minecraft.entity.monster.EntityWitch entity) { 9 | super(server, entity); 10 | } 11 | 12 | @Override 13 | public net.minecraft.entity.monster.EntityWitch getHandle() { 14 | return (net.minecraft.entity.monster.EntityWitch) entity; 15 | } 16 | 17 | @Override 18 | public String toString() { 19 | return "CraftWitch"; 20 | } 21 | 22 | public EntityType getType() { 23 | return EntityType.WITCH; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import org.bukkit.craftbukkit.CraftServer; 4 | import org.bukkit.entity.Wither; 5 | import org.bukkit.entity.EntityType; 6 | 7 | public class CraftWither extends CraftMonster implements Wither { 8 | public CraftWither(CraftServer server, net.minecraft.entity.boss.EntityWither entity) { 9 | super(server, entity); 10 | } 11 | 12 | @Override 13 | public net.minecraft.entity.boss.EntityWither getHandle() { 14 | return (net.minecraft.entity.boss.EntityWither) entity; 15 | } 16 | 17 | @Override 18 | public String toString() { 19 | return "CraftWither"; 20 | } 21 | 22 | public EntityType getType() { 23 | return EntityType.WITHER; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftWitherSkull.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import org.bukkit.craftbukkit.CraftServer; 4 | import org.bukkit.entity.EntityType; 5 | import org.bukkit.entity.WitherSkull; 6 | 7 | public class CraftWitherSkull extends CraftFireball implements WitherSkull { 8 | public CraftWitherSkull(CraftServer server, net.minecraft.entity.projectile.EntityWitherSkull entity) { 9 | super(server, entity); 10 | } 11 | 12 | @Override 13 | public void setCharged(boolean charged) { 14 | getHandle().setInvulnerable(charged); 15 | } 16 | 17 | @Override 18 | public boolean isCharged() { 19 | return getHandle().isInvulnerable(); 20 | } 21 | 22 | @Override 23 | public net.minecraft.entity.projectile.EntityWitherSkull getHandle() { 24 | return (net.minecraft.entity.projectile.EntityWitherSkull) entity; 25 | } 26 | 27 | @Override 28 | public String toString() { 29 | return "CraftWitherSkull"; 30 | } 31 | 32 | public EntityType getType() { 33 | return EntityType.WITHER_SKULL; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.entity; 2 | 3 | import org.bukkit.DyeColor; 4 | import org.bukkit.craftbukkit.CraftServer; 5 | import org.bukkit.entity.EntityType; 6 | import org.bukkit.entity.Wolf; 7 | 8 | public class CraftWolf extends CraftTameableAnimal implements Wolf { 9 | public CraftWolf(CraftServer server, net.minecraft.entity.passive.EntityWolf wolf) { 10 | super(server, wolf); 11 | } 12 | 13 | public boolean isAngry() { 14 | return getHandle().isAngry(); 15 | } 16 | 17 | public void setAngry(boolean angry) { 18 | getHandle().setAngry(angry); 19 | } 20 | 21 | @Override 22 | public net.minecraft.entity.passive.EntityWolf getHandle() { 23 | return (net.minecraft.entity.passive.EntityWolf) entity; 24 | } 25 | 26 | @Override 27 | public EntityType getType() { 28 | return EntityType.WOLF; 29 | } 30 | 31 | public DyeColor getCollarColor() { 32 | return DyeColor.getByWoolData((byte) getHandle().getCollarColor()); 33 | } 34 | 35 | public void setCollarColor(DyeColor color) { 36 | getHandle().setCollarColor(color.getWoolData()); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/generator/InternalChunkGenerator.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.generator; 2 | 3 | import org.bukkit.generator.ChunkGenerator; 4 | 5 | // Do not implement functions to this class, add to NormalChunkGenerator 6 | public abstract class InternalChunkGenerator extends ChunkGenerator implements net.minecraft.world.chunk.IChunkProvider { 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/generator/NetherChunkGenerator.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.generator; 2 | 3 | 4 | /** 5 | * This class is useless. Just fyi. 6 | */ 7 | public class NetherChunkGenerator extends NormalChunkGenerator { 8 | public NetherChunkGenerator(net.minecraft.world.World world, long seed) { 9 | super(world, seed); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/generator/SkyLandsChunkGenerator.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.generator; 2 | 3 | 4 | /** 5 | * This class is useless. Just fyi. 6 | */ 7 | public class SkyLandsChunkGenerator extends NormalChunkGenerator { 8 | public SkyLandsChunkGenerator(net.minecraft.world.World world, long seed) { 9 | super(world, seed); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/help/CustomHelpTopic.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.help; 2 | 3 | import org.bukkit.command.CommandSender; 4 | import org.bukkit.command.ConsoleCommandSender; 5 | import org.bukkit.help.HelpTopic; 6 | 7 | /** 8 | * This is a help topic implementation for general topics registered in the help.yml file. 9 | */ 10 | public class CustomHelpTopic extends HelpTopic { 11 | private final String permissionNode; 12 | 13 | public CustomHelpTopic(String name, String shortText, String fullText, String permissionNode) { 14 | this.permissionNode = permissionNode; 15 | this.name = name; 16 | this.shortText = shortText; 17 | this.fullText = shortText + "\n" + fullText; 18 | } 19 | 20 | public boolean canSee(CommandSender sender) { 21 | if (sender instanceof ConsoleCommandSender) { 22 | return true; 23 | } 24 | 25 | if (!permissionNode.equals("")) { 26 | return sender.hasPermission(permissionNode); 27 | } else { 28 | return true; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/help/MultipleCommandAliasHelpTopicFactory.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.help; 2 | 3 | import org.bukkit.command.MultipleCommandAlias; 4 | import org.bukkit.help.HelpTopic; 5 | import org.bukkit.help.HelpTopicFactory; 6 | 7 | /** 8 | * This class creates {@link MultipleCommandAliasHelpTopic} help topics from {@link MultipleCommandAlias} commands. 9 | */ 10 | public class MultipleCommandAliasHelpTopicFactory implements HelpTopicFactory { 11 | 12 | public HelpTopic createTopic(MultipleCommandAlias multipleCommandAlias) { 13 | return new MultipleCommandAliasHelpTopic(multipleCommandAlias); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/inventory/CraftFurnaceRecipe.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.inventory; 2 | 3 | 4 | import org.bukkit.craftbukkit.util.CraftMagicNumbers; 5 | import org.bukkit.inventory.FurnaceRecipe; 6 | import org.bukkit.inventory.ItemStack; 7 | 8 | public class CraftFurnaceRecipe extends FurnaceRecipe implements CraftRecipe { 9 | public CraftFurnaceRecipe(ItemStack result, ItemStack source) { 10 | super(result, source.getType(), source.getDurability()); 11 | } 12 | 13 | public static CraftFurnaceRecipe fromBukkitRecipe(FurnaceRecipe recipe) { 14 | if (recipe instanceof CraftFurnaceRecipe) { 15 | return (CraftFurnaceRecipe) recipe; 16 | } 17 | return new CraftFurnaceRecipe(recipe.getResult(), recipe.getInput()); 18 | } 19 | 20 | @Override 21 | public void addToCraftingManager() { 22 | ItemStack result = this.getResult(); 23 | ItemStack input = this.getInput(); 24 | net.minecraft.item.crafting.FurnaceRecipes.smelting().registerRecipe(CraftItemStack.asNMSCopy(input), CraftItemStack.asNMSCopy(result)); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryBeacon.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.inventory; 2 | 3 | import org.bukkit.inventory.BeaconInventory; 4 | import org.bukkit.inventory.ItemStack; 5 | 6 | public class CraftInventoryBeacon extends CraftInventory implements BeaconInventory { 7 | public CraftInventoryBeacon(net.minecraft.tileentity.TileEntityBeacon beacon) { 8 | super(beacon); 9 | } 10 | 11 | public void setItem(ItemStack item) { 12 | setItem(0, item); 13 | } 14 | 15 | public ItemStack getItem() { 16 | return getItem(0); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryBrewer.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.inventory; 2 | 3 | import org.bukkit.block.BrewingStand; 4 | import org.bukkit.inventory.BrewerInventory; 5 | import org.bukkit.inventory.ItemStack; 6 | 7 | 8 | public class CraftInventoryBrewer extends CraftInventory implements BrewerInventory { 9 | public CraftInventoryBrewer(net.minecraft.inventory.IInventory inventory) { 10 | super(inventory); 11 | } 12 | 13 | public ItemStack getIngredient() { 14 | return getItem(3); 15 | } 16 | 17 | public void setIngredient(ItemStack ingredient) { 18 | setItem(3, ingredient); 19 | } 20 | 21 | @Override 22 | public BrewingStand getHolder() { 23 | return (BrewingStand) inventory.getOwner(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryEnchanting.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.inventory; 2 | 3 | import org.bukkit.inventory.EnchantingInventory; 4 | import org.bukkit.inventory.ItemStack; 5 | 6 | 7 | public class CraftInventoryEnchanting extends CraftInventory implements EnchantingInventory { 8 | public CraftInventoryEnchanting(net.minecraft.inventory.ContainerEnchantTableInventory inventory) { 9 | super(inventory); 10 | } 11 | 12 | public void setItem(ItemStack item) { 13 | setItem(0,item); 14 | } 15 | 16 | public ItemStack getItem() { 17 | return getItem(0); 18 | } 19 | 20 | @Override 21 | public net.minecraft.inventory.ContainerEnchantTableInventory getInventory() { 22 | return (net.minecraft.inventory.ContainerEnchantTableInventory)inventory; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryFurnace.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.inventory; 2 | 3 | import org.bukkit.block.Furnace; 4 | import org.bukkit.inventory.FurnaceInventory; 5 | import org.bukkit.inventory.ItemStack; 6 | 7 | 8 | public class CraftInventoryFurnace extends CraftInventory implements FurnaceInventory { 9 | public CraftInventoryFurnace(net.minecraft.tileentity.TileEntityFurnace inventory) { 10 | super(inventory); 11 | } 12 | 13 | public ItemStack getResult() { 14 | return getItem(2); 15 | } 16 | 17 | public ItemStack getFuel() { 18 | return getItem(1); 19 | } 20 | 21 | public ItemStack getSmelting() { 22 | return getItem(0); 23 | } 24 | 25 | public void setFuel(ItemStack stack) { 26 | setItem(1,stack); 27 | } 28 | 29 | public void setResult(ItemStack stack) { 30 | setItem(2,stack); 31 | } 32 | 33 | public void setSmelting(ItemStack stack) { 34 | setItem(0,stack); 35 | } 36 | 37 | @Override 38 | public Furnace getHolder() { 39 | return (Furnace) inventory.getOwner(); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryHorse.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.inventory; 2 | 3 | import org.bukkit.inventory.HorseInventory; 4 | import org.bukkit.inventory.ItemStack; 5 | 6 | public class CraftInventoryHorse extends CraftInventory implements HorseInventory { 7 | 8 | public CraftInventoryHorse(net.minecraft.inventory.IInventory inventory) { 9 | super(inventory); 10 | } 11 | 12 | public ItemStack getSaddle() { 13 | return getItem(0); 14 | } 15 | 16 | public ItemStack getArmor() { 17 | return getItem(1); 18 | } 19 | 20 | public void setSaddle(ItemStack stack) { 21 | setItem(0, stack); 22 | } 23 | 24 | public void setArmor(ItemStack stack) { 25 | setItem(1, stack); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryMerchant.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.inventory; 2 | 3 | import org.bukkit.inventory.MerchantInventory; 4 | 5 | public class CraftInventoryMerchant extends CraftInventory implements MerchantInventory { 6 | public CraftInventoryMerchant(net.minecraft.inventory.InventoryMerchant merchant) { 7 | super(merchant); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.inventory; 2 | 3 | import org.bukkit.inventory.Recipe; 4 | 5 | public interface CraftRecipe extends Recipe { 6 | void addToCraftingManager(); 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/map/RenderData.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.map; 2 | 3 | import java.util.ArrayList; 4 | import org.bukkit.map.MapCursor; 5 | 6 | public class RenderData { 7 | 8 | public final byte[] buffer; 9 | public final ArrayList cursors; 10 | 11 | public RenderData() { 12 | this.buffer = new byte[128 * 128]; 13 | this.cursors = new ArrayList(); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/metadata/EntityMetadataStore.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.metadata; 2 | 3 | import org.bukkit.entity.Entity; 4 | import org.bukkit.metadata.MetadataStore; 5 | import org.bukkit.metadata.MetadataStoreBase; 6 | 7 | /** 8 | * An EntityMetadataStore stores metadata values for all {@link Entity} classes an their descendants. 9 | */ 10 | public class EntityMetadataStore extends MetadataStoreBase implements MetadataStore { 11 | /** 12 | * Generates a unique metadata key for an {@link Entity} UUID. 13 | * 14 | * @see MetadataStoreBase#disambiguate(Object, String) 15 | * @param entity the entity 16 | * @param metadataKey The name identifying the metadata value 17 | * @return a unique metadata key 18 | */ 19 | @Override 20 | protected String disambiguate(Entity entity, String metadataKey) { 21 | return entity.getUniqueId().toString() + ":" + metadataKey; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/metadata/PlayerMetadataStore.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.metadata; 2 | 3 | import org.bukkit.OfflinePlayer; 4 | import org.bukkit.metadata.MetadataStore; 5 | import org.bukkit.metadata.MetadataStoreBase; 6 | 7 | /** 8 | * A PlayerMetadataStore stores metadata for {@link org.bukkit.entity.Player} and {@link OfflinePlayer} objects. 9 | */ 10 | public class PlayerMetadataStore extends MetadataStoreBase implements MetadataStore { 11 | /** 12 | * Generates a unique metadata key for {@link org.bukkit.entity.Player} and {@link OfflinePlayer} using the player 13 | * name. 14 | * @see MetadataStoreBase#disambiguate(Object, String) 15 | * @param player the player 16 | * @param metadataKey The name identifying the metadata value 17 | * @return a unique metadata key 18 | */ 19 | @Override 20 | protected String disambiguate(OfflinePlayer player, String metadataKey) { 21 | return player.getName().toLowerCase() + ":" + metadataKey; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/metadata/WorldMetadataStore.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.metadata; 2 | 3 | import org.bukkit.World; 4 | import org.bukkit.metadata.MetadataStore; 5 | import org.bukkit.metadata.MetadataStoreBase; 6 | 7 | /** 8 | * An WorldMetadataStore stores metadata values for {@link World} objects. 9 | */ 10 | public class WorldMetadataStore extends MetadataStoreBase implements MetadataStore { 11 | /** 12 | * Generates a unique metadata key for a {@link World} object based on the world UID. 13 | * @see WorldMetadataStore#disambiguate(Object, String) 14 | * @param world the world 15 | * @param metadataKey The name identifying the metadata value 16 | * @return a unique metadata key 17 | */ 18 | @Override 19 | protected String disambiguate(World world, String metadataKey) { 20 | return world.getUID().toString() + ":" + metadataKey; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardComponent.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.scoreboard; 2 | 3 | abstract class CraftScoreboardComponent { 4 | private CraftScoreboard scoreboard; 5 | 6 | CraftScoreboardComponent(CraftScoreboard scoreboard) { 7 | this.scoreboard = scoreboard; 8 | } 9 | 10 | CraftScoreboard checkState() throws IllegalStateException { 11 | CraftScoreboard scoreboard = this.scoreboard; 12 | if (scoreboard == null) { 13 | throw new IllegalStateException("Unregistered scoreboard component"); 14 | } 15 | return scoreboard; 16 | } 17 | 18 | public CraftScoreboard getScoreboard() { 19 | return scoreboard; 20 | } 21 | 22 | abstract void unregister() throws IllegalStateException; 23 | 24 | final void setUnregistered() { 25 | scoreboard = null; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardTranslations.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.scoreboard; 2 | 3 | 4 | import org.bukkit.scoreboard.DisplaySlot; 5 | 6 | import com.google.common.collect.ImmutableBiMap; 7 | 8 | class CraftScoreboardTranslations { 9 | static final int MAX_DISPLAY_SLOT = 3; 10 | static ImmutableBiMap SLOTS = ImmutableBiMap.of( 11 | DisplaySlot.BELOW_NAME, "belowName", 12 | DisplaySlot.PLAYER_LIST, "list", 13 | DisplaySlot.SIDEBAR, "sidebar"); 14 | 15 | private CraftScoreboardTranslations() {} 16 | 17 | static DisplaySlot toBukkitSlot(int i) { 18 | return SLOTS.inverse().get(net.minecraft.scoreboard.Scoreboard.getObjectiveDisplaySlot(i)); 19 | } 20 | 21 | static int fromBukkitSlot(DisplaySlot slot) { 22 | return net.minecraft.scoreboard.Scoreboard.getObjectiveDisplaySlotNumber(SLOTS.get(slot)); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/util/CraftDamageSource.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.util; 2 | 3 | 4 | // Util class to create custom DamageSources. 5 | public final class CraftDamageSource extends net.minecraft.util.DamageSource { 6 | public static net.minecraft.util.DamageSource copyOf(final net.minecraft.util.DamageSource original) { 7 | CraftDamageSource newSource = new CraftDamageSource(original.damageType); 8 | 9 | // Check ignoresArmor 10 | if (original.isUnblockable()) { 11 | newSource.setDamageBypassesArmor(); 12 | } 13 | 14 | // Check magic 15 | if (original.isMagicDamage()) { 16 | newSource.setMagicDamage(); 17 | } 18 | 19 | // Check fire 20 | if (original.isExplosion()) { 21 | newSource.setFireDamage(); 22 | } 23 | 24 | return newSource; 25 | } 26 | 27 | private CraftDamageSource(String identifier) { 28 | super(identifier); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/util/CraftIconCache.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.util; 2 | 3 | import org.bukkit.util.CachedServerIcon; 4 | 5 | public class CraftIconCache implements CachedServerIcon { 6 | public final String value; 7 | 8 | public CraftIconCache(final String value) { 9 | this.value = value; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/util/DatFileFilter.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.util; 2 | 3 | import java.io.File; 4 | import java.io.FilenameFilter; 5 | 6 | public class DatFileFilter implements FilenameFilter { 7 | public boolean accept(File dir, String name) { 8 | return name.endsWith(".dat"); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/util/LazyPlayerSet.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.util; 2 | 3 | import java.util.HashSet; 4 | import java.util.List; 5 | 6 | import org.bukkit.entity.Player; 7 | 8 | public class LazyPlayerSet extends LazyHashSet { 9 | 10 | @Override 11 | HashSet makeReference() { 12 | if (reference != null) { 13 | throw new IllegalStateException("Reference already created!"); 14 | } 15 | List players = net.minecraft.server.MinecraftServer.getServer().getConfigurationManager().playerEntityList; 16 | HashSet reference = new HashSet(players.size()); 17 | for (net.minecraft.entity.player.EntityPlayerMP player : players) { 18 | reference.add(player.getBukkitEntity()); 19 | } 20 | return reference; 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/util/LongHash.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.util; 2 | 3 | public class LongHash { 4 | public static long toLong(int msw, int lsw) { 5 | return ((long) msw << 32) + lsw - Integer.MIN_VALUE; 6 | } 7 | 8 | public static int msw(long l) { 9 | return (int) (l >> 32); 10 | } 11 | 12 | public static int lsw(long l) { 13 | return (int) (l) + Integer.MIN_VALUE; // Spigot - remove redundant & 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/org/bukkit/craftbukkit/util/ServerShutdownThread.java: -------------------------------------------------------------------------------- 1 | package org.bukkit.craftbukkit.util; 2 | 3 | import net.minecraft.world.MinecraftException; 4 | 5 | 6 | public class ServerShutdownThread extends Thread { 7 | private final net.minecraft.server.MinecraftServer server; 8 | 9 | public ServerShutdownThread(net.minecraft.server.MinecraftServer server) { 10 | this.server = server; 11 | } 12 | 13 | @Override 14 | public void run() { 15 | try { 16 | server.stopServer(); 17 | } catch (MinecraftException ex) { 18 | ex.printStackTrace(); 19 | } finally { 20 | try { 21 | server.reader.getTerminal().restore(); 22 | } catch (Exception e) { 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/org/spigotmc/TickLimiter.java: -------------------------------------------------------------------------------- 1 | package org.spigotmc; 2 | 3 | public class TickLimiter { 4 | private final int maxTime; 5 | private long startTime; 6 | private int tick; 7 | private boolean shouldContinue; 8 | public TickLimiter(int maxTime) { 9 | this.maxTime = maxTime; 10 | } 11 | 12 | public void initTick() { 13 | startTime = System.currentTimeMillis(); 14 | tick = 0; 15 | shouldContinue = true; 16 | } 17 | 18 | public boolean shouldContinue() { 19 | if (++tick >= 300 && shouldContinue) { 20 | tick = 0; 21 | shouldContinue = System.currentTimeMillis() - startTime < maxTime; 22 | } 23 | return shouldContinue; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/org/spigotmc/event/entity/EntityDismountEvent.java: -------------------------------------------------------------------------------- 1 | package org.spigotmc.event.entity; 2 | 3 | import org.bukkit.entity.Entity; 4 | import org.bukkit.event.HandlerList; 5 | import org.bukkit.event.entity.EntityEvent; 6 | 7 | /** 8 | * Called when an entity stops riding another entity. 9 | * 10 | */ 11 | public class EntityDismountEvent extends EntityEvent 12 | { 13 | 14 | private static final HandlerList handlers = new HandlerList(); 15 | private boolean cancelled; 16 | private final Entity dismounted; 17 | 18 | public EntityDismountEvent(Entity what, Entity dismounted) 19 | { 20 | super( what ); 21 | this.dismounted = dismounted; 22 | } 23 | 24 | public Entity getDismounted() 25 | { 26 | return dismounted; 27 | } 28 | 29 | @Override 30 | public HandlerList getHandlers() 31 | { 32 | return handlers; 33 | } 34 | 35 | public static HandlerList getHandlerList() 36 | { 37 | return handlers; 38 | } 39 | } -------------------------------------------------------------------------------- /src/main/java/thermos/BlockCoords.java: -------------------------------------------------------------------------------- 1 | package thermos; 2 | 3 | public class BlockCoords { 4 | public final int x, y, z; 5 | public final long key; 6 | private final int hash; 7 | 8 | public BlockCoords(int x, int y, int z) { 9 | this.x = x; 10 | this.y = y; 11 | this.z = z; 12 | 13 | key = ((long) y << 56) | (((long) z & 0xFFFFFFF) << 28) | (x & 0xFFFFFFF); 14 | hash = (int) (key ^ (key >>> 32)); 15 | } 16 | 17 | public BlockCoords(BlockCoords coords) { 18 | this.x = coords.x; 19 | this.y = coords.y; 20 | this.z = coords.z; 21 | this.key = coords.key; 22 | this.hash = coords.hash; 23 | } 24 | 25 | @Override 26 | public boolean equals(Object obj) { 27 | if (obj == this) 28 | return true; 29 | if (!(obj instanceof BlockCoords)) 30 | return false; 31 | BlockCoords coords = (BlockCoords) obj; 32 | return x == coords.x && y == coords.y && z == coords.z; 33 | } 34 | 35 | @Override 36 | public int hashCode() { 37 | return hash; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/thermos/ThermosRemapper.java: -------------------------------------------------------------------------------- 1 | package thermos; 2 | 3 | import net.md_5.specialsource.JarMapping; 4 | import net.md_5.specialsource.JarRemapper; 5 | 6 | public class ThermosRemapper extends JarRemapper { 7 | public ThermosRemapper(JarMapping jarMapping) { 8 | super(jarMapping); 9 | } 10 | 11 | @Override 12 | public String mapSignature(String signature, boolean typeSignature) { 13 | try { 14 | return super.mapSignature(signature, typeSignature); 15 | } catch (Exception e) { 16 | return signature; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/thermos/chaud/DesUtils.java: -------------------------------------------------------------------------------- 1 | package thermos.chaud; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | 5 | public class DesUtils { 6 | 7 | public static boolean isModded(String pkg) 8 | { 9 | return !(pkg.startsWith("net.minecraft") || pkg.startsWith("org.bukkit") || pkg.startsWith("cpw.mods.fml") || pkg.startsWith("org.spigotmc") || pkg.startsWith("thermos")); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/thermos/thermite/ThermiteTeleporter.java: -------------------------------------------------------------------------------- 1 | package thermos.thermite; 2 | 3 | import net.minecraft.entity.Entity; 4 | import net.minecraft.world.Teleporter; 5 | import net.minecraft.world.WorldServer; 6 | 7 | public class ThermiteTeleporter extends Teleporter 8 | { 9 | 10 | 11 | public ThermiteTeleporter(WorldServer world) 12 | { 13 | super(world); 14 | } 15 | 16 | @Override 17 | public boolean placeInExistingPortal(Entity e, double x, double y, double z, float rY) 18 | { 19 | e.setLocationAndAngles(x, y, z, rY, e.rotationPitch); 20 | return true; 21 | } 22 | 23 | @Override 24 | public void removeStalePortalLocations(long totalWorldTime) { } 25 | 26 | @Override 27 | public void placeInPortal(Entity e, double x, double y, double z, float rY) 28 | { 29 | placeInExistingPortal(e, x, y, z, rY); 30 | } 31 | 32 | } -------------------------------------------------------------------------------- /src/main/java/thermos/wrapper/LongHashMapTrove.java: -------------------------------------------------------------------------------- 1 | package thermos.wrapper; 2 | 3 | import gnu.trove.map.TLongObjectMap; 4 | import net.minecraft.util.LongHashMap; 5 | 6 | public class LongHashMapTrove extends LongHashMap { 7 | private final TLongObjectMap mMap; 8 | 9 | public LongHashMapTrove(TLongObjectMap map) { 10 | mMap = map; 11 | } 12 | 13 | @SuppressWarnings("unchecked") 14 | @Override 15 | public void add(long key, Object value) { 16 | mMap.put(key, (T) value); 17 | } 18 | 19 | @Override 20 | public int getNumHashElements() { 21 | return mMap.size(); 22 | } 23 | 24 | @Override 25 | public Object getValueByKey(long key) { 26 | return mMap.get(key); 27 | } 28 | 29 | @Override 30 | public boolean containsItem(long key) { 31 | return mMap.containsKey(key); 32 | } 33 | 34 | @Override 35 | public Object remove(long key) { 36 | return mMap.remove(key); 37 | } 38 | 39 | 40 | } 41 | -------------------------------------------------------------------------------- /src/main/mappings.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djoveryde/Contigo/0c7f04aa6e705823fb064f1ab72362808ddb0b19/src/main/mappings.zip -------------------------------------------------------------------------------- /src/main/resources/configurations/commands.yml: -------------------------------------------------------------------------------- 1 | # This is the commands configuration file for Bukkit. 2 | # For documentation on how to make use of this file, check out the Bukkit Wiki at 3 | # http://wiki.bukkit.org/Commands.yml 4 | # 5 | # If you need help on this file, feel free to join us on irc or leave a message 6 | # on the forums asking for advice. 7 | # 8 | # IRC: #bukkit @ esper.net 9 | # (If this means nothing to you, just go to http://webchat.esper.net/?channels=bukkit ) 10 | # Forums: http://forums.bukkit.org/forums/bukkit-help.6/ 11 | # Twitter: http://twitter.com/CraftBukkit 12 | # Bug tracker: http://leaky.bukkit.org/ 13 | 14 | command-block-overrides: [] 15 | aliases: 16 | icanhasbukkit: 17 | - "version $1-" -------------------------------------------------------------------------------- /src/main/resources/fmlversion.properties: -------------------------------------------------------------------------------- 1 | fmlbuild.major.number=7 2 | fmlbuild.minor.number=99 3 | fmlbuild.revision.number=4 4 | fmlbuild.build.number=1614 5 | fmlbuild.mcversion=1.7.10 6 | fmlbuild.mcpversion=9.05 7 | -------------------------------------------------------------------------------- /travii/make.sh: -------------------------------------------------------------------------------- 1 | mkdir $HOME/release 2 | rm -r $HOME/release/* 3 | 4 | # 1558 5 | cd forge 6 | git checkout aa8eaf2b286e809146b7faf4e59ce801a40eab9b 7 | cd .. 8 | git pull origin master 9 | ./gradlew --parallel -PofficialBuild clean setupCauldron --parallel jar 10 | cp build/distributions/Thermos*server* $HOME/release/Thermos-1.7.10-1558-server.jar 11 | 12 | # 1614 13 | cd forge 14 | git checkout c6aa04325e8a80af88755adb2339a402e7e90ebb 15 | cd .. 16 | git pull origin master 17 | ./gradlew --parallel -PofficialBuild clean setupCauldron --parallel jar packageBundle 18 | cp build/distributions/Thermos*server* $HOME/release/Thermos-1.7.10-1614-server.jar 19 | cd build/distributions/ 20 | unzip Thermos*bundle*zip 21 | rm -r bin/unknown 22 | mv bin libraries 23 | zip -r libraries.zip libraries 24 | cp libraries.zip $HOME/release 25 | --------------------------------------------------------------------------------