├── .gitignore ├── LICENSE ├── README.md ├── pom.xml └── src ├── main ├── assembly │ └── default.xml ├── java │ ├── com │ │ └── mojang │ │ │ └── authlib │ │ │ └── yggdrasil │ │ │ ├── YggdrasilAuthenticationServiceModified.java │ │ │ └── YggdrasilMinecraftSessionServiceModified.java │ └── net │ │ ├── canarymod │ │ ├── CanaryMod.java │ │ ├── Main.java │ │ ├── NativeTranslate.java │ │ ├── NotYetImplementedException.java │ │ ├── PortalReconstructJob.java │ │ ├── WorldCacheTimer.java │ │ ├── api │ │ │ ├── CanaryBoundingBox.java │ │ │ ├── CanaryConfigurationManager.java │ │ │ ├── CanaryDamageSource.java │ │ │ ├── CanaryDataWatcher.java │ │ │ ├── CanaryEntityTracker.java │ │ │ ├── CanaryEntityTrackerEntry.java │ │ │ ├── CanaryMobSpawnerEntry.java │ │ │ ├── CanaryMobSpawnerLogic.java │ │ │ ├── CanaryNetServerHandler.java │ │ │ ├── CanaryOfflinePlayer.java │ │ │ ├── CanaryPathFinder.java │ │ │ ├── CanaryPathFinderNPC.java │ │ │ ├── CanaryPlayerManager.java │ │ │ ├── CanaryServer.java │ │ │ ├── CanaryVillagerTrade.java │ │ │ ├── ai │ │ │ │ ├── CanaryAIArrowAttack.java │ │ │ │ ├── CanaryAIAttackOnCollide.java │ │ │ │ ├── CanaryAIAvoidEntity.java │ │ │ │ ├── CanaryAIBase.java │ │ │ │ ├── CanaryAIBeg.java │ │ │ │ ├── CanaryAIBreakDoor.java │ │ │ │ ├── CanaryAIControlledByPlayer.java │ │ │ │ ├── CanaryAICreeperSwell.java │ │ │ │ ├── CanaryAIDefendVillage.java │ │ │ │ ├── CanaryAIDoorInteract.java │ │ │ │ ├── CanaryAIEatGrass.java │ │ │ │ ├── CanaryAIFindEntityNearest.java │ │ │ │ ├── CanaryAIFindEntityNearestPlayer.java │ │ │ │ ├── CanaryAIFleeSun.java │ │ │ │ ├── CanaryAIFollowGolem.java │ │ │ │ ├── CanaryAIFollowOwner.java │ │ │ │ ├── CanaryAIFollowParent.java │ │ │ │ ├── CanaryAIHarvestFarmland.java │ │ │ │ ├── CanaryAIHurtByTarget.java │ │ │ │ ├── CanaryAILeapAtTarget.java │ │ │ │ ├── CanaryAILookAtTradePlayer.java │ │ │ │ ├── CanaryAILookAtVillager.java │ │ │ │ ├── CanaryAILookIdle.java │ │ │ │ ├── CanaryAIManager.java │ │ │ │ ├── CanaryAIMate.java │ │ │ │ ├── CanaryAIMoveIndoors.java │ │ │ │ ├── CanaryAIMoveThroughVillage.java │ │ │ │ ├── CanaryAIMoveToBlock.java │ │ │ │ ├── CanaryAIMoveTowardsRestriction.java │ │ │ │ ├── CanaryAIMoveTowardsTarget.java │ │ │ │ ├── CanaryAINearestAttackableTarget.java │ │ │ │ ├── CanaryAIOcelotAttack.java │ │ │ │ ├── CanaryAIOcelotSit.java │ │ │ │ ├── CanaryAIOpenDoor.java │ │ │ │ ├── CanaryAIOwnerHurtByTarget.java │ │ │ │ ├── CanaryAIOwnerHurtTarget.java │ │ │ │ ├── CanaryAIPanic.java │ │ │ │ ├── CanaryAIPlay.java │ │ │ │ ├── CanaryAIRestrictOpenDoor.java │ │ │ │ ├── CanaryAIRestrictSun.java │ │ │ │ ├── CanaryAIRunAroundLikeCrazy.java │ │ │ │ ├── CanaryAISit.java │ │ │ │ ├── CanaryAISwimming.java │ │ │ │ ├── CanaryAITarget.java │ │ │ │ ├── CanaryAITargetNonTamed.java │ │ │ │ ├── CanaryAITempt.java │ │ │ │ ├── CanaryAITradePlayer.java │ │ │ │ ├── CanaryAIVillagerInteract.java │ │ │ │ ├── CanaryAIVillagerMate.java │ │ │ │ ├── CanaryAIWander.java │ │ │ │ ├── CanaryAIWatchClosest.java │ │ │ │ ├── CanaryAIWatchClosest2.java │ │ │ │ └── EntityAICanary.java │ │ │ ├── attributes │ │ │ │ ├── CanaryAttribute.java │ │ │ │ ├── CanaryAttributeMap.java │ │ │ │ ├── CanaryAttributeModifier.java │ │ │ │ ├── CanaryModifiedAttribute.java │ │ │ │ └── CanaryRangedAttribute.java │ │ │ ├── channels │ │ │ │ └── CanaryChannelManager.java │ │ │ ├── chat │ │ │ │ ├── CanaryChatComponent.java │ │ │ │ ├── CanaryChatFormatting.java │ │ │ │ ├── CanaryChatStyle.java │ │ │ │ ├── CanaryClickEvent.java │ │ │ │ ├── CanaryClickEventAction.java │ │ │ │ ├── CanaryHoverEvent.java │ │ │ │ └── CanaryHoverEventAction.java │ │ │ ├── commandsys │ │ │ │ └── CanaryPlayerSelector.java │ │ │ ├── entity │ │ │ │ ├── CanaryArmorStand.java │ │ │ │ ├── CanaryArrow.java │ │ │ │ ├── CanaryEnderCrystal.java │ │ │ │ ├── CanaryEnderEye.java │ │ │ │ ├── CanaryEntity.java │ │ │ │ ├── CanaryEntityItem.java │ │ │ │ ├── CanaryFallingBlock.java │ │ │ │ ├── CanaryFireball.java │ │ │ │ ├── CanaryFireworkRocket.java │ │ │ │ ├── CanaryLargeFireball.java │ │ │ │ ├── CanaryProjectile.java │ │ │ │ ├── CanarySmallFireball.java │ │ │ │ ├── CanaryTNTPrimed.java │ │ │ │ ├── CanaryWitherSkull.java │ │ │ │ ├── CanaryXPOrb.java │ │ │ │ ├── effect │ │ │ │ │ ├── CanaryLightningBolt.java │ │ │ │ │ └── CanaryWeatherEffect.java │ │ │ │ ├── hanging │ │ │ │ │ ├── CanaryHangingEntity.java │ │ │ │ │ ├── CanaryItemFrame.java │ │ │ │ │ ├── CanaryLeashKnot.java │ │ │ │ │ └── CanaryPainting.java │ │ │ │ ├── living │ │ │ │ │ ├── CanaryEntityLiving.java │ │ │ │ │ ├── CanaryIronGolem.java │ │ │ │ │ ├── CanaryLivingBase.java │ │ │ │ │ ├── CanarySnowman.java │ │ │ │ │ ├── animal │ │ │ │ │ │ ├── CanaryAgeableAnimal.java │ │ │ │ │ │ ├── CanaryAnimal.java │ │ │ │ │ │ ├── CanaryBat.java │ │ │ │ │ │ ├── CanaryChicken.java │ │ │ │ │ │ ├── CanaryCow.java │ │ │ │ │ │ ├── CanaryHorse.java │ │ │ │ │ │ ├── CanaryMooshroom.java │ │ │ │ │ │ ├── CanaryOcelot.java │ │ │ │ │ │ ├── CanaryPig.java │ │ │ │ │ │ ├── CanaryRabbit.java │ │ │ │ │ │ ├── CanarySheep.java │ │ │ │ │ │ ├── CanarySquid.java │ │ │ │ │ │ ├── CanaryTameable.java │ │ │ │ │ │ └── CanaryWolf.java │ │ │ │ │ ├── humanoid │ │ │ │ │ │ ├── CanaryHuman.java │ │ │ │ │ │ ├── CanaryHumanCapabilities.java │ │ │ │ │ │ ├── CanaryNonPlayableCharacter.java │ │ │ │ │ │ ├── CanaryPlayer.java │ │ │ │ │ │ ├── CanaryVillager.java │ │ │ │ │ │ ├── EntityNonPlayableCharacter.java │ │ │ │ │ │ └── npchelpers │ │ │ │ │ │ │ ├── EntityNPCJumpHelper.java │ │ │ │ │ │ │ ├── EntityNPCLookHelper.java │ │ │ │ │ │ │ ├── EntityNPCMoveHelper.java │ │ │ │ │ │ │ ├── PathNavigateGroundNPC.java │ │ │ │ │ │ │ └── PathNavigateNPC.java │ │ │ │ │ └── monster │ │ │ │ │ │ ├── CanaryBlaze.java │ │ │ │ │ │ ├── CanaryCaveSpider.java │ │ │ │ │ │ ├── CanaryCreeper.java │ │ │ │ │ │ ├── CanaryEnderDragon.java │ │ │ │ │ │ ├── CanaryEnderman.java │ │ │ │ │ │ ├── CanaryEndermite.java │ │ │ │ │ │ ├── CanaryEntityMob.java │ │ │ │ │ │ ├── CanaryGhast.java │ │ │ │ │ │ ├── CanaryGiantZombie.java │ │ │ │ │ │ ├── CanaryGuardian.java │ │ │ │ │ │ ├── CanaryMagmaCube.java │ │ │ │ │ │ ├── CanaryPigZombie.java │ │ │ │ │ │ ├── CanarySilverfish.java │ │ │ │ │ │ ├── CanarySkeleton.java │ │ │ │ │ │ ├── CanarySlime.java │ │ │ │ │ │ ├── CanarySpider.java │ │ │ │ │ │ ├── CanaryWitch.java │ │ │ │ │ │ ├── CanaryWither.java │ │ │ │ │ │ └── CanaryZombie.java │ │ │ │ ├── throwable │ │ │ │ │ ├── CanaryChickenEgg.java │ │ │ │ │ ├── CanaryEnderPearl.java │ │ │ │ │ ├── CanaryEntityPotion.java │ │ │ │ │ ├── CanaryEntityThrowable.java │ │ │ │ │ ├── CanarySnowball.java │ │ │ │ │ └── CanaryXPBottle.java │ │ │ │ └── vehicle │ │ │ │ │ ├── CanaryAnimalVehicle.java │ │ │ │ │ ├── CanaryBoat.java │ │ │ │ │ ├── CanaryChestMinecart.java │ │ │ │ │ ├── CanaryCommandBlockMinecart.java │ │ │ │ │ ├── CanaryContainerMinecart.java │ │ │ │ │ ├── CanaryEmptyMinecart.java │ │ │ │ │ ├── CanaryFurnaceMinecart.java │ │ │ │ │ ├── CanaryHopperMinecart.java │ │ │ │ │ ├── CanaryMinecart.java │ │ │ │ │ ├── CanaryMobSpawnerMinecart.java │ │ │ │ │ ├── CanaryTNTMinecart.java │ │ │ │ │ └── CanaryVehicle.java │ │ │ ├── factory │ │ │ │ ├── CanaryAIFactory.java │ │ │ │ ├── CanaryAttributeFactory.java │ │ │ │ ├── CanaryChatComponentFactory.java │ │ │ │ ├── CanaryEntityFactory.java │ │ │ │ ├── CanaryFactory.java │ │ │ │ ├── CanaryItemFactory.java │ │ │ │ ├── CanaryNBTFactory.java │ │ │ │ ├── CanaryObjectFactory.java │ │ │ │ ├── CanaryPacketFactory.java │ │ │ │ ├── CanaryPotionFactory.java │ │ │ │ └── CanaryStatisticsFactory.java │ │ │ ├── inventory │ │ │ │ ├── CanaryAnimalInventory.java │ │ │ │ ├── CanaryBaseItem.java │ │ │ │ ├── CanaryBlockInventory.java │ │ │ │ ├── CanaryCustomStorageInventory.java │ │ │ │ ├── CanaryEnchantment.java │ │ │ │ ├── CanaryEnderChestInventory.java │ │ │ │ ├── CanaryEntityInventory.java │ │ │ │ ├── CanaryItem.java │ │ │ │ ├── CanaryMapData.java │ │ │ │ ├── CanaryOfflineEnderChestInventory.java │ │ │ │ ├── CanaryOfflinePlayerInventory.java │ │ │ │ ├── CanaryPlayerCraftingMatrix.java │ │ │ │ ├── CanaryPlayerInventory.java │ │ │ │ ├── CanaryVillagerInventory.java │ │ │ │ ├── NativeCustomStorageInventory.java │ │ │ │ ├── recipes │ │ │ │ │ ├── CanaryRecipe.java │ │ │ │ │ ├── CanaryShapedRecipe.java │ │ │ │ │ ├── CanaryShapelessRecipe.java │ │ │ │ │ └── ShapedRecipeHelper.java │ │ │ │ └── slot │ │ │ │ │ └── SlotHelper.java │ │ │ ├── nbt │ │ │ │ ├── CanaryBaseTag.java │ │ │ │ ├── CanaryByteArrayTag.java │ │ │ │ ├── CanaryByteTag.java │ │ │ │ ├── CanaryCompoundTag.java │ │ │ │ ├── CanaryDoubleTag.java │ │ │ │ ├── CanaryFloatTag.java │ │ │ │ ├── CanaryIntArrayTag.java │ │ │ │ ├── CanaryIntTag.java │ │ │ │ ├── CanaryListTag.java │ │ │ │ ├── CanaryLongTag.java │ │ │ │ ├── CanaryPrimitiveTag.java │ │ │ │ ├── CanaryShortTag.java │ │ │ │ ├── CanaryStringTag.java │ │ │ │ ├── ListTagIterator.java │ │ │ │ └── ListTagListIterator.java │ │ │ ├── packet │ │ │ │ ├── CanaryBlockChangePacket.java │ │ │ │ └── CanaryPacket.java │ │ │ ├── potion │ │ │ │ ├── CanaryPotion.java │ │ │ │ └── CanaryPotionEffect.java │ │ │ ├── scoreboard │ │ │ │ ├── CanaryScore.java │ │ │ │ ├── CanaryScoreDummyCriteria.java │ │ │ │ ├── CanaryScoreHealthCriteria.java │ │ │ │ ├── CanaryScoreObjective.java │ │ │ │ ├── CanaryScoreboard.java │ │ │ │ ├── CanaryScoreboardManager.java │ │ │ │ ├── CanaryTeam.java │ │ │ │ └── ScoreCanaryCriteria.java │ │ │ ├── statistics │ │ │ │ ├── CanaryAchievement.java │ │ │ │ └── CanaryStat.java │ │ │ └── world │ │ │ │ ├── CanaryBiome.java │ │ │ │ ├── CanaryChunk.java │ │ │ │ ├── CanaryChunkProviderCustom.java │ │ │ │ ├── CanaryChunkProviderServer.java │ │ │ │ ├── CanarySaveConverter.java │ │ │ │ ├── CanaryVillage.java │ │ │ │ ├── CanaryWorld.java │ │ │ │ ├── CanaryWorldManager.java │ │ │ │ ├── blocks │ │ │ │ ├── CanaryAnvil.java │ │ │ │ ├── CanaryBanner.java │ │ │ │ ├── CanaryBeacon.java │ │ │ │ ├── CanaryBlock.java │ │ │ │ ├── CanaryBlockBase.java │ │ │ │ ├── CanaryBlockMaterial.java │ │ │ │ ├── CanaryBrewingStand.java │ │ │ │ ├── CanaryChest.java │ │ │ │ ├── CanaryCommandBlock.java │ │ │ │ ├── CanaryComparator.java │ │ │ │ ├── CanaryDaylightDetector.java │ │ │ │ ├── CanaryDispenser.java │ │ │ │ ├── CanaryDoubleChest.java │ │ │ │ ├── CanaryDropper.java │ │ │ │ ├── CanaryEnchantmentTable.java │ │ │ │ ├── CanaryFurnace.java │ │ │ │ ├── CanaryHopperBlock.java │ │ │ │ ├── CanaryJukebox.java │ │ │ │ ├── CanaryLockableTileEntity.java │ │ │ │ ├── CanaryMapColor.java │ │ │ │ ├── CanaryMobSpawner.java │ │ │ │ ├── CanaryNoteBlock.java │ │ │ │ ├── CanarySign.java │ │ │ │ ├── CanarySkull.java │ │ │ │ ├── CanaryTileEntity.java │ │ │ │ ├── CanaryWorkbench.java │ │ │ │ └── properties │ │ │ │ │ ├── BlockStateMapper.java │ │ │ │ │ ├── CanaryBlockBooleanProperty.java │ │ │ │ │ ├── CanaryBlockDirectionProperty.java │ │ │ │ │ ├── CanaryBlockEnumProperty.java │ │ │ │ │ ├── CanaryBlockIntegerProperty.java │ │ │ │ │ └── CanaryBlockProperty.java │ │ │ │ └── position │ │ │ │ └── BlockPosition.java │ │ ├── serialize │ │ │ ├── EnchantmentSerializer.java │ │ │ └── ItemSerializer.java │ │ └── util │ │ │ ├── CanaryJsonNBTUtility.java │ │ │ ├── ForwardLogHandler.java │ │ │ ├── NMSToolBox.java │ │ │ ├── ObjectPool.java │ │ │ ├── ShutdownLogger.java │ │ │ ├── SysOutWriterThread.java │ │ │ └── Unwrapper.java │ │ └── minecraft │ │ ├── block │ │ ├── Block.java │ │ ├── BlockAnvil.java │ │ ├── BlockBasePressurePlate.java │ │ ├── BlockButton.java │ │ ├── BlockCactus.java │ │ ├── BlockChest.java │ │ ├── BlockCocoa.java │ │ ├── BlockCompressedPowered.java │ │ ├── BlockCrops.java │ │ ├── BlockDaylightDetector.java │ │ ├── BlockDispenser.java │ │ ├── BlockDoor.java │ │ ├── BlockDoublePlant.java │ │ ├── BlockDynamicLiquid.java │ │ ├── BlockFalling.java │ │ ├── BlockFire.java │ │ ├── BlockJukebox.java │ │ ├── BlockLeaves.java │ │ ├── BlockLever.java │ │ ├── BlockMushroom.java │ │ ├── BlockNetherWart.java │ │ ├── BlockPistonBase.java │ │ ├── BlockPortal.java │ │ ├── BlockRailDetector.java │ │ ├── BlockRedstoneComparator.java │ │ ├── BlockRedstoneDiode.java │ │ ├── BlockRedstoneRepeater.java │ │ ├── BlockRedstoneTorch.java │ │ ├── BlockRedstoneWire.java │ │ ├── BlockReed.java │ │ ├── BlockSapling.java │ │ ├── BlockSlab.java │ │ ├── BlockStaticLiquid.java │ │ ├── BlockStem.java │ │ ├── BlockTNT.java │ │ ├── BlockTripWireHook.java │ │ ├── BlockVine.java │ │ └── material │ │ │ ├── MapColor.java │ │ │ └── Material.java │ │ ├── command │ │ ├── CommandDefaultGameMode.java │ │ ├── CommandDifficulty.java │ │ ├── CommandExecuteAt.java │ │ ├── CommandGameRule.java │ │ ├── CommandHandler.java │ │ ├── CommandSetSpawnpoint.java │ │ ├── CommandTime.java │ │ ├── CommandToggleDownfall.java │ │ ├── CommandWeather.java │ │ ├── CommandWorldBorder.java │ │ ├── PlayerSelector.java │ │ ├── ServerCommandManager.java │ │ └── server │ │ │ ├── CommandBlockLogic.java │ │ │ ├── CommandSaveAll.java │ │ │ ├── CommandSaveOff.java │ │ │ ├── CommandSaveOn.java │ │ │ ├── CommandScoreboard.java │ │ │ ├── CommandStop.java │ │ │ ├── CommandSummon.java │ │ │ └── CommandTeleport.java │ │ ├── dispenser │ │ ├── BehaviorDefaultDispenseItem.java │ │ └── BehaviorProjectileDispense.java │ │ ├── entity │ │ ├── Entity.java │ │ ├── EntityHanging.java │ │ ├── EntityLeashKnot.java │ │ ├── EntityLiving.java │ │ ├── EntityLivingBase.java │ │ ├── EntityMinecartCommandBlock.java │ │ ├── EntityTracker.java │ │ ├── EntityTrackerEntry.java │ │ ├── ai │ │ │ ├── EntityAIArrowAttack.java │ │ │ ├── EntityAIAttackOnCollide.java │ │ │ ├── EntityAIAvoidEntity.java │ │ │ ├── EntityAIBase.java │ │ │ ├── EntityAIBeg.java │ │ │ ├── EntityAIBreakDoor.java │ │ │ ├── EntityAIControlledByPlayer.java │ │ │ ├── EntityAICreeperSwell.java │ │ │ ├── EntityAIDefendVillage.java │ │ │ ├── EntityAIDoorInteract.java │ │ │ ├── EntityAIEatGrass.java │ │ │ ├── EntityAIFindEntityNearest.java │ │ │ ├── EntityAIFindEntityNearestPlayer.java │ │ │ ├── EntityAIFleeSun.java │ │ │ ├── EntityAIFollowGolem.java │ │ │ ├── EntityAIFollowOwner.java │ │ │ ├── EntityAIFollowParent.java │ │ │ ├── EntityAIHarvestFarmland.java │ │ │ ├── EntityAIHurtByTarget.java │ │ │ ├── EntityAILeapAtTarget.java │ │ │ ├── EntityAILookAtTradePlayer.java │ │ │ ├── EntityAILookAtVillager.java │ │ │ ├── EntityAILookIdle.java │ │ │ ├── EntityAIMate.java │ │ │ ├── EntityAIMoveIndoors.java │ │ │ ├── EntityAIMoveThroughVillage.java │ │ │ ├── EntityAIMoveToBlock.java │ │ │ ├── EntityAIMoveTowardsRestriction.java │ │ │ ├── EntityAIMoveTowardsTarget.java │ │ │ ├── EntityAINearestAttackableTarget.java │ │ │ ├── EntityAIOcelotAttack.java │ │ │ ├── EntityAIOcelotSit.java │ │ │ ├── EntityAIOpenDoor.java │ │ │ ├── EntityAIOwnerHurtByTarget.java │ │ │ ├── EntityAIOwnerHurtTarget.java │ │ │ ├── EntityAIPanic.java │ │ │ ├── EntityAIPlay.java │ │ │ ├── EntityAIRestrictOpenDoor.java │ │ │ ├── EntityAIRestrictSun.java │ │ │ ├── EntityAIRunAroundLikeCrazy.java │ │ │ ├── EntityAISit.java │ │ │ ├── EntityAISwimming.java │ │ │ ├── EntityAITarget.java │ │ │ ├── EntityAITargetNonTamed.java │ │ │ ├── EntityAITasks.java │ │ │ ├── EntityAITempt.java │ │ │ ├── EntityAITradePlayer.java │ │ │ ├── EntityAIVillagerInteract.java │ │ │ ├── EntityAIVillagerMate.java │ │ │ ├── EntityAIWander.java │ │ │ ├── EntityAIWatchClosest.java │ │ │ ├── EntityAIWatchClosest2.java │ │ │ ├── EntityMinecartMobSpawner.java │ │ │ └── attributes │ │ │ │ ├── AttributeModifier.java │ │ │ │ ├── BaseAttribute.java │ │ │ │ ├── BaseAttributeMap.java │ │ │ │ ├── IAttribute.java │ │ │ │ ├── IAttributeInstance.java │ │ │ │ ├── ModifiableAttributeInstance.java │ │ │ │ ├── RangedAttribute.java │ │ │ │ └── ServersideAttributeMap.java │ │ ├── boss │ │ │ ├── EntityDragon.java │ │ │ └── EntityWither.java │ │ ├── effect │ │ │ ├── EntityLightningBolt.java │ │ │ └── EntityWeatherEffect.java │ │ ├── item │ │ │ ├── EntityArmorStand.java │ │ │ ├── EntityBoat.java │ │ │ ├── EntityEnderCrystal.java │ │ │ ├── EntityEnderEye.java │ │ │ ├── EntityEnderPearl.java │ │ │ ├── EntityExpBottle.java │ │ │ ├── EntityFallingBlock.java │ │ │ ├── EntityFireworkRocket.java │ │ │ ├── EntityItem.java │ │ │ ├── EntityItemFrame.java │ │ │ ├── EntityMinecart.java │ │ │ ├── EntityMinecartChest.java │ │ │ ├── EntityMinecartContainer.java │ │ │ ├── EntityMinecartEmpty.java │ │ │ ├── EntityMinecartFurnace.java │ │ │ ├── EntityMinecartHopper.java │ │ │ ├── EntityMinecartTNT.java │ │ │ ├── EntityPainting.java │ │ │ ├── EntityTNTPrimed.java │ │ │ └── EntityXPOrb.java │ │ ├── monster │ │ │ ├── EntityBlaze.java │ │ │ ├── EntityCaveSpider.java │ │ │ ├── EntityCreeper.java │ │ │ ├── EntityEnderman.java │ │ │ ├── EntityEndermite.java │ │ │ ├── EntityGhast.java │ │ │ ├── EntityGiantZombie.java │ │ │ ├── EntityGuardian.java │ │ │ ├── EntityIronGolem.java │ │ │ ├── EntityMagmaCube.java │ │ │ ├── EntityMob.java │ │ │ ├── EntityPigZombie.java │ │ │ ├── EntitySilverfish.java │ │ │ ├── EntitySkeleton.java │ │ │ ├── EntitySlime.java │ │ │ ├── EntitySnowman.java │ │ │ ├── EntitySpider.java │ │ │ ├── EntityWitch.java │ │ │ └── EntityZombie.java │ │ ├── passive │ │ │ ├── EntityAnimal.java │ │ │ ├── EntityBat.java │ │ │ ├── EntityChicken.java │ │ │ ├── EntityCow.java │ │ │ ├── EntityHorse.java │ │ │ ├── EntityMooshroom.java │ │ │ ├── EntityOcelot.java │ │ │ ├── EntityPig.java │ │ │ ├── EntityRabbit.java │ │ │ ├── EntitySheep.java │ │ │ ├── EntitySquid.java │ │ │ ├── EntityVillager.java │ │ │ └── EntityWolf.java │ │ ├── player │ │ │ ├── EntityPlayer.java │ │ │ ├── EntityPlayerMP.java │ │ │ ├── InventoryPlayer.java │ │ │ └── PlayerCapabilities.java │ │ └── projectile │ │ │ ├── EntityArrow.java │ │ │ ├── EntityEgg.java │ │ │ ├── EntityFireball.java │ │ │ ├── EntityLargeFireball.java │ │ │ ├── EntityPotion.java │ │ │ ├── EntitySmallFireball.java │ │ │ ├── EntitySnowball.java │ │ │ ├── EntityThrowable.java │ │ │ └── EntityWitherSkull.java │ │ ├── event │ │ ├── ClickEvent.java │ │ └── HoverEvent.java │ │ ├── init │ │ └── Bootstrap.java │ │ ├── inventory │ │ ├── Container.java │ │ ├── ContainerBeacon.java │ │ ├── ContainerBrewingStand.java │ │ ├── ContainerChest.java │ │ ├── ContainerDispenser.java │ │ ├── ContainerEnchantment.java │ │ ├── ContainerFurnace.java │ │ ├── ContainerHopper.java │ │ ├── ContainerHorseInventory.java │ │ ├── ContainerMerchant.java │ │ ├── ContainerPlayer.java │ │ ├── ContainerRepair.java │ │ ├── ContainerWorkbench.java │ │ ├── IInventory.java │ │ ├── InventoryBasic.java │ │ ├── InventoryCraftResult.java │ │ ├── InventoryCrafting.java │ │ ├── InventoryEnderChest.java │ │ ├── InventoryLargeChest.java │ │ ├── InventoryMerchant.java │ │ └── SlotMerchantResult.java │ │ ├── item │ │ ├── Item.java │ │ ├── ItemBed.java │ │ ├── ItemBlock.java │ │ ├── ItemBucket.java │ │ ├── ItemBucketMilk.java │ │ ├── ItemDoor.java │ │ ├── ItemFireball.java │ │ ├── ItemFlintAndSteel.java │ │ ├── ItemFood.java │ │ ├── ItemHangingEntity.java │ │ ├── ItemHoe.java │ │ ├── ItemMap.java │ │ ├── ItemMonsterPlacer.java │ │ ├── ItemPotion.java │ │ ├── ItemRecord.java │ │ ├── ItemRedstone.java │ │ ├── ItemReed.java │ │ ├── ItemSeeds.java │ │ ├── ItemSign.java │ │ ├── ItemSkull.java │ │ ├── ItemSlab.java │ │ ├── ItemSoup.java │ │ ├── ItemStack.java │ │ └── crafting │ │ │ ├── CraftingManager.java │ │ │ ├── FurnaceRecipes.java │ │ │ ├── ShapedRecipes.java │ │ │ └── ShapelessRecipes.java │ │ ├── nbt │ │ ├── NBTTagByte.java │ │ ├── NBTTagByteArray.java │ │ ├── NBTTagCompound.java │ │ ├── NBTTagDouble.java │ │ ├── NBTTagFloat.java │ │ ├── NBTTagInt.java │ │ ├── NBTTagIntArray.java │ │ ├── NBTTagList.java │ │ ├── NBTTagLong.java │ │ ├── NBTTagShort.java │ │ └── NBTTagString.java │ │ ├── network │ │ ├── NetHandlerPlayServer.java │ │ ├── NetworkManager.java │ │ ├── handshake │ │ │ └── client │ │ │ │ └── C00Handshake.java │ │ ├── play │ │ │ └── server │ │ │ │ ├── S23PacketBlockChange.java │ │ │ │ ├── S2APacketParticles.java │ │ │ │ ├── S38PacketPlayerListItem.java │ │ │ │ ├── S3BPacketScoreboardObjective.java │ │ │ │ ├── S3CPacketUpdateScore.java │ │ │ │ └── S3DPacketDisplayScoreboard.java │ │ └── rcon │ │ │ └── RConThreadQuery.java │ │ ├── pathfinding │ │ └── PathNavigate.java │ │ ├── potion │ │ └── Potion.java │ │ ├── scoreboard │ │ ├── Score.java │ │ ├── ScoreDummyCriteria.java │ │ ├── ScoreHealthCriteria.java │ │ ├── ScoreObjective.java │ │ ├── ScorePlayerTeam.java │ │ ├── Scoreboard.java │ │ └── ServerScoreboard.java │ │ ├── server │ │ ├── MinecraftServer.java │ │ ├── dedicated │ │ │ ├── DedicatedPlayerList.java │ │ │ └── DedicatedServer.java │ │ ├── gui │ │ │ ├── MinecraftServerGui.java │ │ │ └── StatsComponent.java │ │ ├── management │ │ │ ├── ItemInWorldManager.java │ │ │ ├── PlayerManager.java │ │ │ └── ServerConfigurationManager.java │ │ └── network │ │ │ ├── NetHandlerHandshakeTCP.java │ │ │ ├── NetHandlerLoginServer.java │ │ │ └── NetHandlerStatusServer.java │ │ ├── stats │ │ ├── Achievement.java │ │ ├── StatBase.java │ │ └── StatisticsFile.java │ │ ├── tileentity │ │ ├── MobSpawnerBaseLogic.java │ │ ├── TileEntity.java │ │ ├── TileEntityBanner.java │ │ ├── TileEntityBeacon.java │ │ ├── TileEntityBrewingStand.java │ │ ├── TileEntityChest.java │ │ ├── TileEntityCommandBlock.java │ │ ├── TileEntityComparator.java │ │ ├── TileEntityDaylightDetector.java │ │ ├── TileEntityDispenser.java │ │ ├── TileEntityDropper.java │ │ ├── TileEntityFurnace.java │ │ ├── TileEntityHopper.java │ │ ├── TileEntityMobSpawner.java │ │ ├── TileEntityNote.java │ │ ├── TileEntitySign.java │ │ └── TileEntitySkull.java │ │ ├── util │ │ ├── ChatComponentStyle.java │ │ ├── ChatComponentText.java │ │ ├── ChatStyle.java │ │ ├── DamageSource.java │ │ ├── EntityDamageSource.java │ │ ├── EnumChatFormatting.java │ │ ├── EnumFacing.java │ │ ├── FoodStats.java │ │ └── IChatComponent.java │ │ ├── village │ │ ├── MerchantRecipe.java │ │ └── Village.java │ │ └── world │ │ ├── Explosion.java │ │ ├── World.java │ │ ├── WorldProvider.java │ │ ├── WorldServer.java │ │ ├── WorldServerMulti.java │ │ ├── biome │ │ └── BiomeGenBase.java │ │ ├── chunk │ │ ├── Chunk.java │ │ └── storage │ │ │ ├── AnvilSaveConverter.java │ │ │ └── AnvilSaveHandler.java │ │ ├── gen │ │ └── ChunkProviderServer.java │ │ └── storage │ │ ├── MapData.java │ │ ├── SaveFormatOld.java │ │ ├── SaveHandler.java │ │ └── WorldInfo.java └── resources │ ├── assets │ └── favicon.png │ └── log4j2.xml └── test └── java └── net └── canarymod ├── CanaryModTest.java └── api └── world └── blocks └── properties ├── CanaryBlockEnumPropertyTest.java └── helpers └── BlockPropertiesTest.java /src/main/assembly/default.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | false 7 | 8 | tar.gz 9 | tar.bz2 10 | zip 11 | 12 | 13 | 14 | ${project.build.directory}/${artifactId}-${project.version}.jar 15 | CanaryMod.jar 16 | / 17 | false 18 | 19 | 20 | 21 | 22 | ${project.build.directory}/lib 23 | /lib 24 | 25 | *.jar 26 | 27 | 28 | 29 | ${project.basedir} 30 | / 31 | 32 | README* 33 | LICENSE* 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /src/main/java/com/mojang/authlib/yggdrasil/YggdrasilAuthenticationServiceModified.java: -------------------------------------------------------------------------------- 1 | package com.mojang.authlib.yggdrasil; 2 | 3 | import com.mojang.authlib.minecraft.MinecraftSessionService; 4 | 5 | import java.net.Proxy; 6 | 7 | /** 8 | * Modified YggdrasilAuthenticationService for disabling mismatched session ip 9 | */ 10 | public class YggdrasilAuthenticationServiceModified extends YggdrasilAuthenticationService { 11 | 12 | public YggdrasilAuthenticationServiceModified(Proxy proxy, String clientToken) { 13 | super(proxy, clientToken); 14 | } 15 | 16 | //CanaryMod: Create the modified SessionService for Session IP verification 17 | public MinecraftSessionService createModifiedMinecraftSessionService() { 18 | return new YggdrasilMinecraftSessionServiceModified(this); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/NativeTranslate.java: -------------------------------------------------------------------------------- 1 | package net.canarymod; 2 | 3 | import net.minecraft.util.StatCollector; 4 | 5 | /** 6 | * The Pot O' Gold 7 | * 8 | * @author Jason (darkdiplomat) 9 | */ 10 | final class NativeTranslate extends NativeTranslateBridge { 11 | 12 | static { 13 | $ = new NativeTranslate(); 14 | } 15 | 16 | static void initialize() { 17 | } 18 | 19 | @Override 20 | public String nativeTranslate(String key) { 21 | return StatCollector.a(key); 22 | } 23 | 24 | @Override 25 | public String nativeTranslate(String key, Object... args) { 26 | return StatCollector.a(key, args); 27 | } 28 | 29 | @Override 30 | public boolean nativeCanTranslate(String key) { 31 | return StatCollector.c(key); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/NotYetImplementedException.java: -------------------------------------------------------------------------------- 1 | package net.canarymod; 2 | 3 | /** 4 | * Not Yet Implemented 5 | * 6 | * @author Jason Jones (darkdiplomat) 7 | */ 8 | public class NotYetImplementedException extends UnsupportedOperationException { 9 | 10 | public NotYetImplementedException() { 11 | 12 | } 13 | 14 | public NotYetImplementedException(String msg) { 15 | super(msg); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/CanaryDataWatcher.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api; 2 | 3 | public class CanaryDataWatcher implements DataWatcher { 4 | 5 | private net.minecraft.entity.DataWatcher dataWatcher; 6 | 7 | public CanaryDataWatcher(net.minecraft.entity.DataWatcher dw) { 8 | dataWatcher = dw; 9 | } 10 | 11 | @Override 12 | public void addObject(int index, Object object) { 13 | dataWatcher.a(index, object); 14 | 15 | } 16 | 17 | @Override 18 | public void updateObject(int index, Object object) { 19 | dataWatcher.b(index, object); 20 | 21 | } 22 | 23 | @Override 24 | public byte getByte(int index) { 25 | return dataWatcher.a(index); 26 | } 27 | 28 | @Override 29 | public short getShort(int index) { 30 | return dataWatcher.b(index); 31 | } 32 | 33 | @Override 34 | public int getInt(int index) { 35 | return dataWatcher.c(index); 36 | } 37 | 38 | @Override 39 | public String getString(int index) { 40 | return dataWatcher.e(index); 41 | } 42 | 43 | public net.minecraft.entity.DataWatcher getHandle() { 44 | return dataWatcher; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/CanaryEntityTrackerEntry.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api; 2 | 3 | import net.canarymod.api.entity.Entity; 4 | 5 | public class CanaryEntityTrackerEntry implements EntityTrackerEntry { 6 | private net.minecraft.entity.EntityTrackerEntry entry; 7 | 8 | public CanaryEntityTrackerEntry(net.minecraft.entity.EntityTrackerEntry entry) { 9 | this.entry = entry; 10 | } 11 | 12 | @Override 13 | public Entity getEntity() { 14 | return entry.a.getCanaryEntity(); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/CanaryPathFinder.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api; 2 | 3 | import net.canarymod.api.entity.Entity; 4 | import net.canarymod.api.world.World; 5 | import net.canarymod.api.world.blocks.Block; 6 | import net.canarymod.api.world.position.Location; 7 | import net.minecraft.pathfinding.PathNavigate; 8 | 9 | /** 10 | * @author Somners 11 | */ 12 | public class CanaryPathFinder implements PathFinder { 13 | 14 | private PathNavigate nav = null; 15 | 16 | public CanaryPathFinder(PathNavigate nav) { 17 | this.nav = nav; 18 | } 19 | 20 | /** 21 | * {@inheritDoc} 22 | */ 23 | @Override 24 | public boolean setPathToXYZ(double x, double y, double z, World world) { 25 | return nav.a(x, y, z, nav.e); 26 | } 27 | 28 | /** 29 | * {@inheritDoc} 30 | */ 31 | @Override 32 | public boolean setPathToLocation(Location location) { 33 | return nav.a(location.getX(), location.getY(), location.getZ(), nav.e); 34 | } 35 | 36 | /** 37 | * {@inheritDoc} 38 | */ 39 | @Override 40 | public boolean setPathToEntity(Entity entity) { 41 | return nav.a(entity.getX(), entity.getY(), entity.getZ(), nav.e); 42 | } 43 | 44 | /** 45 | * {@inheritDoc} 46 | */ 47 | @Override 48 | public boolean setPathToBlock(Block block) { 49 | return nav.a(block.getX(), block.getY(), block.getZ(), nav.e); 50 | } 51 | 52 | /** 53 | * {@inheritDoc} 54 | */ 55 | @Override 56 | public void setSpeed(float speed) { 57 | nav.a(speed); 58 | } 59 | 60 | /** 61 | * {@inheritDoc} 62 | */ 63 | @Override 64 | public void setPathSearchRange(float range) { 65 | // nav.e = range; // Unable to set Range at this time... 66 | } 67 | 68 | } 69 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIArrowAttack.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIArrowAttack; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIArrowAttack extends CanaryAIBase implements AIArrowAttack { 9 | 10 | public CanaryAIArrowAttack(EntityAIArrowAttack ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIArrowAttack getHandle() { 16 | return (EntityAIArrowAttack) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIAttackOnCollide.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIAttackOnCollide; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIAttackOnCollide extends CanaryAIBase implements AIAttackOnCollide { 9 | 10 | public CanaryAIAttackOnCollide(EntityAIAttackOnCollide ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIAttackOnCollide getHandle() { 16 | return (EntityAIAttackOnCollide) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIAvoidEntity.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIAvoidEntity; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIAvoidEntity extends CanaryAIBase implements AIAvoidEntity { 9 | 10 | public CanaryAIAvoidEntity(EntityAIAvoidEntity ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIAvoidEntity getHandle() { 16 | return (EntityAIAvoidEntity) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIBase.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIBase; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public abstract class CanaryAIBase implements AIBase { 9 | 10 | protected EntityAIBase handle; 11 | 12 | public CanaryAIBase(EntityAIBase ai) { 13 | this.handle = ai; 14 | } 15 | 16 | @Override 17 | public boolean shouldExecute() { 18 | return this.handle.a(); 19 | } 20 | 21 | @Override 22 | public boolean continueExecuting() { 23 | return this.handle.b(); 24 | } 25 | 26 | @Override 27 | public boolean isContinuous() { 28 | return this.handle.i(); 29 | } 30 | 31 | @Override 32 | public void startExecuting() { 33 | this.handle.c(); 34 | } 35 | 36 | @Override 37 | public void resetTask() { 38 | this.handle.d(); 39 | } 40 | 41 | @Override 42 | public void updateTask() { 43 | this.handle.e(); 44 | } 45 | 46 | public abstract EntityAIBase getHandle(); 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIBeg.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIBeg; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIBeg extends CanaryAIBase implements AIBeg { 9 | 10 | public CanaryAIBeg(EntityAIBeg ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIBeg getHandle() { 16 | return (EntityAIBeg) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIBreakDoor.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIBreakDoor; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIBreakDoor extends CanaryAIBase implements AIBreakDoor { 9 | 10 | public CanaryAIBreakDoor(EntityAIBreakDoor ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIBreakDoor getHandle() { 16 | return (EntityAIBreakDoor) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIControlledByPlayer.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIControlledByPlayer; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIControlledByPlayer extends CanaryAIBase implements AIControlledByPlayer { 9 | 10 | public CanaryAIControlledByPlayer(EntityAIControlledByPlayer ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIControlledByPlayer getHandle() { 16 | return (EntityAIControlledByPlayer) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAICreeperSwell.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAICreeperSwell; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAICreeperSwell extends CanaryAIBase implements AICreeperSwell { 9 | 10 | public CanaryAICreeperSwell(EntityAICreeperSwell ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAICreeperSwell getHandle() { 16 | return (EntityAICreeperSwell) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIDefendVillage.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIDefendVillage; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIDefendVillage extends CanaryAIBase implements AIDefendVillage { 9 | 10 | public CanaryAIDefendVillage(EntityAIDefendVillage ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIDefendVillage getHandle() { 16 | return (EntityAIDefendVillage) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIDoorInteract.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIDoorInteract; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIDoorInteract extends CanaryAIBase implements AIDoorInteract { 9 | 10 | public CanaryAIDoorInteract(EntityAIDoorInteract ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIDoorInteract getHandle() { 16 | return (EntityAIDoorInteract) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIEatGrass.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIEatGrass; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIEatGrass extends CanaryAIBase implements AIEatGrass { 9 | 10 | public CanaryAIEatGrass(EntityAIEatGrass ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIEatGrass getHandle() { 16 | return (EntityAIEatGrass) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIFindEntityNearest.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIFindEntityNearest; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIFindEntityNearest extends CanaryAIBase implements AIFindEntityNearest { 9 | 10 | public CanaryAIFindEntityNearest(EntityAIFindEntityNearest ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIFindEntityNearest getHandle() { 16 | return (EntityAIFindEntityNearest) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIFindEntityNearestPlayer.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIFindEntityNearestPlayer; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIFindEntityNearestPlayer extends CanaryAIBase implements AIFindEntityNearestPlayer { 9 | 10 | public CanaryAIFindEntityNearestPlayer(EntityAIFindEntityNearestPlayer ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIFindEntityNearestPlayer getHandle() { 16 | return (EntityAIFindEntityNearestPlayer) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIFleeSun.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIFleeSun; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIFleeSun extends CanaryAIBase implements AIFleeSun { 9 | 10 | public CanaryAIFleeSun(EntityAIFleeSun ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIFleeSun getHandle() { 16 | return (EntityAIFleeSun) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIFollowGolem.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIFollowGolem; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIFollowGolem extends CanaryAIBase implements AIFollowGolem { 9 | 10 | public CanaryAIFollowGolem(EntityAIFollowGolem ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIFollowGolem getHandle() { 16 | return (EntityAIFollowGolem) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIFollowOwner.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIFollowOwner; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIFollowOwner extends CanaryAIBase implements AIFollowOwner { 9 | 10 | public CanaryAIFollowOwner(EntityAIFollowOwner ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIFollowOwner getHandle() { 16 | return (EntityAIFollowOwner) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIFollowParent.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIFollowParent; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIFollowParent extends CanaryAIBase implements AIFollowParent { 9 | 10 | public CanaryAIFollowParent(EntityAIFollowParent ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIFollowParent getHandle() { 16 | return (EntityAIFollowParent) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIHarvestFarmland.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIHarvestFarmland; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIHarvestFarmland extends CanaryAIBase implements AIHarvestFarmland { 9 | 10 | public CanaryAIHarvestFarmland(EntityAIHarvestFarmland ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIHarvestFarmland getHandle() { 16 | return (EntityAIHarvestFarmland) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIHurtByTarget.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIHurtByTarget; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIHurtByTarget extends CanaryAIBase implements AIHurtByTarget { 9 | 10 | public CanaryAIHurtByTarget(EntityAIHurtByTarget ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIHurtByTarget getHandle() { 16 | return (EntityAIHurtByTarget) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAILeapAtTarget.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAILeapAtTarget; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAILeapAtTarget extends CanaryAIBase implements AILeapAtTarget { 9 | 10 | public CanaryAILeapAtTarget(EntityAILeapAtTarget ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAILeapAtTarget getHandle() { 16 | return (EntityAILeapAtTarget) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAILookAtTradePlayer.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAILookAtTradePlayer; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAILookAtTradePlayer extends CanaryAIBase implements AILookAtTradePlayer { 9 | 10 | public CanaryAILookAtTradePlayer(EntityAILookAtTradePlayer ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAILookAtTradePlayer getHandle() { 16 | return (EntityAILookAtTradePlayer) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAILookAtVillager.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAILookAtVillager; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAILookAtVillager extends CanaryAIBase implements AILookAtVillager { 9 | 10 | public CanaryAILookAtVillager(EntityAILookAtVillager ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAILookAtVillager getHandle() { 16 | return (EntityAILookAtVillager) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAILookIdle.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAILookIdle; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAILookIdle extends CanaryAIBase implements AILookIdle { 9 | 10 | public CanaryAILookIdle(EntityAILookIdle ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAILookIdle getHandle() { 16 | return (EntityAILookIdle) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIMate.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIMate; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIMate extends CanaryAIBase implements AIMate { 9 | 10 | public CanaryAIMate(EntityAIMate ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIMate getHandle() { 16 | return (EntityAIMate) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIMoveIndoors.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIMoveIndoors; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIMoveIndoors extends CanaryAIBase implements AIMoveIndoors { 9 | 10 | public CanaryAIMoveIndoors(EntityAIMoveIndoors ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIMoveIndoors getHandle() { 16 | return (EntityAIMoveIndoors) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIMoveThroughVillage.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIMoveThroughVillage; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIMoveThroughVillage extends CanaryAIBase implements AIMoveThroughVillage { 9 | 10 | public CanaryAIMoveThroughVillage(EntityAIMoveThroughVillage ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIMoveThroughVillage getHandle() { 16 | return (EntityAIMoveThroughVillage) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIMoveToBlock.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIMoveToBlock; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIMoveToBlock extends CanaryAIBase implements AIMoveToBlock { 9 | 10 | public CanaryAIMoveToBlock(EntityAIMoveToBlock ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIMoveToBlock getHandle() { 16 | return (EntityAIMoveToBlock) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIMoveTowardsRestriction.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIMoveTowardsRestriction; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIMoveTowardsRestriction extends CanaryAIBase implements AIMoveTowardsRestriction { 9 | 10 | public CanaryAIMoveTowardsRestriction(EntityAIMoveTowardsRestriction ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIMoveTowardsRestriction getHandle() { 16 | return (EntityAIMoveTowardsRestriction) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIMoveTowardsTarget.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIMoveTowardsTarget; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIMoveTowardsTarget extends CanaryAIBase implements AIMoveTowardsTarget { 9 | 10 | public CanaryAIMoveTowardsTarget(EntityAIMoveTowardsTarget ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIMoveTowardsTarget getHandle() { 16 | return (EntityAIMoveTowardsTarget) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAINearestAttackableTarget.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAINearestAttackableTarget; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAINearestAttackableTarget extends CanaryAIBase implements AINearestAttackableTarget { 9 | 10 | public CanaryAINearestAttackableTarget(EntityAINearestAttackableTarget ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAINearestAttackableTarget getHandle() { 16 | return (EntityAINearestAttackableTarget) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIOcelotAttack.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIOcelotAttack; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIOcelotAttack extends CanaryAIBase implements AIOcelotAttack { 9 | 10 | public CanaryAIOcelotAttack(EntityAIOcelotAttack ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIOcelotAttack getHandle() { 16 | return (EntityAIOcelotAttack) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIOcelotSit.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIOcelotSit; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIOcelotSit extends CanaryAIBase implements AIOcelotSit { 9 | 10 | public CanaryAIOcelotSit(EntityAIOcelotSit ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIOcelotSit getHandle() { 16 | return (EntityAIOcelotSit) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIOpenDoor.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIOpenDoor; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIOpenDoor extends CanaryAIBase implements AIOpenDoor { 9 | 10 | public CanaryAIOpenDoor(EntityAIOpenDoor ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIOpenDoor getHandle() { 16 | return (EntityAIOpenDoor) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIOwnerHurtByTarget.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIOwnerHurtByTarget; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIOwnerHurtByTarget extends CanaryAIBase implements AIOwnerHurtByTarget { 9 | 10 | public CanaryAIOwnerHurtByTarget(EntityAIOwnerHurtByTarget ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIOwnerHurtByTarget getHandle() { 16 | return (EntityAIOwnerHurtByTarget) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIOwnerHurtTarget.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIOwnerHurtTarget; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIOwnerHurtTarget extends CanaryAIBase implements AIOwnerHurtTarget { 9 | 10 | public CanaryAIOwnerHurtTarget(EntityAIOwnerHurtTarget ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIOwnerHurtTarget getHandle() { 16 | return (EntityAIOwnerHurtTarget) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIPanic.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIPanic; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIPanic extends CanaryAIBase implements AIPanic { 9 | 10 | public CanaryAIPanic(EntityAIPanic ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIPanic getHandle() { 16 | return (EntityAIPanic) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIPlay.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIPlay; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIPlay extends CanaryAIBase implements AIPlay { 9 | 10 | public CanaryAIPlay(EntityAIPlay ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIPlay getHandle() { 16 | return (EntityAIPlay) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIRestrictOpenDoor.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIRestrictOpenDoor; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIRestrictOpenDoor extends CanaryAIBase implements AIRestrictOpenDoor { 9 | 10 | public CanaryAIRestrictOpenDoor(EntityAIRestrictOpenDoor ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIRestrictOpenDoor getHandle() { 16 | return (EntityAIRestrictOpenDoor) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIRestrictSun.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIRestrictSun; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIRestrictSun extends CanaryAIBase implements AIRestrictSun { 9 | 10 | public CanaryAIRestrictSun(EntityAIRestrictSun ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIRestrictSun getHandle() { 16 | return (EntityAIRestrictSun) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIRunAroundLikeCrazy.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIRunAroundLikeCrazy; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIRunAroundLikeCrazy extends CanaryAIBase implements AIRunAroundLikeCrazy { 9 | 10 | public CanaryAIRunAroundLikeCrazy(EntityAIRunAroundLikeCrazy ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIRunAroundLikeCrazy getHandle() { 16 | return (EntityAIRunAroundLikeCrazy) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAISit.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAISit; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAISit extends CanaryAIBase implements AISit { 9 | 10 | public CanaryAISit(EntityAISit ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAISit getHandle() { 16 | return (EntityAISit) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAISwimming.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAISwimming; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAISwimming extends CanaryAIBase implements AISwimming { 9 | 10 | public CanaryAISwimming(EntityAISwimming ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAISwimming getHandle() { 16 | return (EntityAISwimming) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAITarget.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAITarget; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAITarget extends CanaryAIBase implements AITarget { 9 | 10 | public CanaryAITarget(EntityAITarget ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAITarget getHandle() { 16 | return (EntityAITarget) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAITargetNonTamed.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAITargetNonTamed; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAITargetNonTamed extends CanaryAIBase implements AITargetNonTamed { 9 | 10 | public CanaryAITargetNonTamed(EntityAITargetNonTamed ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAITargetNonTamed getHandle() { 16 | return (EntityAITargetNonTamed) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAITempt.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAITempt; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAITempt extends CanaryAIBase implements AITempt { 9 | 10 | public CanaryAITempt(EntityAITempt ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAITempt getHandle() { 16 | return (EntityAITempt) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAITradePlayer.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAITradePlayer; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAITradePlayer extends CanaryAIBase implements AITradePlayer { 9 | 10 | public CanaryAITradePlayer(EntityAITradePlayer ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAITradePlayer getHandle() { 16 | return (EntityAITradePlayer) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIVillagerInteract.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIVillagerInteract; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIVillagerInteract extends CanaryAIBase implements AIVillagerInteract { 9 | 10 | public CanaryAIVillagerInteract(EntityAIVillagerInteract ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIVillagerInteract getHandle() { 16 | return (EntityAIVillagerInteract) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIVillagerMate.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIVillagerMate; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIVillagerMate extends CanaryAIBase implements AIVillagerMate { 9 | 10 | public CanaryAIVillagerMate(EntityAIVillagerMate ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIVillagerMate getHandle() { 16 | return (EntityAIVillagerMate) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIWander.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIWander; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIWander extends CanaryAIBase implements AIWander { 9 | 10 | public CanaryAIWander(EntityAIWander ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIWander getHandle() { 16 | return (EntityAIWander) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIWatchClosest.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIWatchClosest; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIWatchClosest extends CanaryAIBase implements AIWatchClosest { 9 | 10 | public CanaryAIWatchClosest(EntityAIWatchClosest ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIWatchClosest getHandle() { 16 | return (EntityAIWatchClosest) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/ai/CanaryAIWatchClosest2.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.ai; 2 | 3 | import net.minecraft.entity.ai.EntityAIWatchClosest2; 4 | 5 | /** 6 | * @author Aaron 7 | */ 8 | public class CanaryAIWatchClosest2 extends CanaryAIBase implements AIWatchClosest2 { 9 | 10 | public CanaryAIWatchClosest2(EntityAIWatchClosest2 ai) { 11 | super(ai); 12 | 13 | } 14 | 15 | public EntityAIWatchClosest2 getHandle() { 16 | return (EntityAIWatchClosest2) handle; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/attributes/CanaryAttribute.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.attributes; 2 | 3 | import net.minecraft.entity.ai.attributes.BaseAttribute; 4 | 5 | /** 6 | * @author Jason (darkdiplomat) 7 | */ 8 | public class CanaryAttribute implements Attribute { 9 | private final BaseAttribute attribute; 10 | 11 | public CanaryAttribute(BaseAttribute attribute) { 12 | this.attribute = attribute; 13 | } 14 | 15 | @Override 16 | public String getInternalName() { 17 | return getNative().a(); 18 | } 19 | 20 | @Override 21 | public double getDefaultValue() { 22 | return getNative().b(); 23 | } 24 | 25 | @Override 26 | public boolean shouldWatch() { 27 | return getNative().c(); 28 | } 29 | 30 | @Override 31 | public Attribute setShouldWatch(boolean watch) { 32 | getNative().a(watch); 33 | return this; 34 | } 35 | 36 | public BaseAttribute getNative() { 37 | return attribute; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/attributes/CanaryModifiedAttribute.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.attributes; 2 | 3 | import net.minecraft.entity.ai.attributes.ModifiableAttributeInstance; 4 | 5 | import java.util.UUID; 6 | 7 | /** 8 | * @author Jason (darkdiplomat) 9 | */ 10 | public class CanaryModifiedAttribute implements ModifiedAttribute { 11 | private final ModifiableAttributeInstance modAttribute; 12 | 13 | public CanaryModifiedAttribute(ModifiableAttributeInstance modAttribute) { 14 | this.modAttribute = modAttribute; 15 | } 16 | 17 | @Override 18 | public Attribute getAttribute() { 19 | return getNative().a().getWrapper(); 20 | } 21 | 22 | @Override 23 | public double getBaseValue() { 24 | return 0; 25 | } 26 | 27 | @Override 28 | public void setBaseValue(double v) { 29 | 30 | } 31 | 32 | @Override 33 | public AttributeModifier getModifier(UUID uuid) { 34 | return getNative().a(uuid).getWrapper(); 35 | } 36 | 37 | @Override 38 | public void apply(AttributeModifier attributeModifier) { 39 | getNative().a(((CanaryAttributeModifier) attributeModifier).getNative()); 40 | } 41 | 42 | @Override 43 | public void remove(AttributeModifier attributeModifier) { 44 | 45 | } 46 | 47 | @Override 48 | public double getValue() { 49 | return 0; 50 | } 51 | 52 | public ModifiableAttributeInstance getNative() { 53 | return modAttribute; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/attributes/CanaryRangedAttribute.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.attributes; 2 | 3 | /** 4 | * @author Jason (darkdiplomat) 5 | */ 6 | public class CanaryRangedAttribute extends CanaryAttribute implements RangedAttribute { 7 | 8 | public CanaryRangedAttribute(net.minecraft.entity.ai.attributes.RangedAttribute rangedAttribute) { 9 | super(rangedAttribute); 10 | } 11 | 12 | @Override 13 | public RangedAttribute setDescription(String description) { 14 | return (RangedAttribute)getNative().a(description).getWrapper(); 15 | } 16 | 17 | @Override 18 | public String getDescription() { 19 | return getNative().g(); 20 | } 21 | 22 | @Override 23 | public double setValue(double value) { 24 | return getNative().a(value); 25 | } 26 | 27 | @Override 28 | public double getMaxValue() { 29 | return getNative().getMaxValue(); 30 | } 31 | 32 | @Override 33 | public double getMinValue() { 34 | return getNative().getMinValue(); 35 | } 36 | 37 | public net.minecraft.entity.ai.attributes.RangedAttribute getNative() { 38 | return (net.minecraft.entity.ai.attributes.RangedAttribute)super.getNative(); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/chat/CanaryChatFormatting.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.chat; 2 | 3 | import net.minecraft.util.EnumChatFormatting; 4 | 5 | /** 6 | * Wrapper implementation for EnumChatFormatting 7 | * 8 | * @author Jason (darkdiplomat) 9 | */ 10 | public final class CanaryChatFormatting implements ChatFormatting { 11 | private EnumChatFormatting nmsFormat; 12 | 13 | public CanaryChatFormatting(EnumChatFormatting nmsFormat) { 14 | this.nmsFormat = nmsFormat; 15 | } 16 | 17 | /** 18 | * {@inheritDoc} 19 | */ 20 | @Override 21 | public char getFormattingCode() { 22 | return getNative().z; 23 | } 24 | 25 | /** 26 | * {@inheritDoc} 27 | */ 28 | @Override 29 | public boolean isFormat() { 30 | return getNative().c(); 31 | } 32 | 33 | /** 34 | * {@inheritDoc} 35 | */ 36 | @Override 37 | public boolean isColor() { 38 | return getNative().d(); 39 | } 40 | 41 | /** 42 | * {@inheritDoc} 43 | */ 44 | @Override 45 | public String getName() { 46 | return getNative().e(); 47 | } 48 | 49 | /** 50 | * {@inheritDoc} 51 | */ 52 | @Override 53 | public String toString() { 54 | return getNative().toString(); 55 | } 56 | 57 | public EnumChatFormatting getNative() { 58 | return nmsFormat; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/chat/CanaryClickEvent.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.chat; 2 | 3 | /** 4 | * Wrapper implementation for Minecraft native ClickEvent 5 | * 6 | * @author Jason (darkdiplomat) 7 | */ 8 | public class CanaryClickEvent implements ClickEvent { 9 | private final net.minecraft.event.ClickEvent nmsClickEvent; 10 | 11 | public CanaryClickEvent(net.minecraft.event.ClickEvent nmsClickEvent) { 12 | this.nmsClickEvent = nmsClickEvent; 13 | } 14 | 15 | /** 16 | * {@inheritDoc} 17 | */ 18 | @Override 19 | public ClickEventAction getAction() { 20 | return getNative().a().getWrapper(); 21 | } 22 | 23 | /** 24 | * {@inheritDoc} 25 | */ 26 | @Override 27 | public String getValue() { 28 | return getNative().b(); 29 | } 30 | 31 | public final net.minecraft.event.ClickEvent getNative() { 32 | return nmsClickEvent; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/chat/CanaryClickEventAction.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.chat; 2 | 3 | import net.minecraft.event.ClickEvent; 4 | 5 | /** 6 | * Wrapper implementation for Minecraft native ClickEvent.Action 7 | * 8 | * @author Jason (darkdiplomat) 9 | */ 10 | public final class CanaryClickEventAction implements ClickEventAction { 11 | private final ClickEvent.Action nmsCEA; 12 | 13 | public CanaryClickEventAction(ClickEvent.Action nmsCEA) { 14 | this.nmsCEA = nmsCEA; 15 | } 16 | 17 | /** 18 | * {@inheritDoc} 19 | */ 20 | @Override 21 | public boolean allowedInChat() { 22 | return getNative().a(); 23 | } 24 | 25 | /** 26 | * {@inheritDoc} 27 | */ 28 | @Override 29 | public String getName() { 30 | return getNative().b(); 31 | } 32 | 33 | public final ClickEvent.Action getNative() { 34 | return nmsCEA; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/chat/CanaryHoverEvent.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.chat; 2 | 3 | /** 4 | * Wrapper implementation for Minecraft native HoverEvent 5 | * 6 | * @author Jason (darkdiplomat) 7 | */ 8 | public class CanaryHoverEvent implements HoverEvent { 9 | private final net.minecraft.event.HoverEvent nmsHoverEvent; 10 | 11 | public CanaryHoverEvent(net.minecraft.event.HoverEvent nmsHoverEvent) { 12 | this.nmsHoverEvent = nmsHoverEvent; 13 | } 14 | 15 | /** 16 | * {@inheritDoc} 17 | */ 18 | @Override 19 | public HoverEventAction getAction() { 20 | return getNative().a().getWrapper(); 21 | } 22 | 23 | /** 24 | * {@inheritDoc} 25 | */ 26 | @Override 27 | public ChatComponent getValue() { 28 | return getNative().b().getWrapper(); 29 | } 30 | 31 | public final net.minecraft.event.HoverEvent getNative() { 32 | return nmsHoverEvent; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/chat/CanaryHoverEventAction.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.chat; 2 | 3 | import net.minecraft.event.HoverEvent; 4 | 5 | /** 6 | * Wrapper implementation for Minecraft native HoverEvent.Action 7 | * 8 | * @author Jason (darkdiplomat) 9 | */ 10 | public final class CanaryHoverEventAction implements HoverEventAction { 11 | private final HoverEvent.Action nmsHEA; 12 | 13 | public CanaryHoverEventAction(HoverEvent.Action nmsHEA) { 14 | this.nmsHEA = nmsHEA; 15 | } 16 | 17 | /** 18 | * {@inheritDoc} 19 | */ 20 | @Override 21 | public boolean allowedInChat() { 22 | return getNative().a(); 23 | } 24 | 25 | /** 26 | * {@inheritDoc} 27 | */ 28 | @Override 29 | public String getName() { 30 | return getNative().b(); 31 | } 32 | 33 | public final HoverEvent.Action getNative() { 34 | return nmsHEA; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/CanaryProjectile.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity; 2 | 3 | import net.minecraft.entity.IProjectile; 4 | 5 | /** 6 | * Projectile wrapper implementation 7 | * 8 | * @author Jason (darkdiplomat) 9 | */ 10 | public abstract class CanaryProjectile extends CanaryEntity implements Projectile { 11 | 12 | public CanaryProjectile(IProjectile projectile) { 13 | super((net.minecraft.entity.Entity) projectile); 14 | } 15 | 16 | /** 17 | * {@inheritDoc} 18 | */ 19 | @Override 20 | public void setProjectileHeading(double motionX, double motionY, double motionZ, float rotationYaw, float rotationPitch) { 21 | ((IProjectile) getHandle()).c(motionX, motionY, motionZ, rotationYaw, rotationPitch); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/CanarySmallFireball.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity; 2 | 3 | import net.minecraft.entity.projectile.EntitySmallFireball; 4 | 5 | /** 6 | * SmallFireball wrapper implementation 7 | * 8 | * @author Jason (darkdiplomat) 9 | */ 10 | public class CanarySmallFireball extends CanaryFireball implements SmallFireball { 11 | 12 | /** 13 | * Constructs a new wrapper for EntitySmallFireball 14 | * 15 | * @param entity 16 | * the EntitySmallFireball to wrap 17 | */ 18 | public CanarySmallFireball(EntitySmallFireball entity) { 19 | super(entity); 20 | } 21 | 22 | /** 23 | * {@inheritDoc} 24 | */ 25 | @Override 26 | public EntityType getEntityType() { 27 | return EntityType.SMALLFIREBALL; 28 | } 29 | 30 | @Override 31 | public String getFqName() { 32 | return "SmallFireball"; 33 | } 34 | 35 | /** 36 | * {@inheritDoc} 37 | */ 38 | @Override 39 | public EntitySmallFireball getHandle() { 40 | return (EntitySmallFireball) entity; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/effect/CanaryWeatherEffect.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.effect; 2 | 3 | import net.canarymod.api.entity.CanaryEntity; 4 | import net.minecraft.entity.effect.EntityWeatherEffect; 5 | 6 | /** 7 | * @author Jason (darkdiplomat) 8 | */ 9 | public abstract class CanaryWeatherEffect extends CanaryEntity implements WeatherEffect { 10 | 11 | public CanaryWeatherEffect(EntityWeatherEffect entity) { 12 | super(entity); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/hanging/CanaryLeashKnot.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.hanging; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.minecraft.entity.EntityLeashKnot; 5 | 6 | import static net.canarymod.api.entity.EntityType.LEASHKNOT; 7 | 8 | /** 9 | * LeashKnot wrapper implementation 10 | * 11 | * @author Jason (darkdiplomat) 12 | */ 13 | public class CanaryLeashKnot extends CanaryHangingEntity implements LeashKnot { 14 | 15 | public CanaryLeashKnot(EntityLeashKnot entity) { 16 | super(entity); 17 | } 18 | 19 | /** 20 | * {@inheritDoc} 21 | */ 22 | @Override 23 | public EntityType getEntityType() { 24 | return LEASHKNOT; 25 | } 26 | 27 | @Override 28 | public String getFqName() { 29 | return "LeashKnot"; 30 | } 31 | 32 | /** 33 | * {@inheritDoc} 34 | */ 35 | @Override 36 | public EntityLeashKnot getHandle() { 37 | return (EntityLeashKnot) entity; 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/living/CanarySnowman.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.living; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.minecraft.entity.monster.EntitySnowman; 5 | 6 | /** 7 | * Snowman wrapper implementation 8 | * 9 | * @author Jason (darkdiplomat) 10 | */ 11 | public class CanarySnowman extends CanaryEntityLiving implements Snowman { 12 | 13 | /** 14 | * Constructs a new wrapper for EntitySnowman 15 | * 16 | * @param entity 17 | * the EntitySnowman to be wrapped 18 | */ 19 | public CanarySnowman(EntitySnowman entity) { 20 | super(entity); 21 | } 22 | 23 | @Override 24 | public boolean isGolem() { 25 | return true; 26 | } 27 | 28 | /** 29 | * {@inheritDoc} 30 | */ 31 | @Override 32 | public EntityType getEntityType() { 33 | return EntityType.SNOWMAN; 34 | } 35 | 36 | @Override 37 | public String getFqName() { 38 | return "Snowman"; 39 | } 40 | 41 | /** 42 | * {@inheritDoc} 43 | */ 44 | @Override 45 | public EntitySnowman getHandle() { 46 | return (EntitySnowman) entity; 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/living/animal/CanaryAgeableAnimal.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.living.animal; 2 | 3 | import net.canarymod.api.entity.living.Ageable; 4 | 5 | /** 6 | * Covers the age methods 7 | * 8 | * @author Jason (darkdiplomat) 9 | */ 10 | public abstract class CanaryAgeableAnimal extends CanaryAnimal implements Ageable { 11 | 12 | public CanaryAgeableAnimal(net.minecraft.entity.passive.EntityAnimal entity) { 13 | super(entity); 14 | } 15 | 16 | /** 17 | * {@inheritDoc} 18 | */ 19 | @Override 20 | public int getGrowingAge() { 21 | return getHandle().l(); 22 | } 23 | 24 | /** 25 | * {@inheritDoc} 26 | */ 27 | @Override 28 | public void setGrowingAge(int age) { 29 | getHandle().b(age); 30 | } 31 | 32 | @Override 33 | public net.minecraft.entity.passive.EntityAnimal getHandle() { 34 | return (net.minecraft.entity.passive.EntityAnimal) entity; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/living/animal/CanaryAnimal.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.living.animal; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.canarymod.api.entity.living.CanaryEntityLiving; 5 | import net.canarymod.api.inventory.CanaryItem; 6 | import net.canarymod.api.inventory.Item; 7 | 8 | /** 9 | * Animal wrapper implementation 10 | * 11 | * @author Jason (darkdiplomat) 12 | */ 13 | public abstract class CanaryAnimal extends CanaryEntityLiving implements EntityAnimal { 14 | 15 | public CanaryAnimal(net.minecraft.entity.passive.EntityAnimal entity) { 16 | super(entity); 17 | } 18 | 19 | // For them squids ... 20 | public CanaryAnimal(net.minecraft.entity.passive.EntitySquid entity) { 21 | super(entity); 22 | } 23 | 24 | // For them Bats... 25 | public CanaryAnimal(net.minecraft.entity.passive.EntityAmbientCreature entity) { 26 | super(entity); 27 | } 28 | 29 | @Override 30 | public boolean isAnimal() { 31 | return true; 32 | } 33 | 34 | /** 35 | * {@inheritDoc} 36 | */ 37 | @Override 38 | public boolean isBreedingItem(Item item) { 39 | if (this.getEntityType() == EntityType.BAT || this.getEntityType() == EntityType.SQUID || item == null) { 40 | return false; 41 | } 42 | return getAnimalHandle().d(((CanaryItem) item).getHandle()); 43 | } 44 | 45 | private net.minecraft.entity.passive.EntityAnimal getAnimalHandle() { 46 | return (net.minecraft.entity.passive.EntityAnimal) entity; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/living/animal/CanaryBat.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.living.animal; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.canarymod.api.entity.living.AmbientCreature; 5 | import net.minecraft.entity.passive.EntityBat; 6 | 7 | import static net.canarymod.api.entity.EntityType.BAT; 8 | 9 | /** 10 | * Bat wrapper implementation 11 | * 12 | * @author Jason (darkdiplomat) 13 | */ 14 | public class CanaryBat extends CanaryAnimal implements Bat, AmbientCreature { 15 | 16 | /** 17 | * Constructs a new wrapper for EntityBat 18 | * 19 | * @param entity 20 | * the EntityBat to be wrapped 21 | */ 22 | public CanaryBat(EntityBat entity) { 23 | super(entity); 24 | } 25 | 26 | /** 27 | * {@inheritDoc} 28 | */ 29 | @Override 30 | public EntityType getEntityType() { 31 | return BAT; 32 | } 33 | 34 | @Override 35 | public String getFqName() { 36 | return "Bat"; 37 | } 38 | 39 | /** 40 | * {@inheritDoc} 41 | */ 42 | @Override 43 | public boolean isHanging() { 44 | return getHandle().cb(); 45 | } 46 | 47 | /** 48 | * {@inheritDoc} 49 | */ 50 | @Override 51 | public void setHanging(boolean hanging) { 52 | getHandle().a(hanging); 53 | } 54 | 55 | /** 56 | * {@inheritDoc} 57 | */ 58 | @Override 59 | public EntityBat getHandle() { 60 | return (EntityBat) entity; 61 | } 62 | 63 | /** 64 | * {@inheritDoc} 65 | */ 66 | @Override 67 | public boolean isAmbient() { 68 | return true; 69 | } 70 | 71 | } 72 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/living/animal/CanaryChicken.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.living.animal; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.minecraft.entity.passive.EntityChicken; 5 | 6 | import static net.canarymod.api.entity.EntityType.CHICKEN; 7 | 8 | /** 9 | * Chicken wrapper implementation 10 | * 11 | * @author Chris (damagefilter) 12 | * @author Jason (darkdiplomat) 13 | */ 14 | public class CanaryChicken extends CanaryAgeableAnimal implements Chicken { 15 | 16 | /** 17 | * Constructs a new wrapper for EntityChicken 18 | * 19 | * @param entity 20 | * the EntityChicken to be wrapped 21 | */ 22 | public CanaryChicken(EntityChicken entity) { 23 | super(entity); 24 | } 25 | 26 | /** 27 | * {@inheritDoc} 28 | */ 29 | @Override 30 | public EntityType getEntityType() { 31 | return CHICKEN; 32 | } 33 | 34 | @Override 35 | public String getFqName() { 36 | return "Chicken"; 37 | } 38 | 39 | public int getTimeUntilNextEgg() { 40 | return getHandle().bq; 41 | } 42 | 43 | /** 44 | * {@inheritDoc} 45 | */ 46 | @Override 47 | public void setTimeUntilNextEgg(int timeTicks) { 48 | getHandle().bq = timeTicks; 49 | } 50 | 51 | /** 52 | * {@inheritDoc} 53 | */ 54 | @Override 55 | public EntityChicken getHandle() { 56 | return (EntityChicken) entity; 57 | } 58 | 59 | } 60 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/living/animal/CanaryCow.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.living.animal; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.minecraft.entity.passive.EntityCow; 5 | 6 | import static net.canarymod.api.entity.EntityType.COW; 7 | 8 | /** 9 | * Cow wrapper implementation 10 | * 11 | * @author Chris (damagefilter) 12 | * @author Jason (darkdiplomat) 13 | */ 14 | public class CanaryCow extends CanaryAgeableAnimal implements Cow { 15 | 16 | /** 17 | * Constructs a new wrapper for EntityCow 18 | * 19 | * @param entity 20 | * the EntityCow to wrap 21 | */ 22 | public CanaryCow(EntityCow entity) { 23 | super(entity); 24 | } 25 | 26 | /** 27 | * {@inheritDoc} 28 | */ 29 | @Override 30 | public EntityType getEntityType() { 31 | return COW; 32 | } 33 | 34 | /** 35 | * {@inheritDoc} 36 | */ 37 | @Override 38 | public String getFqName() { 39 | return "Cow"; 40 | } 41 | 42 | /** 43 | * {@inheritDoc} 44 | */ 45 | @Override 46 | public EntityCow getHandle() { 47 | return (EntityCow) entity; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/living/animal/CanaryMooshroom.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.living.animal; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.minecraft.entity.passive.EntityMooshroom; 5 | 6 | import static net.canarymod.api.entity.EntityType.MOOSHROOM; 7 | 8 | /** 9 | * MooshroomCow wrapper implementation 10 | * 11 | * @author Jason (darkdiplomat) 12 | */ 13 | public class CanaryMooshroom extends CanaryCow implements Mooshroom { 14 | 15 | /** 16 | * Constructs a new wrapper for EntityMooshroom 17 | * 18 | * @param entity 19 | * the EntityMooshroom to wrap 20 | */ 21 | public CanaryMooshroom(EntityMooshroom entity) { 22 | super(entity); 23 | } 24 | 25 | /** 26 | * {@inheritDoc} 27 | */ 28 | @Override 29 | public EntityType getEntityType() { 30 | return MOOSHROOM; 31 | } 32 | 33 | @Override 34 | public String getFqName() { 35 | return "Mooshroom"; 36 | } 37 | 38 | /** 39 | * {@inheritDoc} 40 | */ 41 | @Override 42 | public EntityMooshroom getHandle() { 43 | return (EntityMooshroom) entity; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/living/animal/CanaryOcelot.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.living.animal; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.minecraft.entity.passive.EntityOcelot; 5 | 6 | /** 7 | * Ocelot wrapper implementation 8 | * 9 | * @author Jason (darkdiplomat) 10 | */ 11 | public class CanaryOcelot extends CanaryTameable implements Ocelot { 12 | 13 | /** 14 | * Constructs a new wrapper for EntityOcelot 15 | * 16 | * @param entity the EntityOcelot to wrap 17 | */ 18 | public CanaryOcelot(EntityOcelot entity) { 19 | super(entity); 20 | } 21 | 22 | /** 23 | * {@inheritDoc} 24 | */ 25 | @Override 26 | public EntityType getEntityType() { 27 | return EntityType.OCELOT; 28 | } 29 | 30 | @Override 31 | public String getFqName() { 32 | return "Ocelot"; 33 | } 34 | 35 | /** 36 | * {@inheritDoc} 37 | */ 38 | @Override 39 | public SkinType getSkinType() { 40 | return SkinType.values()[getHandle().cr()]; 41 | } 42 | 43 | /** 44 | * {@inheritDoc} 45 | */ 46 | @Override 47 | public void setSkinType(SkinType type) { 48 | getHandle().r(type.ordinal()); 49 | } 50 | 51 | /** 52 | * {@inheritDoc} 53 | */ 54 | @Override 55 | public EntityOcelot getHandle() { 56 | return (EntityOcelot) entity; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/living/animal/CanaryPig.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.living.animal; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.canarymod.api.entity.vehicle.CanaryAnimalVehicle; 5 | import net.minecraft.entity.passive.EntityPig; 6 | 7 | import static net.canarymod.api.entity.EntityType.PIG; 8 | 9 | /** 10 | * Pig wrapper implementation 11 | * 12 | * @author Jason (darkdiplomat) 13 | */ 14 | public class CanaryPig extends CanaryAnimalVehicle implements Pig { 15 | 16 | /** 17 | * Constructs a new wrapper for EntityPig 18 | * 19 | * @param entity the EntityPig to wrap 20 | */ 21 | public CanaryPig(EntityPig entity) { 22 | super(entity); 23 | } 24 | 25 | /** 26 | * {@inheritDoc} 27 | */ 28 | @Override 29 | public EntityType getEntityType() { 30 | return PIG; 31 | } 32 | 33 | @Override 34 | public String getFqName() { 35 | return "Pig"; 36 | } 37 | 38 | /** 39 | * {@inheritDoc} 40 | */ 41 | @Override 42 | public boolean isSaddled() { 43 | return getHandle().cj(); 44 | } 45 | 46 | /** 47 | * {@inheritDoc} 48 | */ 49 | @Override 50 | public void setSaddled(boolean saddled) { 51 | getHandle().l(saddled); 52 | } 53 | 54 | /** 55 | * {@inheritDoc} 56 | */ 57 | @Override 58 | public int getGrowingAge() { 59 | return getHandle().l(); 60 | } 61 | 62 | /** 63 | * {@inheritDoc} 64 | */ 65 | @Override 66 | public void setGrowingAge(int age) { 67 | getHandle().b(age); 68 | } 69 | 70 | /** 71 | * {@inheritDoc} 72 | */ 73 | @Override 74 | public EntityPig getHandle() { 75 | return (EntityPig) entity; 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/living/animal/CanaryRabbit.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.living.animal; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.minecraft.entity.passive.EntityRabbit; 5 | 6 | /** 7 | * EntityRabbit wrapper implementation 8 | * 9 | * @author Jason Jones (darkdiplomat) 10 | */ 11 | public class CanaryRabbit extends CanaryAnimal implements Rabbit { 12 | 13 | public CanaryRabbit(EntityRabbit rabbit) { 14 | super(rabbit); 15 | } 16 | 17 | @Override 18 | public String getFqName() { 19 | return "Rabbit"; 20 | } 21 | 22 | @Override 23 | public EntityType getEntityType() { 24 | return EntityType.RABBIT; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/living/animal/CanarySquid.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.living.animal; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.minecraft.entity.passive.EntitySquid; 5 | 6 | import static net.canarymod.api.entity.EntityType.SQUID; 7 | 8 | /** 9 | * Squid wrapper implementation 10 | * 11 | * @author Jason (darkdiplomat) 12 | */ 13 | public class CanarySquid extends CanaryAnimal implements Squid { 14 | 15 | /** 16 | * Constructs a new wrapper for EntitySquid 17 | * 18 | * @param entity 19 | * the EntitySquid to wrap 20 | */ 21 | public CanarySquid(EntitySquid entity) { 22 | super(entity); 23 | } 24 | 25 | /** 26 | * {@inheritDoc} 27 | */ 28 | @Override 29 | public EntityType getEntityType() { 30 | return SQUID; 31 | } 32 | 33 | @Override 34 | public String getFqName() { 35 | return "Squid"; 36 | } 37 | 38 | /** 39 | * {@inheritDoc} 40 | */ 41 | @Override 42 | public EntitySquid getHandle() { 43 | return (EntitySquid) entity; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/living/humanoid/npchelpers/EntityNPCJumpHelper.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.living.humanoid.npchelpers; 2 | 3 | import net.canarymod.api.entity.living.humanoid.EntityNonPlayableCharacter; 4 | 5 | public class EntityNPCJumpHelper { 6 | 7 | private EntityNonPlayableCharacter b; 8 | private boolean a; 9 | 10 | public EntityNPCJumpHelper(EntityNonPlayableCharacter enpc) { 11 | this.b = enpc; 12 | } 13 | 14 | public void a() { 15 | this.a = true; 16 | } 17 | 18 | public void b() { 19 | this.b.i(this.a); 20 | this.a = false; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/living/monster/CanaryBlaze.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.living.monster; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.minecraft.entity.monster.EntityBlaze; 5 | 6 | /** 7 | * Blaze wrapper implementation 8 | * 9 | * @author Jason (darkdiplomat) 10 | */ 11 | public class CanaryBlaze extends CanaryEntityMob implements Blaze { 12 | 13 | /** 14 | * Constructs a new wrapper for EntityBlaze 15 | * 16 | * @param entity 17 | * the EntityBlaze to wrap 18 | */ 19 | public CanaryBlaze(EntityBlaze entity) { 20 | super(entity); 21 | } 22 | 23 | /** 24 | * {@inheritDoc} 25 | */ 26 | @Override 27 | public EntityType getEntityType() { 28 | return EntityType.BLAZE; 29 | } 30 | 31 | @Override 32 | public String getFqName() { 33 | return "Blaze"; 34 | } 35 | 36 | /** 37 | * {@inheritDoc} 38 | */ 39 | @Override 40 | public boolean isBurning() { 41 | return getHandle().n(); 42 | } 43 | 44 | /** 45 | * {@inheritDoc} 46 | */ 47 | @Override 48 | public void setBurning(boolean isBurning) { 49 | getHandle().a(isBurning); 50 | } 51 | 52 | /** 53 | * {@inheritDoc} 54 | */ 55 | @Override 56 | public EntityBlaze getHandle() { 57 | return (EntityBlaze) entity; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/living/monster/CanaryCaveSpider.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.living.monster; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.minecraft.entity.monster.EntityCaveSpider; 5 | 6 | /** 7 | * Cave Spider wrapper 8 | * 9 | * @author Chris (damagefilter) 10 | * @author Jason (darkdiplomat) 11 | */ 12 | public class CanaryCaveSpider extends CanarySpider { 13 | 14 | /** 15 | * Constructs a new wrapper for EntityCaveSpider 16 | * 17 | * @param entity 18 | * the EntityCaveSpider to wrap 19 | */ 20 | public CanaryCaveSpider(EntityCaveSpider entity) { 21 | super(entity); 22 | } 23 | 24 | /** 25 | * {@inheritDoc} 26 | */ 27 | @Override 28 | public EntityType getEntityType() { 29 | return EntityType.CAVESPIDER; 30 | } 31 | 32 | @Override 33 | public String getFqName() { 34 | return "CaveSpider"; 35 | } 36 | 37 | /** 38 | * {@inheritDoc} 39 | */ 40 | @Override 41 | public EntityCaveSpider getHandle() { 42 | return (EntityCaveSpider) entity; 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/living/monster/CanaryEnderDragon.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.living.monster; 2 | 3 | import net.canarymod.api.entity.EnderCrystal; 4 | import net.canarymod.api.entity.EntityType; 5 | import net.canarymod.api.entity.living.CanaryEntityLiving; 6 | import net.minecraft.entity.boss.EntityDragon; 7 | 8 | /** 9 | * Dragon wrapper implementation 10 | * 11 | * @author Jason (darkdiplomat) 12 | */ 13 | public class CanaryEnderDragon extends CanaryEntityLiving implements EnderDragon { 14 | 15 | /** 16 | * Constructs a new wrapper for EntityDragon 17 | * 18 | * @param entity 19 | * the EntityDragon to wrap 20 | */ 21 | public CanaryEnderDragon(EntityDragon entity) { 22 | super(entity); 23 | } 24 | 25 | /** 26 | * {@inheritDoc} 27 | */ 28 | @Override 29 | public EntityType getEntityType() { 30 | return EntityType.ENDERDRAGON; 31 | } 32 | 33 | @Override 34 | public String getFqName() { 35 | return "EnderDragon"; 36 | } 37 | 38 | /** 39 | * {@inheritDoc} 40 | */ 41 | @Override 42 | public boolean isSlowed() { 43 | return getHandle().bv; 44 | } 45 | 46 | /** 47 | * {@inheritDoc} 48 | */ 49 | @Override 50 | public EnderCrystal getHealingCrystal() { 51 | return getHandle().bx != null ? (EnderCrystal) getHandle().bx.getCanaryEntity() : null; 52 | } 53 | 54 | /** 55 | * {@inheritDoc} 56 | */ 57 | @Override 58 | public EntityDragon getHandle() { 59 | return (EntityDragon) entity; 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/living/monster/CanaryEndermite.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.living.monster; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.minecraft.entity.monster.EntityEndermite; 5 | 6 | /** 7 | * EntityEndermite wrapper implementation 8 | * 9 | * @author Jason Jones (darkdiplomat) 10 | */ 11 | public class CanaryEndermite extends CanaryEntityMob implements Endermite { 12 | 13 | public CanaryEndermite(EntityEndermite entity) { 14 | super(entity); 15 | } 16 | 17 | @Override 18 | public boolean isPlayerSpanwed() { 19 | return getHandle().n(); 20 | } 21 | 22 | @Override 23 | public String getFqName() { 24 | return "Endermite"; 25 | } 26 | 27 | @Override 28 | public EntityType getEntityType() { 29 | return EntityType.ENDERMITE; 30 | } 31 | 32 | public EntityEndermite getHandle() { 33 | return (EntityEndermite)super.getHandle(); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/living/monster/CanaryEntityMob.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.living.monster; 2 | 3 | import net.canarymod.api.entity.living.CanaryEntityLiving; 4 | import net.minecraft.entity.EntityFlying; 5 | import net.minecraft.entity.monster.EntitySlime; 6 | 7 | /** 8 | * EntityMob wrapper implementation 9 | * 10 | * @author Jason (darkdiplomat) 11 | */ 12 | public abstract class CanaryEntityMob extends CanaryEntityLiving implements EntityMob { 13 | 14 | public CanaryEntityMob(net.minecraft.entity.monster.EntityMob entity) { 15 | super(entity); 16 | } 17 | 18 | public CanaryEntityMob(EntitySlime entity) { 19 | super(entity); 20 | } 21 | 22 | public CanaryEntityMob(EntityFlying entity) { 23 | super(entity); 24 | } 25 | 26 | @Override 27 | public boolean isMob() { 28 | return true; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/living/monster/CanaryGiantZombie.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.living.monster; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.minecraft.entity.monster.EntityGiantZombie; 5 | 6 | /** 7 | * GiantZombie wrapper implementation 8 | * 9 | * @author Jason (darkdiplomat) 10 | */ 11 | public class CanaryGiantZombie extends CanaryEntityMob implements GiantZombie { 12 | 13 | /** 14 | * Constructs a new wrapper for EntityGiantZombie 15 | * 16 | * @param entity 17 | * the EntityGiantZombie to wrap 18 | */ 19 | public CanaryGiantZombie(EntityGiantZombie entity) { 20 | super(entity); 21 | } 22 | 23 | /** 24 | * {@inheritDoc} 25 | */ 26 | @Override 27 | public EntityType getEntityType() { 28 | return EntityType.GIANTZOMBIE; 29 | } 30 | 31 | @Override 32 | public String getFqName() { 33 | return "GiantZombie"; 34 | } 35 | 36 | /** 37 | * {@inheritDoc} 38 | */ 39 | @Override 40 | public EntityGiantZombie getHandle() { 41 | return (EntityGiantZombie) entity; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/living/monster/CanaryGuardian.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.living.monster; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.minecraft.entity.monster.EntityGuardian; 5 | 6 | /** 7 | * EntityGuardian wrapper implementation 8 | * 9 | * @author Jason Jones (darkdiplomat) 10 | */ 11 | public class CanaryGuardian extends CanaryEntityMob implements Guardian { 12 | 13 | public CanaryGuardian(EntityGuardian guardian) { 14 | super(guardian); 15 | } 16 | 17 | @Override 18 | public String getFqName() { 19 | return "Guardian"; 20 | } 21 | 22 | @Override 23 | public EntityType getEntityType() { 24 | return EntityType.GUARDIAN; 25 | } 26 | 27 | @Override 28 | public boolean isElder() { 29 | return getHandle().cl(); 30 | } 31 | 32 | public EntityGuardian getHandle() { 33 | return (EntityGuardian)super.getHandle(); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/living/monster/CanaryMagmaCube.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.living.monster; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.minecraft.entity.monster.EntityMagmaCube; 5 | 6 | /** 7 | * LavaSlime wrapper implementation 8 | * 9 | * @author Jason (darkdiplomat) 10 | */ 11 | public class CanaryMagmaCube extends CanarySlime implements MagmaCube { 12 | 13 | /** 14 | * Constructs a new wrapper for EntityMagmaCube 15 | * 16 | * @param entity 17 | * the EntityMagmaCube to wrap 18 | */ 19 | public CanaryMagmaCube(EntityMagmaCube entity) { 20 | super(entity); 21 | } 22 | 23 | /** 24 | * {@inheritDoc} 25 | */ 26 | @Override 27 | public EntityType getEntityType() { 28 | return EntityType.MAGMACUBE; 29 | } 30 | 31 | @Override 32 | public String getFqName() { 33 | return "MagmaCube"; 34 | } 35 | 36 | /** 37 | * {@inheritDoc} 38 | */ 39 | @Override 40 | public EntityMagmaCube getHandle() { 41 | return (EntityMagmaCube) entity; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/living/monster/CanarySilverfish.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.living.monster; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.minecraft.entity.monster.EntitySilverfish; 5 | 6 | /** 7 | * Silverfish wrapper implementation 8 | * 9 | * @author Jason (darkdiplomat) 10 | */ 11 | public class CanarySilverfish extends CanaryEntityMob implements Silverfish { 12 | 13 | /** 14 | * Constructs a new wrapper for EntitySilverfish 15 | * 16 | * @param entity 17 | * the EntitySilverfish to wrap 18 | */ 19 | public CanarySilverfish(EntitySilverfish entity) { 20 | super(entity); 21 | } 22 | 23 | /** 24 | * {@inheritDoc} 25 | */ 26 | @Override 27 | public EntityType getEntityType() { 28 | return EntityType.SILVERFISH; 29 | } 30 | 31 | @Override 32 | public String getFqName() { 33 | return "Silverfish"; 34 | } 35 | 36 | /** 37 | * {@inheritDoc} 38 | */ 39 | @Override 40 | public int getAllySummonCooldown() { 41 | throw new UnsupportedOperationException("Minecraft update broke this shit"); 42 | } 43 | 44 | /** 45 | * {@inheritDoc} 46 | */ 47 | @Override 48 | public void setAllySummonCooldown(int cooldown) { 49 | throw new UnsupportedOperationException("Minecraft update broke this shit"); 50 | } 51 | 52 | /** 53 | * {@inheritDoc} 54 | */ 55 | @Override 56 | public EntitySilverfish getHandle() { 57 | return (EntitySilverfish) entity; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/living/monster/CanarySkeleton.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.living.monster; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.minecraft.entity.monster.EntitySkeleton; 5 | 6 | /** 7 | * Skeleton wrapper implementation 8 | * 9 | * @author Jason (darkdiplomat) 10 | */ 11 | public class CanarySkeleton extends CanaryEntityMob implements Skeleton { 12 | 13 | /** 14 | * Constructs a new wrapper for EntitySkeleton 15 | * 16 | * @param entity 17 | * the EntitySkeleton to wrap 18 | */ 19 | public CanarySkeleton(EntitySkeleton entity) { 20 | super(entity); 21 | } 22 | 23 | /** 24 | * {@inheritDoc} 25 | */ 26 | @Override 27 | public EntityType getEntityType() { 28 | return isWitherSkeleton() ? EntityType.WITHERSKELETON : EntityType.SKELETON; 29 | } 30 | 31 | @Override 32 | public String getFqName() { 33 | return "Skeleton"; 34 | } 35 | 36 | /** 37 | * {@inheritDoc} 38 | */ 39 | @Override 40 | public boolean isWitherSkeleton() { 41 | return getHandle().ck() == 1; 42 | } 43 | 44 | /** 45 | * {@inheritDoc} 46 | */ 47 | @Override 48 | public void setIsWitherSkeleton(boolean wither) { 49 | getHandle().a(wither ? 1 : 0); 50 | } 51 | 52 | /** 53 | * {@inheritDoc} 54 | */ 55 | @Override 56 | public EntitySkeleton getHandle() { 57 | return (EntitySkeleton) entity; 58 | } 59 | 60 | } 61 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/living/monster/CanarySlime.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.living.monster; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.minecraft.entity.monster.EntitySlime; 5 | 6 | /** 7 | * Slime wrapper implementation 8 | * 9 | * @author Chris (damagefilter) 10 | * @author Jason (darkdiplomat) 11 | */ 12 | public class CanarySlime extends CanaryEntityMob implements Slime { 13 | 14 | /** 15 | * Constructs a new wrapper for EntitySlime 16 | * 17 | * @param entity 18 | * the EntitySlime to wrap 19 | */ 20 | public CanarySlime(EntitySlime entity) { 21 | super(entity); 22 | } 23 | 24 | /** 25 | * {@inheritDoc} 26 | */ 27 | @Override 28 | public EntityType getEntityType() { 29 | return EntityType.SLIME; 30 | } 31 | 32 | @Override 33 | public String getFqName() { 34 | return "Slime"; 35 | } 36 | 37 | /** 38 | * {@inheritDoc} 39 | */ 40 | @Override 41 | public Size getSize() { 42 | return Size.fromByte((byte) getHandle().ck()); 43 | } 44 | 45 | /** 46 | * {@inheritDoc} 47 | */ 48 | @Override 49 | public void setSize(Size size) { 50 | getHandle().a(size.getByte()); 51 | } 52 | 53 | /** 54 | * {@inheritDoc} 55 | */ 56 | @Override 57 | public EntitySlime getHandle() { 58 | return (EntitySlime) entity; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/living/monster/CanarySpider.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.living.monster; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.minecraft.entity.monster.EntitySpider; 5 | 6 | /** 7 | * Spider wrapper implementation 8 | * 9 | * @author Jason (darkdiplomat) 10 | */ 11 | public class CanarySpider extends CanaryEntityMob implements Spider { 12 | 13 | /** 14 | * Constructs a new wrapper for EntitySpider 15 | * 16 | * @param entity 17 | * the EntitySpider to wrap 18 | */ 19 | public CanarySpider(EntitySpider entity) { 20 | super(entity); 21 | } 22 | 23 | /** 24 | * {@inheritDoc} 25 | */ 26 | @Override 27 | public EntityType getEntityType() { 28 | return EntityType.SPIDER; 29 | } 30 | 31 | @Override 32 | public String getFqName() { 33 | return "Spider"; 34 | } 35 | 36 | /** 37 | * {@inheritDoc} 38 | */ 39 | @Override 40 | public EntitySpider getHandle() { 41 | return (EntitySpider) entity; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/living/monster/CanaryWitch.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.living.monster; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.minecraft.entity.monster.EntityWitch; 5 | 6 | /** 7 | * Witch wrapper implementation 8 | * 9 | * @author Jason (darkdiplomat) 10 | */ 11 | public class CanaryWitch extends CanaryEntityMob implements Witch { 12 | 13 | /** 14 | * Constructs a new wrapper for EntityWitch 15 | * 16 | * @param entity 17 | * the EntityWitch to wrap 18 | */ 19 | public CanaryWitch(EntityWitch entity) { 20 | super(entity); 21 | } 22 | 23 | /** 24 | * {@inheritDoc} 25 | */ 26 | @Override 27 | public EntityType getEntityType() { 28 | return EntityType.WITCH; 29 | } 30 | 31 | @Override 32 | public String getFqName() { 33 | return "Witch"; 34 | } 35 | 36 | /** 37 | * {@inheritDoc} 38 | */ 39 | @Override 40 | public boolean isAgressive() { 41 | return getHandle().n(); 42 | } 43 | 44 | /** 45 | * {@inheritDoc} 46 | */ 47 | @Override 48 | public void setAggressive(boolean aggressive) { 49 | getHandle().a(aggressive); 50 | } 51 | 52 | /** 53 | * {@inheritDoc} 54 | */ 55 | @Override 56 | public EntityWitch getHandle() { 57 | return (EntityWitch) entity; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/living/monster/CanaryWither.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.living.monster; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.minecraft.entity.boss.EntityWither; 5 | 6 | /** 7 | * Wither wrapper implementation 8 | * 9 | * @author Jason (darkdiplomat) 10 | */ 11 | public class CanaryWither extends CanaryEntityMob implements Wither { 12 | 13 | /** 14 | * Constructs a new wrapper for EntityWither 15 | * 16 | * @param entity 17 | * the EntityWither to wrap 18 | */ 19 | public CanaryWither(EntityWither entity) { 20 | super(entity); 21 | } 22 | 23 | /** 24 | * {@inheritDoc} 25 | */ 26 | @Override 27 | public EntityType getEntityType() { 28 | return EntityType.WITHER; 29 | } 30 | 31 | @Override 32 | public String getFqName() { 33 | return "Wither"; 34 | } 35 | 36 | /** 37 | * {@inheritDoc} 38 | */ 39 | @Override 40 | public EntityWither getHandle() { 41 | return (EntityWither) entity; 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/throwable/CanaryChickenEgg.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.throwable; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.minecraft.entity.projectile.EntityEgg; 5 | 6 | /** 7 | * ChickenEgg wrapper implementation 8 | * 9 | * @author Jason (darkdiplomat) 10 | */ 11 | public class CanaryChickenEgg extends CanaryEntityThrowable implements ChickenEgg { 12 | 13 | /** 14 | * Constructs a new wrapper for EntityEgg 15 | * 16 | * @param entity 17 | * the EntityEgg to be wrapped 18 | */ 19 | public CanaryChickenEgg(EntityEgg entity) { 20 | super(entity); 21 | } 22 | 23 | @Override 24 | public EntityType getEntityType() { 25 | return EntityType.CHICKENEGG; 26 | } 27 | 28 | @Override 29 | public String getFqName() { 30 | return "ChickenEgg"; 31 | } 32 | 33 | /** 34 | * {@inheritDoc} 35 | */ 36 | @Override 37 | public EntityEgg getHandle() { 38 | return (EntityEgg) entity; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/throwable/CanaryEnderPearl.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.throwable; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.minecraft.entity.item.EntityEnderPearl; 5 | 6 | /** 7 | * EnderPearl wrapper implementation 8 | * 9 | * @author Jason (darkdiplomat) 10 | */ 11 | public class CanaryEnderPearl extends CanaryEntityThrowable implements EnderPearl { 12 | 13 | /** 14 | * Constructs a new wrapper for EntityEnderPearl 15 | * 16 | * @param entity 17 | * the EntityEnderPearl to be wrapped 18 | */ 19 | public CanaryEnderPearl(EntityEnderPearl entity) { 20 | super(entity); 21 | } 22 | 23 | @Override 24 | public EntityType getEntityType() { 25 | return EntityType.ENDERPEARL; 26 | } 27 | 28 | @Override 29 | public String getFqName() { 30 | return "EnderPearl"; 31 | } 32 | 33 | /** 34 | * {@inheritDoc} 35 | */ 36 | @Override 37 | public EntityEnderPearl getHandle() { 38 | return (EntityEnderPearl) entity; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/throwable/CanaryEntityThrowable.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.throwable; 2 | 3 | import net.canarymod.api.entity.CanaryEntity; 4 | import net.canarymod.api.entity.living.LivingBase; 5 | 6 | /** 7 | * EntityThrowable wrapper implementation 8 | * 9 | * @author Jason (darkdiplomat) 10 | */ 11 | public abstract class CanaryEntityThrowable extends CanaryEntity implements EntityThrowable { 12 | 13 | /** 14 | * Constructs a new wrapper for EntityThrowable 15 | * 16 | * @param entity 17 | * the EntityThrowable to be wrapped 18 | */ 19 | public CanaryEntityThrowable(net.minecraft.entity.projectile.EntityThrowable entity) { 20 | super(entity); 21 | } 22 | 23 | /** 24 | * {@inheritDoc} 25 | */ 26 | @Override 27 | public float getGravity() { 28 | return getHandle().gravity; 29 | } 30 | 31 | /** 32 | * {@inheritDoc} 33 | */ 34 | @Override 35 | public void setGravity(float velocity) { 36 | getHandle().gravity = velocity; 37 | } 38 | 39 | /** 40 | * {@inheritDoc} 41 | */ 42 | @Override 43 | public LivingBase getThrower() { 44 | return (LivingBase) getHandle().n().getCanaryEntity(); 45 | } 46 | 47 | /** 48 | * {@inheritDoc} 49 | */ 50 | @Override 51 | public void setProjectileHeading(double motionX, double motionY, double motionZ, float rotationYaw, float rotationPitch) { 52 | getHandle().c(motionX, motionY, motionZ, rotationYaw, rotationPitch); 53 | } 54 | 55 | @Override 56 | public net.minecraft.entity.projectile.EntityThrowable getHandle() { 57 | return (net.minecraft.entity.projectile.EntityThrowable) entity; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/throwable/CanarySnowball.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.throwable; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.minecraft.entity.projectile.EntitySnowball; 5 | 6 | /** 7 | * Snowball wrapper implementation 8 | * 9 | * @author Jason (darkdiplomat) 10 | */ 11 | public class CanarySnowball extends CanaryEntityThrowable implements Snowball { 12 | 13 | /** 14 | * Constructs a new wrapper for EntitySnowball 15 | * 16 | * @param entity 17 | * the EntitySnowball to wrap 18 | */ 19 | public CanarySnowball(EntitySnowball entity) { 20 | super(entity); 21 | } 22 | 23 | @Override 24 | public EntityType getEntityType() { 25 | return EntityType.SNOWBALL; 26 | } 27 | 28 | @Override 29 | public String getFqName() { 30 | return "Snowball"; 31 | } 32 | 33 | /** 34 | * {@inheritDoc} 35 | */ 36 | @Override 37 | public EntitySnowball getHandle() { 38 | return (EntitySnowball) entity; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/throwable/CanaryXPBottle.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.throwable; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.minecraft.entity.item.EntityExpBottle; 5 | 6 | /** 7 | * XPBottle wrapper implementation 8 | * 9 | * @author Jason (darkdiplomat) 10 | */ 11 | public class CanaryXPBottle extends CanaryEntityThrowable implements XPBottle { 12 | 13 | /** 14 | * Constructs a new wrapper for EntityExpBottle 15 | * 16 | * @param entity 17 | * the EntityExpBottle to be wrapped 18 | */ 19 | public CanaryXPBottle(EntityExpBottle entity) { 20 | super(entity); 21 | } 22 | 23 | @Override 24 | public EntityType getEntityType() { 25 | return EntityType.XPBOTTLE; 26 | } 27 | 28 | @Override 29 | public String getFqName() { 30 | return "XPBottle"; 31 | } 32 | 33 | /** 34 | * {@inheritDoc} 35 | */ 36 | @Override 37 | public EntityExpBottle getHandle() { 38 | return (EntityExpBottle) entity; 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/vehicle/CanaryAnimalVehicle.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.vehicle; 2 | 3 | import net.canarymod.api.entity.Entity; 4 | import net.canarymod.api.entity.living.animal.CanaryAnimal; 5 | import net.minecraft.entity.passive.EntityHorse; 6 | import net.minecraft.entity.passive.EntityPig; 7 | 8 | /** 9 | * Animal Vehicle implementation 10 | * 11 | * @author Jason (darkdiplomat) 12 | */ 13 | public abstract class CanaryAnimalVehicle extends CanaryAnimal implements Vehicle { 14 | 15 | public CanaryAnimalVehicle(EntityPig entity) { 16 | super(entity); 17 | } 18 | 19 | public CanaryAnimalVehicle(EntityHorse entity) { 20 | super(entity); 21 | } 22 | 23 | @Override 24 | public Entity getPassenger() { 25 | if (!isEmpty()) { 26 | return entity.m.getCanaryEntity(); 27 | } 28 | return null; 29 | } 30 | 31 | @Override 32 | public boolean isBoat() { 33 | return false; 34 | } 35 | 36 | @Override 37 | public boolean isMinecart() { 38 | return false; 39 | } 40 | 41 | @Override 42 | public boolean isEmpty() { 43 | return entity.m == null; 44 | } 45 | } -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/vehicle/CanaryBoat.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.vehicle; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.minecraft.entity.item.EntityBoat; 5 | 6 | /** 7 | * Boat wrapper implementation 8 | * 9 | * @author Jason (darkdiplomat) 10 | */ 11 | public class CanaryBoat extends CanaryVehicle implements Boat { 12 | 13 | /** 14 | * Constructs a new wrapper for EntityBoat 15 | * 16 | * @param entity 17 | * the EntityBoat to be wrapped 18 | */ 19 | public CanaryBoat(EntityBoat entity) { 20 | super(entity); 21 | } 22 | 23 | @Override 24 | public EntityType getEntityType() { 25 | return EntityType.BOAT; 26 | } 27 | 28 | @Override 29 | public String getFqName() { 30 | return "Boat"; 31 | } 32 | 33 | /** 34 | * {@inheritDoc} 35 | */ 36 | @Override 37 | public int getForwardDirection() { 38 | return getHandle().m(); 39 | } 40 | 41 | /** 42 | * {@inheritDoc} 43 | */ 44 | @Override 45 | public void setForwardDirection(int direction) { 46 | getHandle().b(direction); 47 | } 48 | 49 | /** 50 | * {@inheritDoc} 51 | */ 52 | @Override 53 | public EntityBoat getHandle() { 54 | return (EntityBoat) this.entity; 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/vehicle/CanaryChestMinecart.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.vehicle; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.canarymod.api.inventory.InventoryType; 5 | import net.minecraft.entity.item.EntityMinecartChest; 6 | 7 | /** 8 | * ChestMinecart wrapper implementation 9 | * 10 | * @author Jason (darkdiplomat) 11 | */ 12 | public class CanaryChestMinecart extends CanaryContainerMinecart implements ChestMinecart { 13 | 14 | /** 15 | * Constructs a new wrapper for EntityMinecartChest 16 | * 17 | * @param entity 18 | * the EntityMinecartChest to be wrapped 19 | */ 20 | public CanaryChestMinecart(EntityMinecartChest entity) { 21 | super(entity); 22 | } 23 | 24 | @Override 25 | public EntityType getEntityType() { 26 | return EntityType.CHESTMINECART; 27 | } 28 | 29 | public InventoryType getInventoryType() { 30 | return InventoryType.MINECART_CHEST; 31 | } 32 | 33 | @Override 34 | public String getFqName() { 35 | return "ChestMinecart"; 36 | } 37 | 38 | /** 39 | * {@inheritDoc} 40 | */ 41 | @Override 42 | public EntityMinecartChest getHandle() { 43 | return (EntityMinecartChest) entity; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/vehicle/CanaryEmptyMinecart.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.vehicle; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.minecraft.entity.item.EntityMinecartEmpty; 5 | 6 | /** 7 | * EmptyMinecart wrapper implementation 8 | * 9 | * @author Jason (darkdiplomat) 10 | */ 11 | public class CanaryEmptyMinecart extends CanaryMinecart implements EmptyMinecart { 12 | 13 | /** 14 | * Constructs a new wrapper for EntityMinecartEmpty 15 | * 16 | * @param entity 17 | * the EntityMinecartEmpty to be wrapped 18 | */ 19 | public CanaryEmptyMinecart(EntityMinecartEmpty entity) { 20 | super(entity); 21 | } 22 | 23 | @Override 24 | public EntityType getEntityType() { 25 | return EntityType.EMPTYMINECART; 26 | } 27 | 28 | @Override 29 | public String getFqName() { 30 | return "EmptyMinecart"; 31 | } 32 | 33 | /** 34 | * {@inheritDoc} 35 | */ 36 | @Override 37 | public EntityMinecartEmpty getHandle() { 38 | return (EntityMinecartEmpty) entity; 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/vehicle/CanaryMinecart.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.vehicle; 2 | 3 | import net.minecraft.entity.item.EntityMinecart; 4 | 5 | /** 6 | * Minecart wrapper implementation 7 | * 8 | * @author Jason (darkdiplomat) 9 | */ 10 | public abstract class CanaryMinecart extends CanaryVehicle implements Minecart { 11 | 12 | /** 13 | * Constructs a new wrapper for EntityMinecart 14 | * 15 | * @param entity 16 | * the EntityMinecart to be wrapped 17 | */ 18 | public CanaryMinecart(EntityMinecart entity) { 19 | super(entity); 20 | } 21 | 22 | /** 23 | * {@inheritDoc} 24 | */ 25 | @Override 26 | public boolean isInReverse() { 27 | return getHandle().a; 28 | } 29 | 30 | /** 31 | * {@inheritDoc} 32 | */ 33 | @Override 34 | public void setRollingAmplitude(int amp) { 35 | getHandle().j(amp); 36 | } 37 | 38 | /** 39 | * {@inheritDoc} 40 | */ 41 | @Override 42 | public int getRollingAmplitude() { 43 | return getHandle().q(); 44 | } 45 | 46 | /** 47 | * {@inheritDoc} 48 | */ 49 | @Override 50 | public void setRollingDirection(int direction) { 51 | getHandle().k(direction); 52 | } 53 | 54 | /** 55 | * {@inheritDoc} 56 | */ 57 | @Override 58 | public int getRollingDirection() { 59 | return getHandle().r(); 60 | } 61 | 62 | /** 63 | * {@inheritDoc} 64 | */ 65 | @Override 66 | public EntityMinecart getHandle() { 67 | return (EntityMinecart) entity; 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/vehicle/CanaryMobSpawnerMinecart.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.vehicle; 2 | 3 | import net.canarymod.api.MobSpawnerLogic; 4 | import net.canarymod.api.entity.EntityType; 5 | import net.minecraft.entity.ai.EntityMinecartMobSpawner; 6 | 7 | /** 8 | * MobSpawnerMinecart wrapper implementation 9 | * 10 | * @author Jason (darkdiplomat) 11 | */ 12 | public class CanaryMobSpawnerMinecart extends CanaryMinecart implements MobSpawnerMinecart { 13 | 14 | public CanaryMobSpawnerMinecart(EntityMinecartMobSpawner entity) { 15 | super(entity); 16 | } 17 | 18 | @Override 19 | public MobSpawnerLogic getMobSpawnerLogic() { 20 | return ((EntityMinecartMobSpawner) entity).a.logic; 21 | } 22 | 23 | @Override 24 | public EntityType getEntityType() { 25 | return EntityType.MOBSPAWNERMINECART; 26 | } 27 | 28 | @Override 29 | public String getFqName() { 30 | return "MobSpawnerMinecart"; 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/entity/vehicle/CanaryVehicle.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.entity.vehicle; 2 | 3 | import net.canarymod.api.entity.CanaryEntity; 4 | import net.canarymod.api.entity.Entity; 5 | import net.minecraft.entity.item.EntityBoat; 6 | import net.minecraft.entity.item.EntityMinecart; 7 | 8 | /** 9 | * Vehicle implementation 10 | * 11 | * @author Jason (darkdiplomat) 12 | */ 13 | public abstract class CanaryVehicle extends CanaryEntity implements Vehicle { 14 | 15 | public CanaryVehicle(EntityBoat entity) { 16 | super(entity); 17 | } 18 | 19 | public CanaryVehicle(EntityMinecart entity) { 20 | super(entity); 21 | } 22 | 23 | @Override 24 | public Entity getPassenger() { 25 | if (!isEmpty()) { 26 | return entity.m.getCanaryEntity(); 27 | } 28 | return null; 29 | } 30 | 31 | @Override 32 | public boolean isBoat() { 33 | return (this instanceof CanaryBoat); 34 | } 35 | 36 | @Override 37 | public boolean isMinecart() { 38 | return (this instanceof CanaryMinecart); 39 | } 40 | 41 | @Override 42 | public boolean isEmpty() { 43 | return entity.m == null; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/factory/CanaryPotionFactory.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.factory; 2 | 3 | import net.canarymod.api.potion.CanaryPotionEffect; 4 | import net.canarymod.api.potion.PotionEffect; 5 | import net.canarymod.api.potion.PotionEffectType; 6 | 7 | public class CanaryPotionFactory implements PotionFactory { 8 | 9 | @Override 10 | public PotionEffect newPotionEffect(int id, int duration, int amplifier) { 11 | net.minecraft.potion.PotionEffect oEffect = new net.minecraft.potion.PotionEffect(id, duration, amplifier); 12 | return new CanaryPotionEffect(oEffect); 13 | } 14 | 15 | @Override 16 | public PotionEffect newPotionEffect(int id, int duration, int amplifier, boolean ambient) { 17 | net.minecraft.potion.PotionEffect oEffect = new net.minecraft.potion.PotionEffect(id, duration, amplifier, ambient, true); 18 | return new CanaryPotionEffect(oEffect); 19 | } 20 | 21 | @Override 22 | public PotionEffect newPotionEffect(PotionEffectType type, int duration, int amplifier) { 23 | if (type == null) { 24 | return null; 25 | } 26 | return newPotionEffect(type.getID(), duration, amplifier); 27 | } 28 | 29 | @Override 30 | public PotionEffect newPotionEffect(PotionEffectType type, int duration, int amplifier, boolean ambient) { 31 | if (type == null) { 32 | return null; 33 | } 34 | return newPotionEffect(type.getID(), duration, amplifier, ambient); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/factory/CanaryStatisticsFactory.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.factory; 2 | 3 | import net.canarymod.api.statistics.Achievement; 4 | import net.canarymod.api.statistics.Stat; 5 | import net.minecraft.stats.StatList; 6 | 7 | /** 8 | * Statistics Factory implementation 9 | * 10 | * @author Jason (darkdiplomat) 11 | */ 12 | public final class CanaryStatisticsFactory implements StatisticsFactory { 13 | 14 | @Override 15 | public Stat getStat(String nmsName) { 16 | return StatList.a(nmsName).getCanaryStat(); 17 | } 18 | 19 | @Override 20 | public Achievement getAchievement(String nmsName) { 21 | Stat stat = getStat(nmsName); 22 | return stat != null ? (Achievement) stat : null; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/inventory/CanaryBaseItem.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.inventory; 2 | 3 | /** 4 | * This is a basic Item wrapper, not for Itemstack, but for Item 5 | * 6 | * @author Chris (damagefilter) 7 | * @author Jason (darkdiplomat) 8 | */ 9 | public class CanaryBaseItem implements BaseItem { 10 | 11 | private net.minecraft.item.Item item; 12 | 13 | /** 14 | * Constructs a new Item wrapper 15 | * 16 | * @param item 17 | * the Item to wrap 18 | */ 19 | public CanaryBaseItem(net.minecraft.item.Item item) { 20 | this.item = item; 21 | } 22 | 23 | /** 24 | * {@inheritDoc} 25 | */ 26 | @Override 27 | public int getMaxStackSize() { 28 | return item.j(); 29 | } 30 | 31 | /** 32 | * {@inheritDoc} 33 | */ 34 | @Override 35 | public int getMaxDamage() { 36 | return item.l(); 37 | } 38 | 39 | /** 40 | * {@inheritDoc} 41 | */ 42 | @Override 43 | public void setMaxDamage(int damage) { 44 | item.c(damage); 45 | } 46 | 47 | /** 48 | * {@inheritDoc} 49 | */ 50 | @Override 51 | public boolean isDamageable() { 52 | return item.m(); 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/inventory/CanaryOfflineEnderChestInventory.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.inventory; 2 | 3 | import net.canarymod.api.OfflinePlayer; 4 | import net.canarymod.api.entity.living.humanoid.Human; 5 | import net.canarymod.api.nbt.CanaryBaseTag; 6 | import net.canarymod.api.nbt.CanaryListTag; 7 | import net.canarymod.api.nbt.ListTag; 8 | import net.minecraft.inventory.InventoryEnderChest; 9 | 10 | /** 11 | * Offline EnderChest wrapper implementation 12 | * 13 | * @author Jason Jones (darkdiplomat) 14 | */ 15 | public class CanaryOfflineEnderChestInventory extends CanaryEnderChestInventory { 16 | 17 | public CanaryOfflineEnderChestInventory(OfflinePlayer offlinePlayer) { 18 | super(formInventory(offlinePlayer), null); 19 | } 20 | 21 | @Override 22 | public Human getInventoryOwner() { 23 | throw new UnsupportedOperationException("Offline Ender Chest references does not have a \"HUMAN\" owner. Please correct your plugin."); 24 | } 25 | 26 | private static InventoryEnderChest formInventory(OfflinePlayer offlinePlayer) { 27 | InventoryEnderChest iec = new InventoryEnderChest(); 28 | iec.a(((CanaryListTag)offlinePlayer.getNBT().getListTag("EnderItems")).getHandle()); 29 | return iec; 30 | } 31 | 32 | public ListTag storeInventory() { 33 | return (ListTag)CanaryBaseTag.wrap(getHandle().h()); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/inventory/CanaryOfflinePlayerInventory.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.inventory; 2 | 3 | import net.canarymod.api.OfflinePlayer; 4 | import net.canarymod.api.nbt.CanaryBaseTag; 5 | import net.canarymod.api.nbt.CanaryListTag; 6 | import net.canarymod.api.nbt.ListTag; 7 | import net.minecraft.entity.player.InventoryPlayer; 8 | import net.minecraft.nbt.NBTTagList; 9 | 10 | /** 11 | * Copyright (C) 2015 Visual Illusions Entertainment 12 | * All Rights Reserved. 13 | * 14 | * @author Jason Jones (darkdiplomat) 15 | */ 16 | public class CanaryOfflinePlayerInventory extends CanaryPlayerInventory { 17 | 18 | public CanaryOfflinePlayerInventory(OfflinePlayer offlinePlayer) { 19 | super(formInventory(offlinePlayer)); 20 | } 21 | 22 | private static InventoryPlayer formInventory(OfflinePlayer offlinePlayer) { 23 | InventoryPlayer ip = new InventoryPlayer(null); 24 | ip.b(((CanaryListTag)offlinePlayer.getNBT().getListTag("Inventory")).getHandle()); 25 | return ip; 26 | } 27 | 28 | public ListTag storeInventory() { 29 | NBTTagList tag = new NBTTagList(); 30 | getHandle().b(tag); 31 | return (ListTag)CanaryBaseTag.wrap(tag); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/inventory/NativeCustomStorageInventory.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.inventory; 2 | 3 | import net.minecraft.inventory.InventoryBasic; 4 | 5 | /** 6 | * Native Custom Storage Inventory instance 7 | * 8 | * @author Jason (darkdiplomat) 9 | */ 10 | public class NativeCustomStorageInventory extends InventoryBasic { 11 | private final CanaryCustomStorageInventory ccsi; 12 | 13 | public NativeCustomStorageInventory(int num_rows) { 14 | super("custom", false, num_rows > 6 ? 54 : num_rows * 9); 15 | this.ccsi = new CanaryCustomStorageInventory(this); 16 | } 17 | 18 | public NativeCustomStorageInventory(int num_rows, String name) { 19 | super(name, false, num_rows > 6 ? 54 : num_rows * 9); 20 | this.ccsi = new CanaryCustomStorageInventory(this); 21 | } 22 | 23 | public CanaryCustomStorageInventory getCanaryCustomInventory() { 24 | return this.ccsi; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/inventory/recipes/CanaryRecipe.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.inventory.recipes; 2 | 3 | import net.canarymod.Canary; 4 | import net.canarymod.api.inventory.CanaryPlayerCraftingMatrix; 5 | import net.canarymod.api.inventory.CraftingMatrix; 6 | import net.canarymod.api.inventory.Item; 7 | import net.canarymod.api.world.CanaryWorld; 8 | import net.canarymod.api.world.blocks.CanaryWorkbench; 9 | import net.minecraft.item.crafting.IRecipe; 10 | 11 | /** 12 | * Implementation of the IRecipe wrapper 13 | * 14 | * @author Jason (darkdiplomat) 15 | */ 16 | public abstract class CanaryRecipe implements Recipe { 17 | 18 | protected final IRecipe recipe; 19 | 20 | public CanaryRecipe(IRecipe recipe) { 21 | this.recipe = recipe; 22 | } 23 | 24 | @Override 25 | public Item getResult() { 26 | return recipe.b().getCanaryItem(); 27 | } 28 | 29 | @Override 30 | public int getRecipeSize() { 31 | return recipe.a(); 32 | } 33 | 34 | public boolean matchesMatrix(CraftingMatrix matrix) { 35 | if (matrix instanceof CanaryPlayerCraftingMatrix) { 36 | if (getHandle().a(((CanaryPlayerCraftingMatrix) matrix).getHandle(), ((CanaryWorld) Canary.getServer().getDefaultWorld()).getHandle())) { 37 | return true; 38 | } 39 | } 40 | else if (matrix instanceof CanaryWorkbench) { 41 | if (getHandle().a(((CanaryWorkbench) matrix).getInventory(), ((CanaryWorld) Canary.getServer().getDefaultWorld()).getHandle())) { 42 | return true; 43 | } 44 | } 45 | return false; 46 | } 47 | 48 | public abstract IRecipe getHandle(); 49 | 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/inventory/recipes/CanaryShapedRecipe.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.inventory.recipes; 2 | 3 | import net.canarymod.api.inventory.CanaryItem; 4 | import net.canarymod.api.inventory.Item; 5 | import net.minecraft.item.crafting.ShapedRecipes; 6 | 7 | public class CanaryShapedRecipe extends CanaryRecipe implements ShapedRecipe { 8 | 9 | public CanaryShapedRecipe(ShapedRecipes recipe) { 10 | super(recipe); 11 | } 12 | 13 | @Override 14 | public int getWidth() { 15 | return getHandle().getWidth(); 16 | } 17 | 18 | @Override 19 | public int getHeight() { 20 | return getHandle().getHeight(); 21 | } 22 | 23 | @Override 24 | public Item[] getRecipeItems() { 25 | return CanaryItem.stackArrayToItemArray(getHandle().getRecipeItems()); 26 | } 27 | 28 | @Override 29 | public ShapedRecipes getHandle() { 30 | return (ShapedRecipes) recipe; 31 | } 32 | 33 | @Override 34 | public boolean isShapeless() { 35 | return false; 36 | } 37 | 38 | @Override 39 | public boolean isShaped() { 40 | return true; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/inventory/recipes/CanaryShapelessRecipe.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.inventory.recipes; 2 | 3 | import net.canarymod.api.inventory.Item; 4 | import net.minecraft.item.ItemStack; 5 | import net.minecraft.item.crafting.ShapelessRecipes; 6 | 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | 10 | /** 11 | * Implementation of the ShapelessRecipes wrapper 12 | * 13 | * @author Jason (darkdiplomat) 14 | */ 15 | public class CanaryShapelessRecipe extends CanaryRecipe implements ShapelessRecipe { 16 | 17 | public CanaryShapelessRecipe(ShapelessRecipes shapeless) { 18 | super(shapeless); 19 | } 20 | 21 | @Override 22 | public List getRecipeItems() { 23 | ArrayList items = new ArrayList(); 24 | for (ItemStack itemstack : getHandle().getRecipeItems()) { 25 | items.add(itemstack.getCanaryItem()); 26 | } 27 | return items; 28 | } 29 | 30 | @Override 31 | public boolean isShapeless() { 32 | return true; 33 | } 34 | 35 | @Override 36 | public boolean isShaped() { 37 | return false; 38 | } 39 | 40 | @Override 41 | public ShapelessRecipes getHandle() { 42 | return (ShapelessRecipes) recipe; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/nbt/CanaryByteArrayTag.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.nbt; 2 | 3 | import net.minecraft.nbt.NBTTagByteArray; 4 | 5 | /** 6 | * ByteArrayTag wrapper implementation 7 | * 8 | * @author Greg (gregthegeek) 9 | * @author Jason (darkdiplomat) 10 | */ 11 | public class CanaryByteArrayTag extends CanaryBaseTag implements ByteArrayTag { 12 | 13 | /** 14 | * Constructs a new wrapper for NBTTagByteArray 15 | * 16 | * @param tag 17 | * the NBTTagByteArray to wrap 18 | */ 19 | public CanaryByteArrayTag(NBTTagByteArray tag) { 20 | super(tag); 21 | } 22 | 23 | /** 24 | * Constructs a new CanaryByteArrayTag and associated NBTTagByteArray 25 | * 26 | * @param value 27 | * the byte array to supply the tag 28 | */ 29 | public CanaryByteArrayTag(byte[] value) { 30 | super(new NBTTagByteArray(value)); 31 | } 32 | 33 | /** 34 | * {@inheritDoc} 35 | */ 36 | @Override 37 | public byte[] getValue() { 38 | return getHandle().c(); 39 | } 40 | 41 | /** 42 | * {@inheritDoc} 43 | */ 44 | @Override 45 | public void setValue(byte[] value) { 46 | if (value == null || value.length <= 0) { 47 | return; 48 | } 49 | getHandle().b = value; 50 | } 51 | 52 | /** 53 | * {@inheritDoc} 54 | */ 55 | @Override 56 | public ByteArrayTag copy() { 57 | return new CanaryByteArrayTag((NBTTagByteArray) getHandle().b()); 58 | } 59 | 60 | /** 61 | * {@inheritDoc} 62 | */ 63 | @Override 64 | public NBTTagByteArray getHandle() { 65 | return (NBTTagByteArray) tag; 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/nbt/CanaryByteTag.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.nbt; 2 | 3 | import net.minecraft.nbt.NBTTagByte; 4 | 5 | /** 6 | * ByteTag wrapper implementation 7 | * 8 | * @author Greg (gregthegeek) 9 | * @author Jason (darkdiplomat) 10 | */ 11 | public class CanaryByteTag extends CanaryPrimitiveTag implements ByteTag { 12 | 13 | /** 14 | * Constructs a new wrapper for NBTTagByte 15 | * 16 | * @param tag 17 | * the NBTTagByte to wrap 18 | */ 19 | public CanaryByteTag(NBTTagByte tag) { 20 | super(tag); 21 | } 22 | 23 | /** 24 | * Constructs a new CanaryByteTag and associated NBTTagByte 25 | * 26 | * @param value 27 | * the byte to supply to the tag 28 | */ 29 | public CanaryByteTag(byte value) { 30 | super(new NBTTagByte(value)); 31 | } 32 | 33 | /** 34 | * {@inheritDoc} 35 | */ 36 | @Override 37 | public byte getValue() { 38 | return getByteValue(); 39 | } 40 | 41 | /** 42 | * {@inheritDoc} 43 | */ 44 | @Override 45 | public void setValue(byte value) { 46 | getHandle().b = value; 47 | } 48 | 49 | /** 50 | * {@inheritDoc} 51 | */ 52 | @Override 53 | public ByteTag copy() { 54 | return new CanaryByteTag((NBTTagByte) getHandle().b()); 55 | } 56 | 57 | /** 58 | * {@inheritDoc} 59 | */ 60 | @Override 61 | public NBTTagByte getHandle() { 62 | return (NBTTagByte) tag; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/nbt/CanaryDoubleTag.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.nbt; 2 | 3 | import net.minecraft.nbt.NBTTagDouble; 4 | 5 | /** 6 | * DoubleTag wrapper implementation 7 | * 8 | * @author Greg (gregthegeek) 9 | * @author Jason (darkdiplomat) 10 | */ 11 | public class CanaryDoubleTag extends CanaryPrimitiveTag implements DoubleTag { 12 | 13 | /** 14 | * Constructs a new wrapper for NBTTagDouble 15 | * 16 | * @param tag 17 | * the NBTTagDouble to wrap 18 | */ 19 | public CanaryDoubleTag(NBTTagDouble tag) { 20 | super(tag); 21 | } 22 | 23 | /** 24 | * Constructs a new CanaryDoubleTag and associated NBTTagDouble 25 | * 26 | * @param value 27 | * the double to supply the tag 28 | */ 29 | public CanaryDoubleTag(double value) { 30 | super(new NBTTagDouble(value)); 31 | } 32 | 33 | /** 34 | * {@inheritDoc} 35 | */ 36 | @Override 37 | public double getValue() { 38 | return getDoubleValue(); 39 | } 40 | 41 | /** 42 | * {@inheritDoc} 43 | */ 44 | @Override 45 | public void setValue(double value) { 46 | getHandle().b = value; 47 | } 48 | 49 | /** 50 | * {@inheritDoc} 51 | */ 52 | @Override 53 | public DoubleTag copy() { 54 | return new CanaryDoubleTag((NBTTagDouble)getHandle().b()); 55 | } 56 | 57 | /** 58 | * {@inheritDoc} 59 | */ 60 | @Override 61 | public NBTTagDouble getHandle() { 62 | return (NBTTagDouble)tag; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/nbt/CanaryFloatTag.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.nbt; 2 | 3 | import net.minecraft.nbt.NBTTagFloat; 4 | 5 | /** 6 | * FloatTag wrapper implementation 7 | * 8 | * @author Greg (gregthegeek) 9 | * @author Jason (darkdiplomat) 10 | */ 11 | public class CanaryFloatTag extends CanaryPrimitiveTag implements FloatTag { 12 | 13 | /** 14 | * Constructs a new wrapper for NBTTagFloat 15 | * 16 | * @param tag 17 | * the NBTTagFloat to wrap 18 | */ 19 | public CanaryFloatTag(NBTTagFloat tag) { 20 | super(tag); 21 | } 22 | 23 | /** 24 | * Constructs a new CanaryFloatTag and associated NBTTagFloat 25 | * 26 | * @param value 27 | * the float to supply the tag 28 | */ 29 | public CanaryFloatTag(float value) { 30 | super(new NBTTagFloat(value)); 31 | } 32 | 33 | /** 34 | * {@inheritDoc} 35 | */ 36 | @Override 37 | public float getValue() { 38 | return getFloatValue(); 39 | } 40 | 41 | /** 42 | * {@inheritDoc} 43 | */ 44 | @Override 45 | public void setValue(float value) { 46 | getHandle().b = value; 47 | } 48 | 49 | /** 50 | * {@inheritDoc} 51 | */ 52 | @Override 53 | public FloatTag copy() { 54 | return new CanaryFloatTag((NBTTagFloat) getHandle().b()); 55 | } 56 | 57 | /** 58 | * {@inheritDoc} 59 | */ 60 | @Override 61 | public NBTTagFloat getHandle() { 62 | return (NBTTagFloat) tag; 63 | } 64 | 65 | } 66 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/nbt/CanaryIntArrayTag.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.nbt; 2 | 3 | import net.minecraft.nbt.NBTTagIntArray; 4 | 5 | /** 6 | * IntArrayTag wrapper implementation 7 | * 8 | * @author Greg (gregthegeek) 9 | * @author Jason (darkdiplomat) 10 | */ 11 | public class CanaryIntArrayTag extends CanaryBaseTag implements IntArrayTag { 12 | 13 | /** 14 | * Constructs a new wrapper for NBTTagIntArray 15 | * 16 | * @param tag 17 | * the NBTTagIntArray to wrap 18 | */ 19 | public CanaryIntArrayTag(NBTTagIntArray tag) { 20 | super(tag); 21 | } 22 | 23 | /** 24 | * Constructs a new CanaryIntArrayTag and associated NBTTagIntArray 25 | * 26 | * @param value 27 | * the int array to supply the tag 28 | */ 29 | public CanaryIntArrayTag(int[] value) { 30 | super(new NBTTagIntArray(value)); 31 | } 32 | 33 | /** 34 | * {@inheritDoc} 35 | */ 36 | @Override 37 | public int[] getValue() { 38 | return getHandle().b; 39 | } 40 | 41 | /** 42 | * {@inheritDoc} 43 | */ 44 | @Override 45 | public void setValue(int[] value) { 46 | getHandle().b = value; 47 | } 48 | 49 | /** 50 | * {@inheritDoc} 51 | */ 52 | @Override 53 | public IntArrayTag copy() { 54 | return new CanaryIntArrayTag((NBTTagIntArray) getHandle().b()); 55 | } 56 | 57 | /** 58 | * {@inheritDoc} 59 | */ 60 | @Override 61 | public NBTTagIntArray getHandle() { 62 | return (NBTTagIntArray) tag; 63 | } 64 | 65 | } 66 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/nbt/CanaryIntTag.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.nbt; 2 | 3 | import net.minecraft.nbt.NBTTagInt; 4 | 5 | /** 6 | * IntTag wrapper implementation 7 | * 8 | * @author Greg (gregthegeek) 9 | * @author Jason (darkdiplomat) 10 | */ 11 | public class CanaryIntTag extends CanaryPrimitiveTag implements IntTag { 12 | 13 | /** 14 | * Constructs a new wrapper for NBTTagInt 15 | * 16 | * @param tag 17 | * the NBTTagInt to wrap 18 | */ 19 | public CanaryIntTag(NBTTagInt tag) { 20 | super(tag); 21 | } 22 | 23 | /** 24 | * Constructs a new CanaryIntTag and associated NBTTagInt 25 | * 26 | * @param value 27 | * the int to supply the tag 28 | */ 29 | public CanaryIntTag(int value) { 30 | super(new NBTTagInt(value)); 31 | } 32 | 33 | /** 34 | * {@inheritDoc} 35 | */ 36 | @Override 37 | public int getValue() { 38 | return getIntValue(); 39 | } 40 | 41 | /** 42 | * {@inheritDoc} 43 | */ 44 | @Override 45 | public void setValue(int value) { 46 | getHandle().b = value; 47 | } 48 | 49 | /** 50 | * {@inheritDoc} 51 | */ 52 | @Override 53 | public IntTag copy() { 54 | return new CanaryIntTag((NBTTagInt) getHandle().b()); 55 | } 56 | 57 | /** 58 | * {@inheritDoc} 59 | */ 60 | @Override 61 | public NBTTagInt getHandle() { 62 | return (NBTTagInt) tag; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/nbt/CanaryLongTag.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.nbt; 2 | 3 | import net.minecraft.nbt.NBTTagLong; 4 | 5 | /** 6 | * LongTag wrapper implementation 7 | * 8 | * @author Greg (gregthegeek) 9 | * @author Jason (darkdiplomat) 10 | */ 11 | public class CanaryLongTag extends CanaryPrimitiveTag implements LongTag { 12 | 13 | /** 14 | * Constructs a new wrapper for NBTTagLong 15 | * 16 | * @param tag 17 | * the NBTTagLong to wrap 18 | */ 19 | public CanaryLongTag(NBTTagLong tag) { 20 | super(tag); 21 | } 22 | 23 | /** 24 | * Constructs a new CanaryLongTag and associated NBTTagLong 25 | * 26 | * @param value 27 | * the long to supply the tag 28 | */ 29 | public CanaryLongTag(long value) { 30 | super(new NBTTagLong(value)); 31 | } 32 | 33 | /** 34 | * {@inheritDoc} 35 | */ 36 | @Override 37 | public long getValue() { 38 | return getLongValue(); 39 | } 40 | 41 | /** 42 | * {@inheritDoc} 43 | */ 44 | @Override 45 | public void setValue(long value) { 46 | getHandle().b = value; 47 | } 48 | 49 | /** 50 | * {@inheritDoc} 51 | */ 52 | @Override 53 | public LongTag copy() { 54 | return new CanaryLongTag((NBTTagLong) getHandle().b()); 55 | } 56 | 57 | /** 58 | * {@inheritDoc} 59 | */ 60 | @Override 61 | public NBTTagLong getHandle() { 62 | return (NBTTagLong) tag; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/nbt/CanaryPrimitiveTag.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.nbt; 2 | 3 | import net.minecraft.nbt.NBTBase; 4 | 5 | /** 6 | * Cause, you know, I am lazy and this makes it so I only have to update these methods 1 time 7 | * 8 | * @author Jason (darkdiplomat) 9 | */ 10 | public abstract class CanaryPrimitiveTag extends CanaryBaseTag implements PrimitiveTag { 11 | 12 | protected CanaryPrimitiveTag(NBTBase.NBTPrimitive tag) { 13 | super(tag); 14 | } 15 | 16 | @Override 17 | public long getLongValue() { 18 | return getHandle().c(); 19 | } 20 | 21 | @Override 22 | public int getIntValue() { 23 | return getHandle().d(); 24 | } 25 | 26 | @Override 27 | public short getShortValue() { 28 | return getHandle().e(); 29 | } 30 | 31 | @Override 32 | public byte getByteValue() { 33 | return getHandle().f(); 34 | } 35 | 36 | @Override 37 | public double getDoubleValue() { 38 | return getHandle().g(); 39 | } 40 | 41 | @Override 42 | public float getFloatValue() { 43 | return getHandle().h(); 44 | } 45 | 46 | @Override 47 | protected NBTBase.NBTPrimitive getHandle() { 48 | return (NBTBase.NBTPrimitive) tag; 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/nbt/CanaryShortTag.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.nbt; 2 | 3 | import net.minecraft.nbt.NBTTagShort; 4 | 5 | /** 6 | * ShortTag wrapper implementation 7 | * 8 | * @author Greg (gregthegeek) 9 | * @author Jason (darkdiplomat) 10 | */ 11 | public class CanaryShortTag extends CanaryPrimitiveTag implements ShortTag { 12 | 13 | /** 14 | * Constructs a new wrapper for NBTTagShort 15 | * 16 | * @param tag 17 | * the NBTTagShort to wrap 18 | */ 19 | public CanaryShortTag(NBTTagShort tag) { 20 | super(tag); 21 | } 22 | 23 | /** 24 | * Constructs a new CanaryShortTag and associated NBTTagShort 25 | * 26 | * @param value 27 | * the short to supply the tag 28 | */ 29 | public CanaryShortTag(short value) { 30 | super(new NBTTagShort(value)); 31 | } 32 | 33 | /** 34 | * {@inheritDoc} 35 | */ 36 | @Override 37 | public short getValue() { 38 | return getShortValue(); 39 | } 40 | 41 | /** 42 | * {@inheritDoc} 43 | */ 44 | @Override 45 | public void setValue(short value) { 46 | getHandle().b = value; 47 | } 48 | 49 | /** 50 | * {@inheritDoc} 51 | */ 52 | @Override 53 | public ShortTag copy() { 54 | return new CanaryShortTag((NBTTagShort) getHandle().b()); 55 | } 56 | 57 | /** 58 | * {@inheritDoc} 59 | */ 60 | @Override 61 | public NBTTagShort getHandle() { 62 | return (NBTTagShort) tag; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/nbt/CanaryStringTag.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.nbt; 2 | 3 | import net.minecraft.nbt.NBTTagString; 4 | 5 | /** 6 | * StringTag wrapper implementation 7 | * 8 | * @author Greg (gregthegeek) 9 | * @author Jason (darkdiplomat) 10 | */ 11 | public class CanaryStringTag extends CanaryBaseTag implements StringTag { 12 | 13 | /** 14 | * Constructs a new wrapper for NBTTagString 15 | * 16 | * @param tag 17 | * the NBTTagString to wrap 18 | */ 19 | public CanaryStringTag(NBTTagString tag) { 20 | super(tag); 21 | } 22 | 23 | /** 24 | * Constructs a new CanaryStringTag and associated NBTTagString 25 | * 26 | * @param value 27 | * the string to supply the tag 28 | */ 29 | public CanaryStringTag(String value) { 30 | super(new NBTTagString(value)); 31 | } 32 | 33 | /** 34 | * {@inheritDoc} 35 | */ 36 | @Override 37 | public String getValue() { 38 | return getHandle().b; 39 | } 40 | 41 | /** 42 | * {@inheritDoc} 43 | */ 44 | @Override 45 | public void setValue(String value) { 46 | getHandle().b = value; 47 | } 48 | 49 | /** 50 | * {@inheritDoc} 51 | */ 52 | @Override 53 | public StringTag copy() { 54 | return new CanaryStringTag((NBTTagString) getHandle().b()); 55 | } 56 | 57 | /** 58 | * {@inheritDoc} 59 | */ 60 | @Override 61 | public NBTTagString getHandle() { 62 | return (NBTTagString) tag; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/nbt/ListTagIterator.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.nbt; 2 | 3 | import net.minecraft.nbt.NBTBase; 4 | 5 | import java.util.Iterator; 6 | 7 | /** 8 | * Magic 9 | * 10 | * @param 11 | * 12 | * @author Jason (darkdiplomat) 13 | */ 14 | class ListTagIterator implements Iterator { 15 | protected Iterator nativeIterator; 16 | 17 | ListTagIterator(Iterator nativeIterator) { 18 | this.nativeIterator = nativeIterator; 19 | } 20 | 21 | @Override 22 | public boolean hasNext() { 23 | return nativeIterator.hasNext(); 24 | } 25 | 26 | @SuppressWarnings("unchecked") 27 | @Override 28 | public E next() { 29 | return (E) CanaryBaseTag.wrap((NBTBase) nativeIterator.next()); 30 | } 31 | 32 | @Override 33 | public void remove() { 34 | nativeIterator.remove(); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/nbt/ListTagListIterator.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.nbt; 2 | 3 | import net.minecraft.nbt.NBTBase; 4 | 5 | import java.util.ListIterator; 6 | 7 | /** 8 | * Even more magic 9 | * 10 | * @param 11 | * 12 | * @author Jason (darkdiplomat) 13 | */ 14 | class ListTagListIterator extends ListTagIterator implements ListIterator { 15 | 16 | ListTagListIterator(ListIterator nativeListIterator) { 17 | super(nativeListIterator); 18 | } 19 | 20 | @SuppressWarnings("unchecked") 21 | @Override 22 | public boolean hasPrevious() { 23 | return ((ListIterator) nativeIterator).hasPrevious(); 24 | } 25 | 26 | @SuppressWarnings("unchecked") 27 | @Override 28 | public E previous() { 29 | return (E) CanaryBaseTag.wrap((NBTBase) ((ListIterator) nativeIterator).previous()); 30 | } 31 | 32 | @SuppressWarnings("unchecked") 33 | @Override 34 | public int nextIndex() { 35 | return ((ListIterator) nativeIterator).nextIndex(); 36 | } 37 | 38 | @SuppressWarnings("unchecked") 39 | @Override 40 | public int previousIndex() { 41 | return ((ListIterator) nativeIterator).previousIndex(); 42 | } 43 | 44 | @SuppressWarnings("unchecked") 45 | @Override 46 | public void set(E e) { 47 | ((ListIterator) nativeIterator).set((E) ((CanaryBaseTag) e).getHandle()); 48 | } 49 | 50 | @SuppressWarnings("unchecked") 51 | @Override 52 | public void add(E e) { 53 | ((ListIterator) nativeIterator).set((E) ((CanaryBaseTag) e).getHandle()); 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/packet/CanaryPacket.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.packet; 2 | 3 | public class CanaryPacket implements net.canarymod.api.packet.Packet { 4 | 5 | protected final net.minecraft.network.Packet packet; 6 | 7 | public CanaryPacket(net.minecraft.network.Packet packet) { 8 | this.packet = packet; 9 | } 10 | 11 | @Override 12 | public int getPacketSize() { 13 | //return this.packet.(); 14 | return 0; // Packet Size Unknown 15 | } 16 | 17 | @Override 18 | public int getPacketId() { 19 | //return this.packet.n(); 20 | return 0; // Packet ID unknown 21 | } 22 | 23 | public net.minecraft.network.Packet getPacket() { 24 | return this.packet; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/scoreboard/CanaryScore.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.scoreboard; 2 | 3 | import net.minecraft.scoreboard.ServerScoreboard; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * @author Somners 9 | */ 10 | public class CanaryScore implements Score { 11 | 12 | private net.minecraft.scoreboard.Score handle; 13 | 14 | public CanaryScore(net.minecraft.scoreboard.Score handle) { 15 | this.handle = handle; 16 | } 17 | 18 | @Override 19 | public void addToScore(int toAdd) { 20 | handle.a(toAdd); 21 | } 22 | 23 | @Override 24 | public void removeFromScore(int toRemove) { 25 | handle.b(toRemove); 26 | } 27 | 28 | @Override 29 | public void setScore(int toSet) { 30 | handle.c(toSet); 31 | } 32 | 33 | @Override 34 | public int getScore() { 35 | return handle.c(); 36 | } 37 | 38 | @Override 39 | public ScoreObjective getScoreObjective() { 40 | return handle.d().getCanaryScoreObjective(); 41 | } 42 | 43 | @Override 44 | public Scoreboard getScoreboard() { 45 | return ((ServerScoreboard) handle.f()).getCanaryScoreboard(); 46 | } 47 | 48 | @Override 49 | public void setReadOnlyScore(List list) { 50 | this.setScore(this.getScoreObjective().getScoreObjectiveCriteria().getScore(list)); 51 | } 52 | 53 | @Override 54 | public String getName() { 55 | return handle.e(); 56 | } 57 | 58 | @Override 59 | public void update() { 60 | handle.f().a(handle); 61 | } 62 | 63 | } 64 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/scoreboard/CanaryScoreDummyCriteria.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.scoreboard; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * @author Somners 7 | */ 8 | public class CanaryScoreDummyCriteria implements ScoreDummyCriteria { 9 | 10 | private net.minecraft.scoreboard.ScoreDummyCriteria handle; 11 | 12 | public CanaryScoreDummyCriteria(net.minecraft.scoreboard.ScoreDummyCriteria handle) { 13 | this.handle = handle; 14 | } 15 | 16 | @Override 17 | public String getProtocolName() { 18 | return handle.a(); 19 | } 20 | 21 | @Override 22 | public int getScore(List list) { 23 | return handle.a(list); 24 | } 25 | 26 | @Override 27 | public boolean isReadOnly() { 28 | return handle.b(); 29 | } 30 | 31 | public net.minecraft.scoreboard.ScoreDummyCriteria getHandle() { 32 | return handle; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/scoreboard/CanaryScoreHealthCriteria.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.scoreboard; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * @author Somners 7 | */ 8 | public class CanaryScoreHealthCriteria implements ScoreHealthCriteria { 9 | 10 | private net.minecraft.scoreboard.ScoreHealthCriteria handle; 11 | 12 | public CanaryScoreHealthCriteria(net.minecraft.scoreboard.ScoreHealthCriteria handle) { 13 | this.handle = handle; 14 | } 15 | 16 | @Override 17 | public String getProtocolName() { 18 | return handle.a(); 19 | } 20 | 21 | @Override 22 | public int getScore(List list) { 23 | return handle.a(list); 24 | } 25 | 26 | @Override 27 | public boolean isReadOnly() { 28 | return handle.b(); 29 | } 30 | 31 | public net.minecraft.scoreboard.ScoreHealthCriteria getHandle() { 32 | return handle; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/scoreboard/ScoreCanaryCriteria.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.scoreboard; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * Our implementation of the notchian code for plugin use. 7 | * 8 | * @author Somners 9 | */ 10 | public class ScoreCanaryCriteria extends net.minecraft.scoreboard.ScoreDummyCriteria { 11 | 12 | private ScoreObjectiveCriteria criteria; 13 | 14 | public ScoreCanaryCriteria(ScoreObjectiveCriteria criteria) { 15 | super(criteria.getProtocolName()); 16 | this.criteria = criteria; 17 | } 18 | 19 | @Override 20 | public int a(List list) { 21 | return criteria.getScore(list); 22 | } 23 | 24 | @Override 25 | public boolean b() { 26 | return criteria.isReadOnly(); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/statistics/CanaryAchievement.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.statistics; 2 | 3 | /** 4 | * Achievement wrapper 5 | * 6 | * @author Jason (darkdiplomat) 7 | */ 8 | public class CanaryAchievement extends CanaryStat implements Achievement { 9 | /** 10 | * Constructs a new StatBase wrapper 11 | * 12 | * @param statbase 13 | * the StatBase to wrap 14 | */ 15 | public CanaryAchievement(net.minecraft.stats.Achievement achievement) { 16 | super(achievement); 17 | } 18 | 19 | /** 20 | * {@inheritDoc} 21 | */ 22 | @Override 23 | public String getDescription() { 24 | return getHandle().k; 25 | } 26 | 27 | /** 28 | * {@inheritDoc} 29 | */ 30 | @Override 31 | public Achievement getParent() { 32 | return getHandle().c.getCanaryAchievement(); 33 | } 34 | 35 | /** 36 | * {@inheritDoc} 37 | */ 38 | @Override 39 | public boolean isSpecial() { 40 | return false; 41 | } 42 | 43 | public final net.minecraft.stats.Achievement getHandle() { 44 | return (net.minecraft.stats.Achievement) super.getHandle(); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/statistics/CanaryStat.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.statistics; 2 | 3 | import net.minecraft.stats.StatBase; 4 | 5 | /** 6 | * Stat wrapper implementation 7 | * 8 | * @author Jason (darkdiplomat) 9 | */ 10 | public class CanaryStat implements Stat { 11 | private StatBase statbase; 12 | 13 | /** 14 | * Constructs a new StatBase wrapper 15 | * 16 | * @param statbase 17 | * the StatBase to wrap 18 | */ 19 | public CanaryStat(StatBase statbase) { 20 | this.statbase = statbase; 21 | } 22 | 23 | /** 24 | * {@inheritDoc} 25 | */ 26 | @Override 27 | public String getId() { 28 | return getHandle().e; 29 | } 30 | 31 | /** 32 | * {@inheritDoc} 33 | */ 34 | @Override 35 | public String getName() { 36 | return statbase.toString(); 37 | } 38 | 39 | /** 40 | * {@inheritDoc} 41 | */ 42 | @Override 43 | public boolean isIndependent() { 44 | return statbase.f; 45 | } 46 | 47 | public StatBase getHandle() { 48 | return statbase; 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/world/blocks/CanaryComparator.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.world.blocks; 2 | 3 | import net.minecraft.tileentity.TileEntityComparator; 4 | 5 | /** 6 | * Comparator wrapper implementation 7 | * 8 | * @author Jason (darkdiplomat) 9 | */ 10 | public class CanaryComparator extends CanaryTileEntity implements Comparator { 11 | 12 | /** 13 | * Constructs a new wrapper for TileEntityComparator 14 | * 15 | * @param tileentity 16 | * the TileEntityComparator wrapper 17 | */ 18 | public CanaryComparator(TileEntityComparator tileentity) { 19 | super(tileentity); 20 | } 21 | 22 | /** 23 | * {@inheritDoc} 24 | */ 25 | @Override 26 | public int getOutputSignal() { 27 | return getTileEntity().b(); 28 | } 29 | 30 | /** 31 | * {@inheritDoc} 32 | */ 33 | @Override 34 | public void setOutputSignal(int signal) { 35 | getTileEntity().a(signal); 36 | } 37 | 38 | /** 39 | * {@inheritDoc} 40 | */ 41 | @Override 42 | public TileEntityComparator getTileEntity() { 43 | return (TileEntityComparator) tileentity; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/world/blocks/CanaryDaylightDetector.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.world.blocks; 2 | 3 | import net.minecraft.tileentity.TileEntityDaylightDetector; 4 | 5 | /** 6 | * DaylightDetector wrapper implementation 7 | * 8 | * @author Jason (darkdiplomat) 9 | */ 10 | public class CanaryDaylightDetector extends CanaryTileEntity implements DaylightDetector { 11 | 12 | /** 13 | * Constructs a new wrapper for TileEntityDaylightDetector 14 | * 15 | * @param tileentity 16 | * the TileEntityDaylightDetector 17 | */ 18 | public CanaryDaylightDetector(TileEntityDaylightDetector tileentity) { 19 | super(tileentity); 20 | } 21 | 22 | /** 23 | * {@inheritDoc} 24 | */ 25 | @Override 26 | public TileEntityDaylightDetector getTileEntity() { 27 | return (TileEntityDaylightDetector) tileentity; 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/world/blocks/CanaryDropper.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.world.blocks; 2 | 3 | import net.minecraft.tileentity.TileEntityDropper; 4 | 5 | /** 6 | * Dropper wrapper implementation 7 | * 8 | * @author Jason (darkdiplomat) 9 | */ 10 | public class CanaryDropper extends CanaryDispenser implements Dropper { 11 | 12 | /** 13 | * Constructs a new wrapper for TileEntityDropper 14 | * 15 | * @param tileentity 16 | * the TileEntityDropper to wrap 17 | */ 18 | public CanaryDropper(TileEntityDropper tileentity) { 19 | super(tileentity); 20 | } 21 | 22 | /** 23 | * {@inheritDoc} 24 | */ 25 | @Override 26 | public TileEntityDropper getTileEntity() { 27 | return (TileEntityDropper) tileentity; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/world/blocks/CanaryJukebox.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.world.blocks; 2 | 3 | import net.canarymod.api.inventory.CanaryItem; 4 | import net.canarymod.api.inventory.Item; 5 | import net.minecraft.block.BlockJukebox.TileEntityJukebox; 6 | import net.minecraft.item.ItemStack; 7 | 8 | /** 9 | * Jukebox wrapper implementation 10 | * 11 | * @author Jason (darkdiplomat) 12 | */ 13 | public class CanaryJukebox extends CanaryTileEntity implements Jukebox { 14 | 15 | /** 16 | * Constructs a new wrapper for TileEntityRecordPlayer 17 | * 18 | * @param tileentity 19 | * the TileEntityRecordPlayer to be wrapped 20 | */ 21 | public CanaryJukebox(TileEntityJukebox tileentity) { 22 | super(tileentity); 23 | } 24 | 25 | /** 26 | * {@inheritDoc} 27 | */ 28 | @Override 29 | public Item getDisc() { 30 | ItemStack disc = getTileEntity().a(); 31 | return disc == null ? null : disc.getCanaryItem(); 32 | } 33 | 34 | /** 35 | * {@inheritDoc} 36 | */ 37 | @Override 38 | public void setDisc(Item disc) { 39 | if (disc != null && (disc.getId() < 2256 || disc.getId() > 2267)) { 40 | return; 41 | } 42 | getTileEntity().a(disc == null ? null : ((CanaryItem) disc).getHandle()); 43 | } 44 | 45 | /** 46 | * {@inheritDoc} 47 | */ 48 | @Override 49 | public TileEntityJukebox getTileEntity() { 50 | return (TileEntityJukebox) tileentity; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/world/blocks/CanaryLockableTileEntity.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.world.blocks; 2 | 3 | import net.canarymod.NotYetImplementedException; 4 | import net.canarymod.api.inventory.CanaryBlockInventory; 5 | import net.minecraft.inventory.IInventory; 6 | import net.minecraft.tileentity.TileEntityLockable; 7 | import net.minecraft.world.LockCode; 8 | 9 | /** 10 | * TileEntityLockable wrapper implementation 11 | * 12 | * @author Jason Jones (darkdiplomat) 13 | */ 14 | public abstract class CanaryLockableTileEntity extends CanaryBlockInventory implements LockableTileEntity { 15 | 16 | public CanaryLockableTileEntity(IInventory inventory) { 17 | super(inventory); 18 | } 19 | 20 | @Override 21 | public String getCode() { 22 | return getLockCode().b(); 23 | } 24 | 25 | @Override 26 | public void setCode(String s) { 27 | throw new NotYetImplementedException("setCode is not yet implemented for LockableTileEntity"); 28 | } 29 | 30 | @Override 31 | public boolean hasCodeSet() { 32 | return !getLockCode().a(); 33 | } 34 | 35 | LockCode getLockCode() { 36 | return ((TileEntityLockable)getTileEntity()).i(); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/world/blocks/CanaryMapColor.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.world.blocks; 2 | 3 | /** 4 | * MapColor wrapper implementation 5 | * 6 | * @author Jason Jones (darkdiplomat) 7 | */ 8 | public class CanaryMapColor implements MapColor { 9 | private net.minecraft.block.material.MapColor nmsMapColor; 10 | 11 | public CanaryMapColor(net.minecraft.block.material.MapColor nmsMapColor) { 12 | this.nmsMapColor = nmsMapColor; 13 | } 14 | 15 | @Override 16 | public int getIndex() { 17 | return nmsMapColor.L; 18 | } 19 | 20 | @Override 21 | public int getValue() { 22 | return nmsMapColor.M; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/world/blocks/CanaryMobSpawner.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.world.blocks; 2 | 3 | import net.canarymod.api.MobSpawnerLogic; 4 | import net.minecraft.tileentity.TileEntity; 5 | import net.minecraft.tileentity.TileEntityMobSpawner; 6 | 7 | public class CanaryMobSpawner extends CanaryTileEntity implements MobSpawner { 8 | 9 | private MobSpawnerLogic logic = ((TileEntityMobSpawner) this.tileentity).b().logic; 10 | 11 | public CanaryMobSpawner(TileEntityMobSpawner tileentity) { 12 | super(tileentity); 13 | } 14 | 15 | /** 16 | * {@inheritDoc} 17 | */ 18 | @Override 19 | public MobSpawnerLogic getLogic() { 20 | return logic; 21 | } 22 | 23 | /** 24 | * {@inheritDoc} 25 | */ 26 | @Override 27 | public TileEntity getTileEntity() { 28 | return this.tileentity; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/world/blocks/properties/CanaryBlockBooleanProperty.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.world.blocks.properties; 2 | 3 | import net.minecraft.block.properties.PropertyBool; 4 | 5 | /** 6 | * PropertyBool wrapper implementation 7 | * 8 | * @author Jason Jones (darkdiplomat) 9 | */ 10 | public class CanaryBlockBooleanProperty extends CanaryBlockProperty implements BlockBooleanProperty { 11 | 12 | protected CanaryBlockBooleanProperty(PropertyBool property) { 13 | super(property); 14 | } 15 | 16 | @Override 17 | public boolean canApply(Boolean value) { 18 | return super.canApply(value); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/world/blocks/properties/CanaryBlockDirectionProperty.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.world.blocks.properties; 2 | 3 | import net.canarymod.api.world.blocks.BlockFace; 4 | import net.minecraft.block.properties.PropertyDirection; 5 | import net.minecraft.util.EnumFacing; 6 | 7 | /** 8 | * PropertyDirection wrapper implementation 9 | * 10 | * @author Jason Jones (darkdiplomat) 11 | */ 12 | public class CanaryBlockDirectionProperty extends CanaryBlockEnumProperty implements BlockDirectionProperty { 13 | 14 | protected CanaryBlockDirectionProperty(PropertyDirection property) { 15 | super(property); 16 | } 17 | 18 | public boolean canApply(BlockFace blockFace) { 19 | EnumFacing facing; 20 | switch(blockFace){ 21 | case NORTH: facing = EnumFacing.NORTH; break; 22 | case SOUTH: facing = EnumFacing.SOUTH; break; 23 | case EAST: facing = EnumFacing.EAST; break; 24 | case WEST: facing = EnumFacing.WEST; break; 25 | case BOTTOM: facing = EnumFacing.DOWN; break; 26 | case TOP: facing = EnumFacing.UP; break; 27 | default: return false; 28 | } 29 | return getAllowedValues().contains(facing); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/world/blocks/properties/CanaryBlockIntegerProperty.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.world.blocks.properties; 2 | 3 | import net.minecraft.block.properties.PropertyInteger; 4 | 5 | /** 6 | * PropertyInteger wrapper implementation 7 | * 8 | * @author Jason Jones (darkdiplomat) 9 | */ 10 | public class CanaryBlockIntegerProperty extends CanaryBlockProperty implements BlockIntegerProperty { 11 | 12 | protected CanaryBlockIntegerProperty(PropertyInteger property) { 13 | super(property); 14 | } 15 | 16 | @Override 17 | public boolean canApply(Integer value) { 18 | return super.canApply(value); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/api/world/position/BlockPosition.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.api.world.position; 2 | 3 | import net.minecraft.util.BlockPos; 4 | 5 | /** 6 | * A cross over for BlockPos 7 | * 8 | * @author Jason Jones (darkdiplomat) 9 | */ 10 | public class BlockPosition extends Position { 11 | 12 | public BlockPosition(BlockPos blockPos) { 13 | super(blockPos.n(), blockPos.o(), blockPos.p()); 14 | } 15 | 16 | public BlockPosition(int x, int y, int z) { 17 | super(x, y, z); 18 | } 19 | 20 | public BlockPosition(BlockPosition templ) { 21 | super(templ); 22 | } 23 | 24 | public BlockPosition(Position pos) { 25 | super(pos); 26 | } 27 | 28 | public BlockPosition clone() throws CloneNotSupportedException { 29 | return (BlockPosition)super.clone(); 30 | } 31 | 32 | public BlockPosition copy() { 33 | try { 34 | return this.clone(); 35 | } 36 | catch (CloneNotSupportedException e) { 37 | //it is supported... 38 | } 39 | return new BlockPosition(this); 40 | } 41 | 42 | public BlockPos asNative() { 43 | return new BlockPos(getBlockX(), getBlockY(), getBlockZ()); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/serialize/EnchantmentSerializer.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.serialize; 2 | 3 | import net.canarymod.CanaryDeserializeException; 4 | import net.canarymod.api.inventory.CanaryEnchantment; 5 | import net.canarymod.api.inventory.Enchantment; 6 | 7 | public class EnchantmentSerializer implements Serializer { 8 | 9 | @Override 10 | public CanaryEnchantment deserialize(String data) throws CanaryDeserializeException { 11 | try { 12 | String[] fields = data.split(";"); 13 | 14 | if (fields.length != 2) { 15 | throw new CanaryDeserializeException("Could not deserialize Enchantment: Number of fields do not match expected fields (" + fields.length + "/2)", getVendor()); 16 | } 17 | Enchantment.Type type = Enchantment.Type.fromId(Integer.parseInt(fields[0])); 18 | return new CanaryEnchantment(type, Short.parseShort(fields[1])); 19 | } catch (NumberFormatException e) { 20 | throw new CanaryDeserializeException("Could not deserialize Enchantment: " + e.getMessage(), getVendor()); 21 | } 22 | } 23 | 24 | @Override 25 | public String serialize(CanaryEnchantment obj) { 26 | if (obj == null) { 27 | return null; 28 | } 29 | StringBuilder fields = new StringBuilder(); 30 | 31 | fields.append(obj.getType().getId()).append(";").append(obj.getLevel()); 32 | return fields.toString(); 33 | } 34 | 35 | @Override 36 | public String getVendor() { 37 | return "CanaryMod"; 38 | } 39 | 40 | @Override 41 | public String getType() { 42 | return Enchantment.class.getSimpleName(); 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/util/CanaryJsonNBTUtility.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.util; 2 | 3 | import com.mojang.authlib.GameProfile; 4 | import net.canarymod.api.nbt.BaseTag; 5 | import net.canarymod.api.nbt.CanaryBaseTag; 6 | import net.canarymod.api.nbt.CanaryCompoundTag; 7 | import net.canarymod.api.nbt.CompoundTag; 8 | import net.minecraft.nbt.JsonToNBT; 9 | import net.minecraft.nbt.NBTException; 10 | import net.minecraft.nbt.NBTUtil; 11 | 12 | /** 13 | * JSON NBT Utility implementation 14 | * 15 | * @author Jason Jones (darkdiplomat) 16 | */ 17 | public class CanaryJsonNBTUtility implements JsonNBTUtility { 18 | 19 | @Override 20 | public BaseTag jsonToNBT(String rawJson) { 21 | try { 22 | return CanaryBaseTag.wrap(JsonToNBT.a(rawJson)); 23 | } 24 | catch (NBTException nbtex) { 25 | throw new RuntimeException(nbtex); 26 | } 27 | } 28 | 29 | @Override 30 | public String baseTagToJSON(BaseTag baseTag) { 31 | return baseTag.toString(); // WAT 32 | } 33 | 34 | public GameProfile gameProfileFromNBT(CompoundTag tag) { 35 | return NBTUtil.a(((CanaryCompoundTag)tag).getHandle()); 36 | } 37 | 38 | public CompoundTag gameProfileToNBT(GameProfile profile) { 39 | return (CompoundTag)CanaryBaseTag.wrap(NBTUtil.a(new CanaryCompoundTag().getHandle(), profile)); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/util/ForwardLogHandler.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.util; 2 | 3 | import org.apache.logging.log4j.LogManager; 4 | import org.apache.logging.log4j.Logger; 5 | 6 | import java.util.Map; 7 | import java.util.concurrent.ConcurrentHashMap; 8 | import java.util.logging.ConsoleHandler; 9 | import java.util.logging.Level; 10 | import java.util.logging.LogRecord; 11 | 12 | public class ForwardLogHandler extends ConsoleHandler { 13 | private final Map cachedLoggers = new ConcurrentHashMap(); 14 | 15 | private Logger getLogger(String name) { 16 | Logger logger = cachedLoggers.get(name); 17 | if (logger == null) { 18 | logger = LogManager.getLogger(name); 19 | cachedLoggers.put(name, logger); 20 | } 21 | 22 | return logger; 23 | } 24 | 25 | @Override 26 | public void publish(LogRecord record) { 27 | Logger logger = getLogger(record.getLoggerName()); 28 | Throwable exception = record.getThrown(); 29 | Level level = record.getLevel(); 30 | String message = getFormatter().formatMessage(record); 31 | 32 | if (level == Level.SEVERE) { 33 | logger.error(message, exception); 34 | } else if (level == Level.WARNING) { 35 | logger.warn(message, exception); 36 | } else if (level == Level.INFO) { 37 | logger.info(message, exception); 38 | } else if (level == Level.CONFIG) { 39 | logger.debug(message, exception); 40 | } else { 41 | logger.trace(message, exception); 42 | } 43 | } 44 | 45 | @Override 46 | public void flush() { 47 | } 48 | 49 | @Override 50 | public void close() throws SecurityException { 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/main/java/net/canarymod/util/Unwrapper.java: -------------------------------------------------------------------------------- 1 | package net.canarymod.util; 2 | 3 | import net.canarymod.api.entity.CanaryEntity; 4 | import net.canarymod.api.entity.Entity; 5 | import net.canarymod.api.world.CanaryWorld; 6 | import net.canarymod.api.world.World; 7 | import net.canarymod.api.world.blocks.Block; 8 | import net.canarymod.api.world.blocks.CanaryBlock; 9 | import net.canarymod.api.world.position.BlockPosition; 10 | import net.canarymod.api.world.position.Position; 11 | import net.minecraft.block.state.IBlockState; 12 | import net.minecraft.util.BlockPos; 13 | 14 | /** 15 | * Tool for typing less casting and unwrapping 16 | * 17 | * @author Jason Jones (darkdiplomat) 18 | */ 19 | public class Unwrapper { 20 | 21 | public static net.minecraft.world.World unwrap(World world) { 22 | return ((CanaryWorld)world).getHandle(); 23 | } 24 | 25 | public static BlockPos unwrap(Position position) { 26 | if (position instanceof BlockPosition) { 27 | return ((BlockPosition)position).asNative(); 28 | } 29 | return new BlockPosition(position).asNative(); 30 | } 31 | 32 | public static IBlockState unwrap(Block block) { 33 | return ((CanaryBlock)block).getNativeState(); 34 | } 35 | 36 | public static net.minecraft.entity.Entity unwrap(Entity entity) { 37 | return ((CanaryEntity)entity).getHandle(); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/block/BlockCompressedPowered.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.block; 2 | 3 | import net.canarymod.api.world.blocks.CanaryBlock; 4 | import net.canarymod.hook.world.RedstoneChangeHook; 5 | import net.minecraft.block.material.MapColor; 6 | import net.minecraft.block.state.IBlockState; 7 | import net.minecraft.creativetab.CreativeTabs; 8 | import net.minecraft.util.BlockPos; 9 | import net.minecraft.util.EnumFacing; 10 | import net.minecraft.world.IBlockAccess; 11 | import net.minecraft.world.World; 12 | 13 | public class BlockCompressedPowered extends BlockCompressed { 14 | 15 | public BlockCompressedPowered(MapColor mapcolor) { 16 | super(mapcolor); 17 | this.a(CreativeTabs.d); 18 | } 19 | 20 | public boolean g() { 21 | return true; 22 | } 23 | 24 | public int a(IBlockAccess iblockaccess, BlockPos blockpos, IBlockState iblockstate, EnumFacing enumfacing) { 25 | return 15; 26 | } 27 | 28 | // CanaryMod: pull place method in to do RedstoneChange 29 | public void c(World world, BlockPos blockpos, IBlockState iblockstate) { 30 | new RedstoneChangeHook(CanaryBlock.getPooledBlock(iblockstate, blockpos, world), 0, 15); //Can't really cancel this here... 31 | super.c(world, blockpos, iblockstate); 32 | } 33 | 34 | // CanaryMod: pull break method in to do RedstoneChange 35 | public void b(World world, BlockPos blockpos, IBlockState iblockstate) { 36 | new RedstoneChangeHook(CanaryBlock.getPooledBlock(iblockstate, blockpos, world), 15, 0); //Can't really cancel this here... 37 | super.b(world, blockpos, iblockstate); 38 | } 39 | // 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/command/CommandToggleDownfall.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.command; 2 | 3 | import net.canarymod.api.world.CanaryWorld; 4 | import net.minecraft.server.MinecraftServer; 5 | import net.minecraft.world.storage.WorldInfo; 6 | 7 | public class CommandToggleDownfall extends CommandBase { 8 | 9 | public String c() { 10 | return "toggledownfall"; 11 | } 12 | 13 | public int a() { 14 | return 2; 15 | } 16 | 17 | public String c(ICommandSender icommandsender) { 18 | return "commands.downfall.usage"; 19 | } 20 | 21 | public void a(ICommandSender icommandsender, String[] astring) throws CommandException { 22 | //this.d(); // CanaryMod: logic reimplemented below 23 | WorldInfo worldinfo = icommandsender.e().P(); 24 | if (astring.length == 1) { // CanaryMod: inject world selection 25 | boolean loaded = MinecraftServer.M().worldManager.worldIsLoaded(astring[0]); 26 | if (!loaded) { 27 | a(icommandsender, this, "No world loaded of Name: '%s'", new Object[]{astring[0]}); 28 | return; 29 | } 30 | worldinfo = ((CanaryWorld)MinecraftServer.M().worldManager.getWorld(astring[0], false)).getHandle().P(); 31 | } 32 | worldinfo.b(!worldinfo.p()); 33 | 34 | a(icommandsender, this, "commands.downfall.success", new Object[0]); 35 | } 36 | 37 | /* CanaryMod: Logic disabled and moved above 38 | protected void d() { 39 | WorldInfo worldinfo = MinecraftServer.M().c[0].P(); 40 | 41 | worldinfo.b(!worldinfo.p()); 42 | } 43 | */ 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/command/server/CommandSaveOff.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.command.server; 2 | 3 | import net.canarymod.api.world.CanaryWorld; 4 | import net.minecraft.command.CommandBase; 5 | import net.minecraft.command.CommandException; 6 | import net.minecraft.command.ICommandSender; 7 | import net.minecraft.server.MinecraftServer; 8 | import net.minecraft.world.WorldServer; 9 | 10 | public class CommandSaveOff extends CommandBase { 11 | 12 | public String c() { 13 | return "save-off"; 14 | } 15 | 16 | public String c(ICommandSender icommandsender) { 17 | return "commands.save-off.usage"; 18 | } 19 | 20 | public void a(ICommandSender icommandsender, String[] astring) throws CommandException { 21 | MinecraftServer minecraftserver = MinecraftServer.M(); 22 | boolean flag0 = false; 23 | 24 | // CanaryMod: Fix for MultiWorld 25 | for (net.canarymod.api.world.World w : minecraftserver.worldManager.getAllWorlds()) { 26 | WorldServer worldserver = (WorldServer)((CanaryWorld)w).getHandle(); 27 | 28 | if (worldserver != null && !worldserver.c) { 29 | worldserver.c = true; 30 | flag0 = true; 31 | } 32 | } 33 | 34 | if (flag0) { 35 | a(icommandsender, this, "commands.save.disabled", new Object[0]); 36 | } 37 | else { 38 | throw new CommandException("commands.save-off.alreadyOff", new Object[0]); 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/command/server/CommandSaveOn.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.command.server; 2 | 3 | import net.canarymod.api.world.CanaryWorld; 4 | import net.minecraft.command.CommandBase; 5 | import net.minecraft.command.CommandException; 6 | import net.minecraft.command.ICommandSender; 7 | import net.minecraft.server.MinecraftServer; 8 | import net.minecraft.world.WorldServer; 9 | 10 | public class CommandSaveOn extends CommandBase { 11 | 12 | public String c() { 13 | return "save-on"; 14 | } 15 | 16 | public String c(ICommandSender icommandsender) { 17 | return "commands.save-on.usage"; 18 | } 19 | 20 | public void a(ICommandSender icommandsender, String[] astring) throws CommandException { 21 | MinecraftServer minecraftserver = MinecraftServer.M(); 22 | boolean flag0 = false; 23 | 24 | // CanaryMod: Fix for MultiWorld 25 | for (net.canarymod.api.world.World w : minecraftserver.worldManager.getAllWorlds()) { 26 | WorldServer worldserver = (WorldServer) ((CanaryWorld) w).getHandle(); 27 | 28 | if (worldserver != null && worldserver.c) { 29 | worldserver.c = false; 30 | flag0 = true; 31 | } 32 | } 33 | 34 | if (flag0) { 35 | a(icommandsender, this, "commands.save.enabled", new Object[0]); 36 | } else { 37 | throw new CommandException("commands.save-on.alreadyOn", new Object[0]); 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/command/server/CommandStop.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.command.server; 2 | 3 | import net.minecraft.command.CommandBase; 4 | import net.minecraft.command.CommandException; 5 | import net.minecraft.command.ICommandSender; 6 | import net.minecraft.server.MinecraftServer; 7 | 8 | public class CommandStop extends CommandBase { 9 | 10 | public String c() { 11 | return "stop"; 12 | } 13 | 14 | public String c(ICommandSender icommandsender) { 15 | return "commands.stop.usage"; 16 | } 17 | 18 | public void a(ICommandSender icommandsender, String[] astring) throws CommandException { 19 | /* CanaryMod: Remove code due to MultiWorld 20 | if (MinecraftServer.M().c != null) { 21 | a(icommandsender, this, "commands.stop.start", new Object[0]); 22 | } 23 | */ 24 | 25 | MinecraftServer.M().u(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/dispenser/BehaviorProjectileDispense.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.dispenser; 2 | 3 | import net.canarymod.hook.world.DispenseHook; 4 | import net.minecraft.block.BlockDispenser; 5 | import net.minecraft.entity.Entity; 6 | import net.minecraft.entity.IProjectile; 7 | import net.minecraft.item.ItemStack; 8 | import net.minecraft.tileentity.TileEntityDispenser; 9 | import net.minecraft.util.EnumFacing; 10 | import net.minecraft.world.World; 11 | 12 | 13 | public abstract class BehaviorProjectileDispense extends BehaviorDefaultDispenseItem { 14 | 15 | public ItemStack b(IBlockSource iblocksource, ItemStack itemstack) { 16 | World world = iblocksource.i(); 17 | IPosition iposition = BlockDispenser.a(iblocksource); 18 | EnumFacing enumfacing = BlockDispenser.b(iblocksource.f()); 19 | IProjectile iprojectile = this.a(world, iposition); 20 | 21 | iprojectile.c((double) enumfacing.g(), (double) ((float) enumfacing.h() + 0.1F), (double) enumfacing.i(), this.b(), this.a()); 22 | // CanaryMod: Dispense 23 | DispenseHook hook = (DispenseHook) new DispenseHook(((TileEntityDispenser) iblocksource.h()).getCanaryDispenser(), ((Entity) iprojectile).getCanaryEntity()).call(); 24 | if (!hook.isCanceled()) { 25 | world.d((Entity) iprojectile); 26 | itemstack.a(1); 27 | } 28 | // 29 | return itemstack; 30 | } 31 | 32 | protected void a(IBlockSource iblocksource) { 33 | iblocksource.i().b(1002, iblocksource.d(), 0); 34 | } 35 | 36 | protected abstract IProjectile a(World world, IPosition iposition); 37 | 38 | protected float a() { 39 | return 6.0F; 40 | } 41 | 42 | protected float b() { 43 | return 1.1F; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/entity/ai/EntityAIBase.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.entity.ai; 2 | 3 | import net.canarymod.api.ai.CanaryAIBase; 4 | 5 | 6 | public abstract class EntityAIBase { 7 | 8 | private int a; 9 | 10 | protected CanaryAIBase canaryAI;// CanaryMod: our variable 11 | 12 | public abstract boolean a(); 13 | 14 | public boolean b() { 15 | return this.a(); 16 | } 17 | 18 | public boolean i() { 19 | return true; 20 | } 21 | 22 | public void c() {} 23 | 24 | public void d() {} 25 | 26 | public void e() {} 27 | 28 | public void a(int i0) { 29 | this.a = i0; 30 | } 31 | 32 | public int j() { 33 | return this.a; 34 | } 35 | 36 | // CanaryMod: our methods 37 | public CanaryAIBase getCanaryAIBase() { 38 | return this.canaryAI; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/entity/ai/EntityAICreeperSwell.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.entity.ai; 2 | 3 | 4 | import net.canarymod.api.ai.CanaryAICreeperSwell; 5 | import net.minecraft.entity.EntityLivingBase; 6 | import net.minecraft.entity.ai.EntityAIBase; 7 | import net.minecraft.entity.monster.EntityCreeper; 8 | 9 | 10 | public class EntityAICreeperSwell extends EntityAIBase { 11 | 12 | EntityCreeper a; 13 | EntityLivingBase b; 14 | 15 | public EntityAICreeperSwell(EntityCreeper entitycreeper) { 16 | this.a = entitycreeper; 17 | this.a(1); 18 | this.canaryAI = new CanaryAICreeperSwell(this); //CanaryMod: set our variable 19 | } 20 | 21 | public boolean a() { 22 | EntityLivingBase entitylivingbase = this.a.u(); 23 | 24 | return this.a.ck() > 0 || entitylivingbase != null && this.a.h(entitylivingbase) < 9.0D; 25 | } 26 | 27 | public void c() { 28 | this.a.s().n(); 29 | this.b = this.a.u(); 30 | } 31 | 32 | public void d() { 33 | this.b = null; 34 | } 35 | 36 | public void e() { 37 | if (this.b == null) { 38 | this.a.a(-1); 39 | } else if (this.a.h(this.b) > 49.0D) { 40 | this.a.a(-1); 41 | } else if (!this.a.t().a(this.b)) { 42 | this.a.a(-1); 43 | } else { 44 | this.a.a(1); 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/entity/ai/EntityAIDefendVillage.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.entity.ai; 2 | 3 | 4 | import net.canarymod.api.ai.CanaryAIDefendVillage; 5 | import net.minecraft.entity.EntityLivingBase; 6 | import net.minecraft.entity.ai.EntityAITarget; 7 | import net.minecraft.entity.monster.EntityIronGolem; 8 | import net.minecraft.village.Village; 9 | 10 | 11 | public class EntityAIDefendVillage extends EntityAITarget { 12 | 13 | EntityIronGolem a; 14 | EntityLivingBase b; 15 | 16 | public EntityAIDefendVillage(EntityIronGolem entityirongolem) { 17 | super(entityirongolem, false, true); 18 | this.a = entityirongolem; 19 | this.a(1); 20 | this.canaryAI = new CanaryAIDefendVillage(this); //CanaryMod: set our variable 21 | } 22 | 23 | public boolean a() { 24 | Village village = this.a.n(); 25 | 26 | if (village == null) { 27 | return false; 28 | } else { 29 | this.b = village.b((EntityLivingBase) this.a); 30 | if (!this.a(this.b, false)) { 31 | if (this.e.bb().nextInt(20) == 0) { 32 | this.b = village.c((EntityLivingBase) this.a); 33 | return this.a(this.b, false); 34 | } else { 35 | return false; 36 | } 37 | } else { 38 | return true; 39 | } 40 | } 41 | } 42 | 43 | public void c() { 44 | this.a.d(this.b); 45 | super.c(); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/entity/ai/EntityAILeapAtTarget.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.entity.ai; 2 | 3 | 4 | import net.canarymod.api.ai.CanaryAILeapAtTarget; 5 | import net.minecraft.entity.EntityLiving; 6 | import net.minecraft.entity.EntityLivingBase; 7 | import net.minecraft.entity.ai.EntityAIBase; 8 | import net.minecraft.util.MathHelper; 9 | 10 | 11 | public class EntityAILeapAtTarget extends EntityAIBase { 12 | 13 | EntityLiving a; 14 | EntityLivingBase b; 15 | float c; 16 | 17 | public EntityAILeapAtTarget(EntityLiving entityliving, float f0) { 18 | this.a = entityliving; 19 | this.c = f0; 20 | this.a(5); 21 | this.canaryAI = new CanaryAILeapAtTarget(this); //CanaryMod: set our variable 22 | } 23 | 24 | public boolean a() { 25 | this.b = this.a.u(); 26 | if (this.b == null) { 27 | return false; 28 | } else { 29 | double d0 = this.a.h(this.b); 30 | 31 | return d0 >= 4.0D && d0 <= 16.0D ? (!this.a.C ? false : this.a.bb().nextInt(5) == 0) : false; 32 | } 33 | } 34 | 35 | public boolean b() { 36 | return !this.a.C; 37 | } 38 | 39 | public void c() { 40 | double d0 = this.b.s - this.a.s; 41 | double d1 = this.b.u - this.a.u; 42 | float f0 = MathHelper.a(d0 * d0 + d1 * d1); 43 | 44 | this.a.v += d0 / (double) f0 * 0.5D * 0.800000011920929D + this.a.v * 0.20000000298023224D; 45 | this.a.x += d1 / (double) f0 * 0.5D * 0.800000011920929D + this.a.x * 0.20000000298023224D; 46 | this.a.w = (double) this.c; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/entity/ai/EntityAILookAtTradePlayer.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.entity.ai; 2 | 3 | 4 | import net.canarymod.api.ai.CanaryAILookAtTradePlayer; 5 | import net.minecraft.entity.ai.EntityAIWatchClosest; 6 | import net.minecraft.entity.passive.EntityVillager; 7 | import net.minecraft.entity.player.EntityPlayer; 8 | 9 | 10 | public class EntityAILookAtTradePlayer extends EntityAIWatchClosest { 11 | 12 | private final EntityVillager e; 13 | 14 | public EntityAILookAtTradePlayer(EntityVillager entityvillager) { 15 | super(entityvillager, EntityPlayer.class, 8.0F); 16 | this.e = entityvillager; 17 | this.canaryAI = new CanaryAILookAtTradePlayer(this); //CanaryMod: set our variable 18 | } 19 | 20 | public boolean a() { 21 | if (this.e.cm()) { 22 | this.b = this.e.u_(); 23 | return true; 24 | } else { 25 | return false; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/entity/ai/EntityAILookAtVillager.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.entity.ai; 2 | 3 | 4 | import net.canarymod.api.ai.CanaryAILookAtVillager; 5 | import net.minecraft.entity.Entity; 6 | import net.minecraft.entity.ai.EntityAIBase; 7 | import net.minecraft.entity.monster.EntityIronGolem; 8 | import net.minecraft.entity.passive.EntityVillager; 9 | 10 | 11 | public class EntityAILookAtVillager extends EntityAIBase { 12 | 13 | private EntityIronGolem a; 14 | private EntityVillager b; 15 | private int c; 16 | 17 | public EntityAILookAtVillager(EntityIronGolem entityirongolem) { 18 | this.a = entityirongolem; 19 | this.a(3); 20 | this.canaryAI = new CanaryAILookAtVillager(this); //CanaryMod: set our variable 21 | } 22 | 23 | public boolean a() { 24 | if (!this.a.o.w()) { 25 | return false; 26 | } else if (this.a.bb().nextInt(8000) != 0) { 27 | return false; 28 | } else { 29 | this.b = (EntityVillager) this.a.o.a(EntityVillager.class, this.a.aQ().b(6.0D, 2.0D, 6.0D), (Entity) this.a); 30 | return this.b != null; 31 | } 32 | } 33 | 34 | public boolean b() { 35 | return this.c > 0; 36 | } 37 | 38 | public void c() { 39 | this.c = 400; 40 | this.a.a(true); 41 | } 42 | 43 | public void d() { 44 | this.a.a(false); 45 | this.b = null; 46 | } 47 | 48 | public void e() { 49 | this.a.p().a(this.b, 30.0F, 30.0F); 50 | --this.c; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/entity/ai/EntityAILookIdle.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.entity.ai; 2 | 3 | 4 | import net.canarymod.api.ai.CanaryAILookIdle; 5 | import net.minecraft.entity.EntityLiving; 6 | import net.minecraft.entity.ai.EntityAIBase; 7 | 8 | 9 | public class EntityAILookIdle extends EntityAIBase { 10 | 11 | private EntityLiving a; 12 | private double b; 13 | private double c; 14 | private int d; 15 | 16 | public EntityAILookIdle(EntityLiving entityliving) { 17 | this.a = entityliving; 18 | this.a(3); 19 | this.canaryAI = new CanaryAILookIdle(this); //CanaryMod: set our variable 20 | } 21 | 22 | public boolean a() { 23 | return this.a.bb().nextFloat() < 0.02F; 24 | } 25 | 26 | public boolean b() { 27 | return this.d >= 0; 28 | } 29 | 30 | public void c() { 31 | double d0 = 6.283185307179586D * this.a.bb().nextDouble(); 32 | 33 | this.b = Math.cos(d0); 34 | this.c = Math.sin(d0); 35 | this.d = 20 + this.a.bb().nextInt(20); 36 | } 37 | 38 | public void e() { 39 | --this.d; 40 | this.a.p().a(this.a.s + this.b, this.a.t + (double) this.a.aR(), this.a.u + this.c, 10.0F, (float) this.a.bP()); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/entity/ai/EntityAIMoveTowardsRestriction.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.entity.ai; 2 | 3 | 4 | import net.canarymod.api.ai.CanaryAIMoveTowardsRestriction; 5 | import net.minecraft.entity.EntityCreature; 6 | import net.minecraft.entity.ai.EntityAIBase; 7 | import net.minecraft.entity.ai.RandomPositionGenerator; 8 | import net.minecraft.util.BlockPos; 9 | import net.minecraft.util.Vec3; 10 | 11 | 12 | public class EntityAIMoveTowardsRestriction extends EntityAIBase { 13 | 14 | private EntityCreature a; 15 | private double b; 16 | private double c; 17 | private double d; 18 | private double e; 19 | 20 | public EntityAIMoveTowardsRestriction(EntityCreature entitycreature, double d0) { 21 | this.a = entitycreature; 22 | this.e = d0; 23 | this.a(1); 24 | this.canaryAI = new CanaryAIMoveTowardsRestriction(this); //CanaryMod: set our variable 25 | } 26 | 27 | public boolean a() { 28 | if (this.a.ce()) { 29 | return false; 30 | } else { 31 | BlockPos blockpos = this.a.cf(); 32 | Vec3 vec3 = RandomPositionGenerator.a(this.a, 16, 7, new Vec3((double) blockpos.n(), (double) blockpos.o(), (double) blockpos.p())); 33 | 34 | if (vec3 == null) { 35 | return false; 36 | } else { 37 | this.b = vec3.a; 38 | this.c = vec3.b; 39 | this.d = vec3.c; 40 | return true; 41 | } 42 | } 43 | } 44 | 45 | public boolean b() { 46 | return !this.a.s().m(); 47 | } 48 | 49 | public void c() { 50 | this.a.s().a(this.b, this.c, this.d, this.e); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/entity/ai/EntityAIOpenDoor.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.entity.ai; 2 | 3 | 4 | import net.canarymod.api.ai.CanaryAIOpenDoor; 5 | import net.minecraft.entity.EntityLiving; 6 | import net.minecraft.entity.ai.EntityAIDoorInteract; 7 | 8 | 9 | public class EntityAIOpenDoor extends EntityAIDoorInteract { 10 | 11 | boolean g; 12 | int h; 13 | 14 | public EntityAIOpenDoor(EntityLiving entityliving, boolean flag0) { 15 | super(entityliving); 16 | this.a = entityliving; 17 | this.g = flag0; 18 | this.canaryAI = new CanaryAIOpenDoor(this); //CanaryMod: set our variable 19 | } 20 | 21 | public boolean b() { 22 | return this.g && this.h > 0 && super.b(); 23 | } 24 | 25 | public void c() { 26 | this.h = 20; 27 | this.c.a(this.a.o, this.b, true); 28 | } 29 | 30 | public void d() { 31 | if (this.g) { 32 | this.c.a(this.a.o, this.b, false); 33 | } 34 | 35 | } 36 | 37 | public void e() { 38 | --this.h; 39 | super.e(); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/entity/ai/EntityAIOwnerHurtByTarget.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.entity.ai; 2 | 3 | 4 | import net.canarymod.api.ai.CanaryAIOwnerHurtByTarget; 5 | import net.minecraft.entity.EntityLivingBase; 6 | import net.minecraft.entity.ai.EntityAITarget; 7 | import net.minecraft.entity.passive.EntityTameable; 8 | 9 | 10 | public class EntityAIOwnerHurtByTarget extends EntityAITarget { 11 | 12 | EntityTameable a; 13 | EntityLivingBase b; 14 | private int c; 15 | 16 | public EntityAIOwnerHurtByTarget(EntityTameable entitytameable) { 17 | super(entitytameable, false); 18 | this.a = entitytameable; 19 | this.a(1); 20 | this.canaryAI = new CanaryAIOwnerHurtByTarget(this); //CanaryMod: set our variable 21 | } 22 | 23 | public boolean a() { 24 | if (!this.a.cj()) { 25 | return false; 26 | } else { 27 | EntityLivingBase entitylivingbase = this.a.cm(); 28 | 29 | if (entitylivingbase == null) { 30 | return false; 31 | } else { 32 | this.b = entitylivingbase.bc(); 33 | int i0 = entitylivingbase.bd(); 34 | 35 | return i0 != this.c && this.a(this.b, false) && this.a.a(this.b, entitylivingbase); 36 | } 37 | } 38 | } 39 | 40 | public void c() { 41 | this.e.d(this.b); 42 | EntityLivingBase entitylivingbase = this.a.cm(); 43 | 44 | if (entitylivingbase != null) { 45 | this.c = entitylivingbase.bd(); 46 | } 47 | 48 | super.c(); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/entity/ai/EntityAIOwnerHurtTarget.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.entity.ai; 2 | 3 | 4 | import net.canarymod.api.ai.CanaryAIOwnerHurtTarget; 5 | import net.minecraft.entity.EntityLivingBase; 6 | import net.minecraft.entity.ai.EntityAITarget; 7 | import net.minecraft.entity.passive.EntityTameable; 8 | 9 | 10 | public class EntityAIOwnerHurtTarget extends EntityAITarget { 11 | 12 | EntityTameable a; 13 | EntityLivingBase b; 14 | private int c; 15 | 16 | public EntityAIOwnerHurtTarget(EntityTameable entitytameable) { 17 | super(entitytameable, false); 18 | this.a = entitytameable; 19 | this.a(1); 20 | this.canaryAI = new CanaryAIOwnerHurtTarget(this); //CanaryMod: set our variable 21 | } 22 | 23 | public boolean a() { 24 | if (!this.a.cj()) { 25 | return false; 26 | } else { 27 | EntityLivingBase entitylivingbase = this.a.cm(); 28 | 29 | if (entitylivingbase == null) { 30 | return false; 31 | } else { 32 | this.b = entitylivingbase.be(); 33 | int i0 = entitylivingbase.bf(); 34 | 35 | return i0 != this.c && this.a(this.b, false) && this.a.a(this.b, entitylivingbase); 36 | } 37 | } 38 | } 39 | 40 | public void c() { 41 | this.e.d(this.b); 42 | EntityLivingBase entitylivingbase = this.a.cm(); 43 | 44 | if (entitylivingbase != null) { 45 | this.c = entitylivingbase.bf(); 46 | } 47 | 48 | super.c(); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/entity/ai/EntityAIPanic.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.entity.ai; 2 | 3 | 4 | import net.canarymod.api.ai.CanaryAIPanic; 5 | import net.minecraft.entity.EntityCreature; 6 | import net.minecraft.entity.ai.EntityAIBase; 7 | import net.minecraft.entity.ai.RandomPositionGenerator; 8 | import net.minecraft.util.Vec3; 9 | 10 | 11 | public class EntityAIPanic extends EntityAIBase { 12 | 13 | private EntityCreature b; 14 | protected double a; 15 | private double c; 16 | private double d; 17 | private double e; 18 | 19 | public EntityAIPanic(EntityCreature entitycreature, double d0) { 20 | this.b = entitycreature; 21 | this.a = d0; 22 | this.a(1); 23 | this.canaryAI = new CanaryAIPanic(this); //CanaryMod: set our variable 24 | } 25 | 26 | public boolean a() { 27 | if (this.b.bc() == null && !this.b.au()) { 28 | return false; 29 | } else { 30 | Vec3 vec3 = RandomPositionGenerator.a(this.b, 5, 4); 31 | 32 | if (vec3 == null) { 33 | return false; 34 | } else { 35 | this.c = vec3.a; 36 | this.d = vec3.b; 37 | this.e = vec3.c; 38 | return true; 39 | } 40 | } 41 | } 42 | 43 | public void c() { 44 | this.b.s().a(this.c, this.d, this.e, this.a); 45 | } 46 | 47 | public boolean b() { 48 | return !this.b.s().m(); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/entity/ai/EntityAIRestrictSun.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.entity.ai; 2 | 3 | 4 | import net.canarymod.api.ai.CanaryAIRestrictSun; 5 | import net.minecraft.entity.EntityCreature; 6 | import net.minecraft.entity.ai.EntityAIBase; 7 | import net.minecraft.pathfinding.PathNavigateGround; 8 | 9 | 10 | public class EntityAIRestrictSun extends EntityAIBase { 11 | 12 | private EntityCreature a; 13 | 14 | public EntityAIRestrictSun(EntityCreature entitycreature) { 15 | this.a = entitycreature; 16 | this.canaryAI = new CanaryAIRestrictSun(this); //CanaryMod: set our variable 17 | } 18 | 19 | public boolean a() { 20 | return this.a.o.w(); 21 | } 22 | 23 | public void c() { 24 | ((PathNavigateGround) this.a.s()).e(true); 25 | } 26 | 27 | public void d() { 28 | ((PathNavigateGround) this.a.s()).e(false); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/entity/ai/EntityAISit.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.entity.ai; 2 | 3 | 4 | import net.canarymod.api.ai.CanaryAISit; 5 | import net.minecraft.entity.EntityLivingBase; 6 | import net.minecraft.entity.ai.EntityAIBase; 7 | import net.minecraft.entity.passive.EntityTameable; 8 | 9 | 10 | public class EntityAISit extends EntityAIBase { 11 | 12 | private EntityTameable a; 13 | private boolean b; 14 | 15 | public EntityAISit(EntityTameable entitytameable) { 16 | this.a = entitytameable; 17 | this.a(5); 18 | this.canaryAI = new CanaryAISit(this); //CanaryMod: set our variable 19 | } 20 | 21 | public boolean a() { 22 | if (!this.a.cj()) { 23 | return false; 24 | } else if (this.a.V()) { 25 | return false; 26 | } else if (!this.a.C) { 27 | return false; 28 | } else { 29 | EntityLivingBase entitylivingbase = this.a.cm(); 30 | 31 | return entitylivingbase == null ? true : (this.a.h(entitylivingbase) < 144.0D && entitylivingbase.bc() != null ? false : this.b); 32 | } 33 | } 34 | 35 | public void c() { 36 | this.a.s().n(); 37 | this.a.n(true); 38 | } 39 | 40 | public void d() { 41 | this.a.n(false); 42 | } 43 | 44 | public void a(boolean flag0) { 45 | this.b = flag0; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/entity/ai/EntityAISwimming.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.entity.ai; 2 | 3 | 4 | import net.canarymod.api.ai.CanaryAISwimming; 5 | import net.minecraft.entity.EntityLiving; 6 | import net.minecraft.entity.ai.EntityAIBase; 7 | import net.minecraft.pathfinding.PathNavigateGround; 8 | 9 | 10 | public class EntityAISwimming extends EntityAIBase { 11 | 12 | private EntityLiving a; 13 | 14 | public EntityAISwimming(EntityLiving entityliving) { 15 | this.a = entityliving; 16 | this.a(4); 17 | ((PathNavigateGround) entityliving.s()).d(true); 18 | this.canaryAI = new CanaryAISwimming(this); //CanaryMod: set our variable 19 | } 20 | 21 | public boolean a() { 22 | return this.a.V() || this.a.ab(); 23 | } 24 | 25 | public void e() { 26 | if (this.a.bb().nextFloat() < 0.8F) { 27 | this.a.r().a(); 28 | } 29 | 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/entity/ai/EntityAITargetNonTamed.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.entity.ai; 2 | 3 | 4 | import com.google.common.base.Predicate; 5 | import net.canarymod.api.ai.CanaryAITargetNonTamed; 6 | import net.minecraft.entity.ai.EntityAINearestAttackableTarget; 7 | import net.minecraft.entity.passive.EntityTameable; 8 | 9 | 10 | public class EntityAITargetNonTamed extends EntityAINearestAttackableTarget { 11 | 12 | private EntityTameable g; 13 | 14 | public EntityAITargetNonTamed(EntityTameable entitytameable, Class oclass0, boolean flag0, Predicate predicate) { 15 | super(entitytameable, oclass0, 10, flag0, false, predicate); 16 | this.g = entitytameable; 17 | this.canaryAI = new CanaryAITargetNonTamed(this); //CanaryMod: set our variable 18 | } 19 | 20 | public boolean a() { 21 | return !this.g.cj() && super.a(); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/entity/ai/EntityAITradePlayer.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.entity.ai; 2 | 3 | 4 | import net.canarymod.api.ai.CanaryAITradePlayer; 5 | import net.minecraft.entity.ai.EntityAIBase; 6 | import net.minecraft.entity.passive.EntityVillager; 7 | import net.minecraft.entity.player.EntityPlayer; 8 | import net.minecraft.inventory.Container; 9 | 10 | 11 | public class EntityAITradePlayer extends EntityAIBase { 12 | 13 | private EntityVillager a; 14 | 15 | public EntityAITradePlayer(EntityVillager entityvillager) { 16 | this.a = entityvillager; 17 | this.a(5); 18 | this.canaryAI = new CanaryAITradePlayer(this); //CanaryMod: set our variable 19 | } 20 | 21 | public boolean a() { 22 | if (!this.a.ai()) { 23 | return false; 24 | } else if (this.a.V()) { 25 | return false; 26 | } else if (!this.a.C) { 27 | return false; 28 | } else if (this.a.G) { 29 | return false; 30 | } else { 31 | EntityPlayer entityplayer = this.a.u_(); 32 | 33 | return entityplayer == null ? false : (this.a.h(entityplayer) > 16.0D ? false : entityplayer.bi instanceof Container); 34 | } 35 | } 36 | 37 | public void c() { 38 | this.a.s().n(); 39 | } 40 | 41 | public void d() { 42 | this.a.a_((EntityPlayer) null); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/entity/ai/EntityAIWatchClosest2.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.entity.ai; 2 | 3 | 4 | import net.canarymod.api.ai.CanaryAIWatchClosest2; 5 | import net.minecraft.entity.EntityLiving; 6 | import net.minecraft.entity.ai.EntityAIWatchClosest; 7 | 8 | 9 | public class EntityAIWatchClosest2 extends EntityAIWatchClosest { 10 | 11 | public EntityAIWatchClosest2(EntityLiving entityliving, Class oclass0, float f0, float f1) { 12 | super(entityliving, oclass0, f0, f1); 13 | this.a(3); 14 | this.canaryAI = new CanaryAIWatchClosest2(this); //CanaryMod: set our variable 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/entity/ai/attributes/BaseAttribute.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.entity.ai.attributes; 2 | 3 | import net.canarymod.api.attributes.CanaryAttribute; 4 | 5 | public abstract class BaseAttribute implements IAttribute { 6 | 7 | private final IAttribute a; 8 | private final String b; 9 | private final double c; 10 | // CanaryMod: our vars 11 | protected CanaryAttribute canaryAttribute; 12 | private boolean d; 13 | 14 | protected BaseAttribute(IAttribute iattribute, String s0, double d0) { 15 | this.a = iattribute; 16 | this.b = s0; 17 | this.c = d0; 18 | if (s0 == null) { 19 | throw new IllegalArgumentException("Name cannot be null!"); 20 | } 21 | this.canaryAttribute = new CanaryAttribute(this); 22 | } 23 | 24 | public String a() { 25 | return this.b; 26 | } 27 | 28 | public double b() { 29 | return this.c; 30 | } 31 | 32 | public boolean c() { 33 | return this.d; 34 | } 35 | 36 | public BaseAttribute a(boolean flag0) { 37 | this.d = flag0; 38 | return this; 39 | } 40 | 41 | public IAttribute d() { 42 | return this.a; 43 | } 44 | 45 | public int hashCode() { 46 | return this.b.hashCode(); 47 | } 48 | 49 | public boolean equals(Object object) { 50 | return object instanceof IAttribute && this.b.equals(((IAttribute) object).a()); 51 | } 52 | 53 | public CanaryAttribute getWrapper() { 54 | return canaryAttribute; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/entity/ai/attributes/IAttribute.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.entity.ai.attributes; 2 | 3 | import net.canarymod.api.attributes.CanaryAttribute; 4 | 5 | public interface IAttribute { 6 | 7 | String a(); 8 | 9 | double a(double d0); 10 | 11 | double b(); 12 | 13 | boolean c(); 14 | 15 | IAttribute d(); 16 | 17 | CanaryAttribute getWrapper(); // CanaryMod 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/entity/ai/attributes/IAttributeInstance.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.entity.ai.attributes; 2 | 3 | 4 | import net.canarymod.api.attributes.CanaryModifiedAttribute; 5 | 6 | import java.util.Collection; 7 | import java.util.UUID; 8 | 9 | 10 | public interface IAttributeInstance { 11 | 12 | IAttribute a(); 13 | 14 | double b(); 15 | 16 | void a(double d0); 17 | 18 | Collection a(int i0); 19 | 20 | Collection c(); 21 | 22 | boolean a(AttributeModifier attributemodifier); 23 | 24 | AttributeModifier a(UUID uuid); 25 | 26 | void b(AttributeModifier attributemodifier); 27 | 28 | void c(AttributeModifier attributemodifier); 29 | 30 | double e(); 31 | 32 | CanaryModifiedAttribute getWrapper(); // CanaryMod 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/entity/ai/attributes/RangedAttribute.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.entity.ai.attributes; 2 | 3 | import net.canarymod.api.attributes.CanaryRangedAttribute; 4 | import net.minecraft.util.MathHelper; 5 | 6 | public class RangedAttribute extends BaseAttribute { 7 | 8 | private final double a; 9 | private final double b; 10 | private String c; 11 | 12 | public RangedAttribute(IAttribute iattribute, String s0, double d0, double d1, double d2) { 13 | super(iattribute, s0, d0); 14 | this.a = d1; 15 | this.b = d2; 16 | if (d1 > d2) { 17 | throw new IllegalArgumentException("Minimum value cannot be bigger than maximum value!"); 18 | } 19 | else if (d0 < d1) { 20 | throw new IllegalArgumentException("Default value cannot be lower than minimum value!"); 21 | } 22 | else if (d0 > d2) { 23 | throw new IllegalArgumentException("Default value cannot be bigger than maximum value!"); 24 | } 25 | this.canaryAttribute = new CanaryRangedAttribute(this); 26 | } 27 | 28 | public RangedAttribute a(String s0) { 29 | this.c = s0; 30 | return this; 31 | } 32 | 33 | public String g() { 34 | return this.c; 35 | } 36 | 37 | public double a(double d0) { 38 | d0 = MathHelper.a(d0, this.a, this.b); 39 | return d0; 40 | } 41 | 42 | // CanaryMod 43 | public double getMinValue() { 44 | return a; 45 | } 46 | 47 | public double getMaxValue() { 48 | return b; 49 | } 50 | 51 | public CanaryRangedAttribute getWrapper() { 52 | return (CanaryRangedAttribute) super.getWrapper(); 53 | } 54 | // 55 | } 56 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/entity/effect/EntityWeatherEffect.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.entity.effect; 2 | 3 | import net.canarymod.api.entity.EntityType; 4 | import net.canarymod.api.entity.effect.CanaryWeatherEffect; 5 | import net.minecraft.entity.Entity; 6 | import net.minecraft.world.World; 7 | 8 | public abstract class EntityWeatherEffect extends Entity { 9 | 10 | public EntityWeatherEffect(World world) { 11 | super(world); 12 | 13 | // CanaryMod: Wrap effect if a sub class isn't a wrapped class 14 | this.entity = new CanaryWeatherEffect(this) { 15 | @Override 16 | public EntityType getEntityType() { 17 | return EntityType.GENERIC_EFFECT; 18 | } 19 | 20 | @Override 21 | public String getFqName() { 22 | return "Weather Effect"; 23 | } 24 | 25 | public EntityWeatherEffect getHandle() { 26 | return (EntityWeatherEffect) entity; 27 | } 28 | }; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/entity/monster/EntityGiantZombie.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.entity.monster; 2 | 3 | import net.canarymod.api.entity.living.monster.CanaryGiantZombie; 4 | import net.minecraft.entity.SharedMonsterAttributes; 5 | import net.minecraft.util.BlockPos; 6 | import net.minecraft.world.World; 7 | 8 | 9 | public class EntityGiantZombie extends EntityMob { 10 | 11 | public EntityGiantZombie(World world) { 12 | super(world); 13 | this.entity = new CanaryGiantZombie(this); // CanaryMod: Wrap Entity 14 | } 15 | 16 | public float aR() { 17 | return 10.440001F; 18 | } 19 | 20 | protected void aW() { 21 | super.aW(); 22 | this.a(SharedMonsterAttributes.a).a(100.0D); 23 | this.a(SharedMonsterAttributes.d).a(0.5D); 24 | this.a(SharedMonsterAttributes.e).a(50.0D); 25 | } 26 | 27 | public float a(BlockPos blockpos) { 28 | return this.o.o(blockpos) - 0.5F; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/inventory/IInventory.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.inventory; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.item.ItemStack; 5 | import net.minecraft.world.IWorldNameable; 6 | 7 | public interface IInventory extends IWorldNameable { 8 | 9 | int n_(); 10 | 11 | ItemStack a(int i0); 12 | 13 | ItemStack a(int i0, int i1); 14 | 15 | ItemStack b(int i0); 16 | 17 | void a(int i0, ItemStack itemstack); 18 | 19 | int p_(); 20 | 21 | void o_(); 22 | 23 | boolean a(EntityPlayer entityplayer); 24 | 25 | void b(EntityPlayer entityplayer); 26 | 27 | void c(EntityPlayer entityplayer); 28 | 29 | boolean b(int i0, ItemStack itemstack); 30 | 31 | int a_(int i0); 32 | 33 | void b(int i0, int i1); 34 | 35 | int g(); 36 | 37 | void l(); 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/item/ItemBucketMilk.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.item; 2 | 3 | import net.canarymod.hook.player.EatHook; 4 | import net.minecraft.creativetab.CreativeTabs; 5 | import net.minecraft.entity.player.EntityPlayer; 6 | import net.minecraft.entity.player.EntityPlayerMP; 7 | import net.minecraft.init.Items; 8 | import net.minecraft.stats.StatList; 9 | import net.minecraft.world.World; 10 | 11 | public class ItemBucketMilk extends Item { 12 | 13 | public ItemBucketMilk() { 14 | this.c(1); 15 | this.a(CreativeTabs.f); 16 | } 17 | 18 | public ItemStack b(ItemStack itemstack, World world, EntityPlayer entityplayer) { 19 | // CanaryMod: Eat 20 | EatHook hook = (EatHook)new EatHook(((EntityPlayerMP)entityplayer).getPlayer(), itemstack.getCanaryItem(), 0, 0, null).call(); 21 | if (hook.isCanceled()) { 22 | return itemstack; 23 | } 24 | // For those Lactose intolerant 25 | entityplayer.ck().a(hook.getLevelGain(), hook.getSaturationGain()); 26 | // 27 | 28 | if (!entityplayer.by.d) { 29 | --itemstack.b; 30 | } 31 | 32 | if (!world.D) { 33 | entityplayer.bj(); 34 | } 35 | 36 | entityplayer.b(StatList.J[Item.b((Item)this)]); 37 | return itemstack.b <= 0 ? new ItemStack(Items.aw) : itemstack; 38 | } 39 | 40 | public int d(ItemStack itemstack) { 41 | return 32; 42 | } 43 | 44 | public EnumAction e(ItemStack itemstack) { 45 | return EnumAction.DRINK; 46 | } 47 | 48 | public ItemStack a(ItemStack itemstack, World world, EntityPlayer entityplayer) { 49 | entityplayer.a(itemstack, this.d(itemstack)); 50 | return itemstack; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/item/ItemSoup.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.item; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.init.Items; 5 | import net.minecraft.world.World; 6 | 7 | public class ItemSoup extends ItemFood { 8 | 9 | public ItemSoup(int i0) { 10 | super(i0, false); 11 | this.c(1); 12 | } 13 | 14 | public ItemStack b(ItemStack itemstack, World world, EntityPlayer entityplayer) { 15 | int tempAm = itemstack.b; 16 | 17 | super.b(itemstack, world, entityplayer); 18 | // CanaryMod: check if EatHook got canceled 19 | if (itemstack.b != tempAm) { 20 | return new ItemStack(Items.z); 21 | } 22 | // 23 | return itemstack; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/nbt/NBTTagByteArray.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.nbt; 2 | 3 | 4 | import java.io.DataInput; 5 | import java.io.DataOutput; 6 | import java.io.IOException; 7 | import java.util.Arrays; 8 | 9 | 10 | public class NBTTagByteArray extends NBTBase { 11 | 12 | public byte[] b; // CanaryMod: private => public 13 | 14 | NBTTagByteArray() { 15 | } 16 | 17 | public NBTTagByteArray(byte[] abyte) { 18 | this.b = abyte; 19 | } 20 | 21 | void a(DataOutput dataoutput) throws IOException { 22 | dataoutput.writeInt(this.b.length); 23 | dataoutput.write(this.b); 24 | } 25 | 26 | void a(DataInput datainput, int i0, NBTSizeTracker nbtsizetracker) throws IOException { 27 | int i1 = datainput.readInt(); 28 | 29 | nbtsizetracker.a((long) (8 * i1)); 30 | this.b = new byte[i1]; 31 | datainput.readFully(this.b); 32 | } 33 | 34 | public byte a() { 35 | return (byte) 7; 36 | } 37 | 38 | public String toString() { 39 | return "[" + this.b.length + " bytes]"; 40 | } 41 | 42 | public NBTBase b() { 43 | byte[] abyte = new byte[this.b.length]; 44 | 45 | System.arraycopy(this.b, 0, abyte, 0, this.b.length); 46 | return new NBTTagByteArray(abyte); 47 | } 48 | 49 | public boolean equals(Object object) { 50 | return super.equals(object) ? Arrays.equals(this.b, ((NBTTagByteArray) object).b) : false; 51 | } 52 | 53 | public int hashCode() { 54 | return super.hashCode() ^ Arrays.hashCode(this.b); 55 | } 56 | 57 | public byte[] c() { 58 | return this.b; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/network/handshake/client/C00Handshake.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.network.handshake.client; 2 | 3 | import net.minecraft.network.EnumConnectionState; 4 | import net.minecraft.network.INetHandler; 5 | import net.minecraft.network.Packet; 6 | import net.minecraft.network.PacketBuffer; 7 | import net.minecraft.network.handshake.INetHandlerHandshakeServer; 8 | 9 | import java.io.IOException; 10 | 11 | public class C00Handshake implements Packet { 12 | private int a; 13 | public String b; //CanaryMod - Bungeecord support 14 | private int c; 15 | private EnumConnectionState d; 16 | 17 | public void a(PacketBuffer packetbuffer) 18 | throws IOException { 19 | this.a = packetbuffer.e(); 20 | this.b = packetbuffer.c(Short.MAX_VALUE); //CanaryMod - Bungeecord support 21 | this.c = packetbuffer.readUnsignedShort(); 22 | this.d = EnumConnectionState.a(packetbuffer.e()); 23 | } 24 | 25 | public void b(PacketBuffer packetbuffer) throws IOException { 26 | packetbuffer.b(this.a); 27 | packetbuffer.a(this.b); 28 | packetbuffer.writeShort(this.c); 29 | packetbuffer.b(this.d.a()); 30 | } 31 | 32 | public void a(INetHandlerHandshakeServer inethandlerhandshakeserver) { 33 | inethandlerhandshakeserver.a(this); 34 | } 35 | 36 | public EnumConnectionState a() { 37 | return this.d; 38 | } 39 | 40 | public int b() { 41 | return this.a; 42 | } 43 | 44 | public void a(INetHandler inethandler) { 45 | this.a((INetHandlerHandshakeServer)inethandler); 46 | } 47 | 48 | public int getPort() { //CanaryMod: ServerListPing ping port 49 | return this.c; 50 | } 51 | } -------------------------------------------------------------------------------- /src/main/java/net/minecraft/network/play/server/S23PacketBlockChange.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.network.play.server; 2 | 3 | import net.minecraft.block.Block; 4 | import net.minecraft.block.state.IBlockState; 5 | import net.minecraft.network.INetHandler; 6 | import net.minecraft.network.Packet; 7 | import net.minecraft.network.PacketBuffer; 8 | import net.minecraft.network.play.INetHandlerPlayClient; 9 | import net.minecraft.util.BlockPos; 10 | import net.minecraft.world.World; 11 | 12 | import java.io.IOException; 13 | 14 | public class S23PacketBlockChange implements Packet { 15 | public BlockPos a; // CanaryMod: private => public; 16 | public IBlockState b; // CanaryMod: private => public; 17 | 18 | public S23PacketBlockChange() { 19 | } 20 | 21 | public S23PacketBlockChange(World world, BlockPos blockpos) { 22 | this.a = blockpos; 23 | this.b = world.p(blockpos); 24 | } 25 | 26 | public void a(PacketBuffer packetbuffer) throws IOException { 27 | this.a = packetbuffer.c(); 28 | this.b = (IBlockState)Block.d.a(packetbuffer.e()); 29 | } 30 | 31 | public void b(PacketBuffer packetbuffer) throws IOException { 32 | packetbuffer.a(this.a); 33 | packetbuffer.b(Block.d.b(this.b)); 34 | } 35 | 36 | public void a(INetHandlerPlayClient inethandlerplayclient) { 37 | inethandlerplayclient.a(this); 38 | } 39 | 40 | public void a(INetHandler inethandler) { 41 | this.a((INetHandlerPlayClient)inethandler); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/network/play/server/S3DPacketDisplayScoreboard.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.network.play.server; 2 | 3 | 4 | import java.io.IOException; 5 | import net.minecraft.network.INetHandler; 6 | import net.minecraft.network.Packet; 7 | import net.minecraft.network.PacketBuffer; 8 | import net.minecraft.network.play.INetHandlerPlayClient; 9 | import net.minecraft.scoreboard.ScoreObjective; 10 | 11 | 12 | public class S3DPacketDisplayScoreboard implements Packet { 13 | 14 | private int a; 15 | private String b; 16 | 17 | public S3DPacketDisplayScoreboard() {} 18 | 19 | public S3DPacketDisplayScoreboard(int i0, ScoreObjective scoreobjective) { 20 | this.a = i0; 21 | if (scoreobjective == null) { 22 | this.b = ""; 23 | } else { 24 | this.b = scoreobjective.b(); 25 | this.b = b.substring(0, Math.min(16, b.length())); // CanaryMod: make sure its not too long 26 | } 27 | 28 | } 29 | 30 | public void a(PacketBuffer packetbuffer) throws IOException { 31 | this.a = packetbuffer.readByte(); 32 | this.b = packetbuffer.c(16); 33 | } 34 | 35 | public void b(PacketBuffer packetbuffer) throws IOException { 36 | packetbuffer.writeByte(this.a); 37 | packetbuffer.a(this.b); 38 | } 39 | 40 | public void a(INetHandlerPlayClient inethandlerplayclient) { 41 | inethandlerplayclient.a(this); 42 | } 43 | 44 | public void a(INetHandler inethandler) { 45 | this.a((INetHandlerPlayClient) inethandler); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/scoreboard/ScoreDummyCriteria.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.scoreboard; 2 | 3 | import net.canarymod.api.scoreboard.CanaryScoreDummyCriteria; 4 | 5 | import java.util.List; 6 | 7 | public class ScoreDummyCriteria implements IScoreObjectiveCriteria { 8 | 9 | private final String j; 10 | protected net.canarymod.api.scoreboard.ScoreObjectiveCriteria criteria; 11 | 12 | public ScoreDummyCriteria(String s0) { 13 | this.j = s0; 14 | // CanaryMod: lets not add doubles 15 | if (!IScoreObjectiveCriteria.a.containsKey(s0)) { 16 | IScoreObjectiveCriteria.a.put(s0, this); 17 | }// 18 | // CanaryMod: Set Variable 19 | if (!(this instanceof ScoreHealthCriteria)) { 20 | criteria = new CanaryScoreDummyCriteria(this); 21 | }// 22 | } 23 | 24 | public String a() { 25 | return this.j; 26 | } 27 | 28 | public int a(List list) { 29 | return 0; 30 | } 31 | 32 | public boolean b() { 33 | return false; 34 | } 35 | 36 | public IScoreObjectiveCriteria.EnumRenderType c() { 37 | return IScoreObjectiveCriteria.EnumRenderType.INTEGER; 38 | } 39 | 40 | public net.canarymod.api.scoreboard.ScoreObjectiveCriteria getCanaryScoreObjectiveCriteria() { 41 | return this.criteria; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/scoreboard/ScoreHealthCriteria.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.scoreboard; 2 | 3 | import net.canarymod.api.scoreboard.CanaryScoreHealthCriteria; 4 | import net.minecraft.entity.player.EntityPlayer; 5 | import net.minecraft.util.MathHelper; 6 | 7 | import java.util.Iterator; 8 | import java.util.List; 9 | 10 | public class ScoreHealthCriteria extends ScoreDummyCriteria { 11 | 12 | public ScoreHealthCriteria(String s0) { 13 | super(s0); 14 | // Canarymod: set variable 15 | criteria = new CanaryScoreHealthCriteria(this);// 16 | } 17 | 18 | public int a(List list) { 19 | float f0 = 0.0F; 20 | 21 | EntityPlayer entityplayer; 22 | 23 | for (Iterator iterator = list.iterator(); iterator.hasNext(); f0 += entityplayer.bm() + entityplayer.bM()) { 24 | entityplayer = (EntityPlayer) iterator.next(); 25 | } 26 | 27 | if (list.size() > 0) { 28 | f0 /= (float) list.size(); 29 | } 30 | 31 | return MathHelper.f(f0); 32 | } 33 | 34 | public boolean b() { 35 | return true; 36 | } 37 | 38 | public IScoreObjectiveCriteria.EnumRenderType c() { 39 | return IScoreObjectiveCriteria.EnumRenderType.HEARTS; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/scoreboard/ScoreObjective.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.scoreboard; 2 | 3 | import net.canarymod.api.scoreboard.CanaryScoreObjective; 4 | 5 | public class ScoreObjective { 6 | 7 | private final Scoreboard a; 8 | private final String b; 9 | private final IScoreObjectiveCriteria c; 10 | private IScoreObjectiveCriteria.EnumRenderType d; 11 | private String e; 12 | 13 | // CanaryMod: our variables 14 | private final CanaryScoreObjective scoreObjective = new CanaryScoreObjective(this); 15 | 16 | public ScoreObjective(Scoreboard scoreboard, String s0, IScoreObjectiveCriteria iscoreobjectivecriteria) { 17 | this.a = scoreboard; 18 | this.b = s0; 19 | this.c = iscoreobjectivecriteria; 20 | this.e = s0; 21 | this.d = iscoreobjectivecriteria.c(); 22 | } 23 | 24 | public String b() { 25 | return this.b; 26 | } 27 | 28 | public IScoreObjectiveCriteria c() { 29 | return this.c; 30 | } 31 | 32 | public String d() { 33 | return this.e; 34 | } 35 | 36 | public void a(String s0) { 37 | this.e = s0; 38 | this.a.b(this); 39 | } 40 | 41 | public IScoreObjectiveCriteria.EnumRenderType e() { 42 | return this.d; 43 | } 44 | 45 | public void a(IScoreObjectiveCriteria.EnumRenderType iscoreobjectivecriteria_enumrendertype) { 46 | this.d = iscoreobjectivecriteria_enumrendertype; 47 | this.a.b(this); 48 | } 49 | 50 | // CanaryMod: getter 51 | public CanaryScoreObjective getCanaryScoreObjective() { 52 | return this.scoreObjective; 53 | } 54 | 55 | public Scoreboard getScoreboard() { 56 | return this.a; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/tileentity/TileEntityComparator.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.tileentity; 2 | 3 | import net.canarymod.api.world.blocks.CanaryComparator; 4 | import net.minecraft.nbt.NBTTagCompound; 5 | 6 | public class TileEntityComparator extends TileEntity { 7 | 8 | private int a; 9 | 10 | public TileEntityComparator() { 11 | this.complexBlock = new CanaryComparator(this); // CanaryMod: wrap tile entity 12 | } 13 | 14 | public void b(NBTTagCompound nbttagcompound) { 15 | super.b(nbttagcompound); 16 | nbttagcompound.a("OutputSignal", this.a); 17 | } 18 | 19 | public void a(NBTTagCompound nbttagcompound) { 20 | super.a(nbttagcompound); 21 | this.a = nbttagcompound.f("OutputSignal"); 22 | } 23 | 24 | public int b() { 25 | return this.a; 26 | } 27 | 28 | public void a(int i0) { 29 | this.a = i0; 30 | } 31 | 32 | // CanaryMod 33 | public CanaryComparator getCanaryComparator() { 34 | return (CanaryComparator)complexBlock; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/tileentity/TileEntityDaylightDetector.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.tileentity; 2 | 3 | import net.canarymod.api.world.blocks.CanaryDaylightDetector; 4 | import net.minecraft.block.BlockDaylightDetector; 5 | import net.minecraft.server.gui.IUpdatePlayerListBox; 6 | 7 | public class TileEntityDaylightDetector extends TileEntity implements IUpdatePlayerListBox { 8 | 9 | public TileEntityDaylightDetector() { 10 | this.complexBlock = new CanaryDaylightDetector(this); // CanaryMod: wrap tile entity 11 | } 12 | 13 | public void c() { 14 | if (this.b != null && !this.b.D && this.b.K() % 20L == 0L) { 15 | this.e = this.w(); 16 | if (this.e instanceof BlockDaylightDetector) { 17 | ((BlockDaylightDetector) this.e).d(this.b, this.c); 18 | } 19 | } 20 | } 21 | 22 | // CanaryMod 23 | public CanaryDaylightDetector getCanaryDaylightDetector() { 24 | return (CanaryDaylightDetector) complexBlock; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/tileentity/TileEntityDropper.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.tileentity; 2 | 3 | import net.canarymod.api.world.blocks.CanaryDropper; 4 | 5 | public class TileEntityDropper extends TileEntityDispenser { 6 | 7 | public TileEntityDropper() { 8 | this.complexBlock = new CanaryDropper(this); // CanaryMod: wrap tile entity 9 | } 10 | 11 | public String d_() { 12 | return this.k_() ? this.a : "container.dropper"; 13 | } 14 | 15 | public String k() { 16 | return "minecraft:dropper"; 17 | } 18 | 19 | // CanaryMod 20 | public CanaryDropper getCanaryDropper() { 21 | return (CanaryDropper)complexBlock; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/net/minecraft/world/chunk/storage/AnvilSaveHandler.java: -------------------------------------------------------------------------------- 1 | package net.minecraft.world.chunk.storage; 2 | 3 | import net.canarymod.api.world.DimensionType; 4 | import net.minecraft.nbt.NBTTagCompound; 5 | import net.minecraft.world.WorldProvider; 6 | import net.minecraft.world.storage.SaveHandler; 7 | import net.minecraft.world.storage.ThreadedFileIOBase; 8 | import net.minecraft.world.storage.WorldInfo; 9 | 10 | import java.io.File; 11 | 12 | public class AnvilSaveHandler extends SaveHandler { 13 | 14 | public AnvilSaveHandler(File file1, String s0, boolean flag0, DimensionType type) { 15 | super(file1, s0, flag0, type); 16 | } 17 | 18 | public IChunkLoader a(WorldProvider worldprovider) { 19 | // CanaryMod changed the whole thing since we have recollection of the world type we're serving. 20 | // This means we can spare us the checks for instanceof generator 21 | // And just put together the proper save path 22 | return new AnvilChunkLoader(new File(getWorldBaseDir(), getBaseName() + "/" + getBaseName() + "_" + this.type.getName())); 23 | } 24 | 25 | public void a(WorldInfo worldinfo, NBTTagCompound nbttagcompound) { 26 | worldinfo.e(19133); 27 | super.a(worldinfo, nbttagcompound); 28 | } 29 | 30 | public void a() { 31 | try { 32 | ThreadedFileIOBase.a().b(); 33 | } 34 | catch (InterruptedException interruptedexception) { 35 | interruptedexception.printStackTrace(); 36 | } 37 | 38 | RegionFileCache.a(); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/resources/assets/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CanaryModTeam/CanaryMod/d50a6ce762370e3f18e5080560971d02499cfbbc/src/main/resources/assets/favicon.png -------------------------------------------------------------------------------- /src/main/resources/log4j2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /src/test/java/net/canarymod/CanaryModTest.java: -------------------------------------------------------------------------------- 1 | package net.canarymod; 2 | 3 | import net.canarymod.api.factory.CanaryFactory; 4 | 5 | import java.lang.reflect.Constructor; 6 | import java.lang.reflect.Field; 7 | 8 | public class CanaryModTest { 9 | 10 | public static void enableInstance() throws Exception { 11 | if (Canary.instance() == null) { 12 | Constructor cm = CanaryMod.class.getDeclaredConstructor(Object.class); 13 | cm.setAccessible(true); 14 | CanaryMod canaryMod = cm.newInstance(new Object()); 15 | 16 | Field instance = Canary.class.getDeclaredField("instance"); 17 | instance.setAccessible(true); 18 | instance.set(canaryMod, canaryMod); 19 | } 20 | } 21 | 22 | public static void enableFactories() throws Exception { 23 | enableInstance(); 24 | if (Canary.factory() == null) { 25 | Field factory = Canary.class.getDeclaredField("factory"); 26 | factory.setAccessible(true); 27 | factory.set(Canary.instance(), new CanaryFactory()); 28 | } 29 | } 30 | } --------------------------------------------------------------------------------