added server sources
This commit is contained in:
25
.classpath
Normal file
25
.classpath
Normal file
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" path="src">
|
||||
<attributes>
|
||||
<attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="Minecraft Server/libraries/natives"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="lib" path="libraries/net/java/jinput/jinput/2.0.5/jinput-2.0.5.jar"/>
|
||||
<classpathentry kind="lib" path="libraries/net/java/jutils/jutils/1.0.0/jutils-1.0.0.jar"/>
|
||||
<classpathentry kind="lib" path="libraries/org/lwjgl/lwjgl/lwjgl/2.9.4-nightly-20150209/lwjgl-2.9.4-nightly-20150209.jar"/>
|
||||
<classpathentry kind="lib" path="libraries/org/lwjgl/lwjgl/lwjgl_util/2.9.4-nightly-20150209/lwjgl_util-2.9.4-nightly-20150209.jar"/>
|
||||
<classpathentry kind="lib" path="libraries/org/lwjgl/lwjgl/lwjgl-platform/2.9.4-nightly-20150209/lwjgl-platform-2.9.4-nightly-20150209.jar"/>
|
||||
<classpathentry kind="lib" path="libraries/com/paulscode/codecjorbis/20230120/codecjorbis-20230120.jar" sourcepath="libraries/com/paulscode/codecjorbis/20230120/codecjorbis-20230120-sources.jar"/>
|
||||
<classpathentry kind="lib" path="libraries/com/paulscode/codecwav/20101023/codecwav-20101023.jar" sourcepath="libraries/com/paulscode/codecwav/20101023/codecwav-20101023-sources.jar"/>
|
||||
<classpathentry kind="lib" path="libraries/com/paulscode/libraryjavasound/20101123/libraryjavasound-20101123.jar" sourcepath="libraries/com/paulscode/libraryjavasound/20101123/libraryjavasound-20101123-sources.jar"/>
|
||||
<classpathentry kind="lib" path="libraries/com/paulscode/librarylwjglopenal/20100824/librarylwjglopenal-20100824.jar" sourcepath="libraries/com/paulscode/librarylwjglopenal/20100824/librarylwjglopenal-20100824-sources.jar"/>
|
||||
<classpathentry kind="lib" path="libraries/com/paulscode/soundsystem/20120107/soundsystem-20120107.jar" sourcepath="libraries/com/paulscode/soundsystem/20120107/soundsystem-20120107-sources.jar"/>
|
||||
<classpathentry kind="lib" path="libraries/org/mcphackers/launchwrapper/1.1.3/launchwrapper-1.1.3.jar"/>
|
||||
<classpathentry kind="lib" path="libraries/org/json/json/20230311/json-20230311.jar"/>
|
||||
<classpathentry kind="lib" path="libraries/org/ow2/asm/asm/9.7/asm-9.7.jar"/>
|
||||
<classpathentry kind="lib" path="libraries/org/ow2/asm/asm-tree/9.7/asm-tree-9.7.jar"/>
|
||||
<classpathentry kind="lib" path="jars/deobfuscated.jar" sourcepath="jars/deobfuscated-source.jar"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
||||
<classpathentry kind="output" path="output"/>
|
||||
</classpath>
|
||||
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
jars/*
|
||||
reobf/*
|
||||
bin/*
|
||||
game/*
|
||||
.settings/*
|
||||
source/*
|
||||
53
.project
Normal file
53
.project
Normal file
@@ -0,0 +1,53 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>Minecraft Server</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
<linkedResources>
|
||||
<link>
|
||||
<name>libraries</name>
|
||||
<type>2</type>
|
||||
<locationURI>$%7BPARENT-1-PROJECT_LOC%7D/libraries</locationURI>
|
||||
</link>
|
||||
</linkedResources>
|
||||
<filteredResources>
|
||||
<filter>
|
||||
<id>4987547523683486455</id>
|
||||
<name></name>
|
||||
<type>9</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||
<arguments>1.0-name-matches-false-false-src</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
<filter>
|
||||
<id>4987547523683486456</id>
|
||||
<name></name>
|
||||
<type>9</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||
<arguments>1.0-name-matches-false-false-jars</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
<filter>
|
||||
<id>4987547523683486457</id>
|
||||
<name></name>
|
||||
<type>9</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||
<arguments>1.0-name-matches-false-false-source</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
</filteredResources>
|
||||
</projectDescription>
|
||||
19
Server.launch
Normal file
19
Server.launch
Normal file
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||
<listEntry value="/Minecraft Server"/>
|
||||
</listAttribute>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||
<listEntry value="4"/>
|
||||
</listAttribute>
|
||||
<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
|
||||
<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
|
||||
<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
|
||||
</listAttribute>
|
||||
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_ATTR_USE_ARGFILE" value="false"/>
|
||||
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_SHOW_CODEDETAILS_IN_EXCEPTION_MESSAGES" value="true"/>
|
||||
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="net.minecraft.server.MinecraftServer"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.MODULE_NAME" value="Minecraft Server"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="Minecraft Server"/>
|
||||
</launchConfiguration>
|
||||
444
md5/original.md5
Normal file
444
md5/original.md5
Normal file
@@ -0,0 +1,444 @@
|
||||
net/minecraft/server/MinecraftServer 74d80014ab5a052578e5f6d80f8b5308
|
||||
net/minecraft/src/NetHandler 40ed615a01ab0e2f8c0944f34219a9cb
|
||||
net/minecraft/src/EntityTrackerEntry 04ffe08c42926c1707d00b6fc50c3e52
|
||||
net/minecraft/src/NBTTagCompound e918846624599a4d37c22a1d45913866
|
||||
net/minecraft/src/MapInfo add57ad3c2b025989cb698e59191a43a
|
||||
net/minecraft/src/Packet51MapChunk 5dd881c5f2b874b748ef0648f6ee9911
|
||||
net/minecraft/src/Packet50PreChunk 1ac386d28f2d78060f5639644f166af4
|
||||
net/minecraft/src/ItemSeeds e4dc0b1d079a687de085c52836fdcdc3
|
||||
net/minecraft/src/BlockSnowBlock 06b388fcb0195f0e9f815c228667587e
|
||||
net/minecraft/src/RecipesIngots a12d26dc067f8b14a05228628d3c5a9e
|
||||
net/minecraft/src/ItemRecord 9cd0675abadb70fdaab1b8193e3b22b0
|
||||
net/minecraft/src/StatTypeTime 6c4f3d1691ce7522c719d895943875b7
|
||||
net/minecraft/src/EntityItem 1f7126bca069dddc5d5f602321202fae
|
||||
net/minecraft/src/WorldGenDungeons 48a97b5cb4fbdb0d5b59eed4cf4179a3
|
||||
net/minecraft/src/BlockButton f8695ddca3df7e61139f101f29ea7771
|
||||
net/minecraft/src/Item 34f6f24f7b9d41a89e86c6d6403924db
|
||||
net/minecraft/src/BlockSand f6a1537a6d9c5d922311f56e6c36b9fa
|
||||
net/minecraft/src/EntityFish 8808422c2a25ff3af810116dddaa34a6
|
||||
net/minecraft/src/ItemCookie ec08c7375242b8e2f660e057dc457313
|
||||
net/minecraft/src/WorldGenDeadBush 99066f99a33f0e845c97896ede9b0912
|
||||
net/minecraft/src/BlockGlass 4843b9ed50cdf01bbe284a7dda30a84f
|
||||
net/minecraft/src/BlockFence 4f8de463fcfa90c46cf002fa3feb86fb
|
||||
net/minecraft/src/Packet52MultiBlockChange a41b64bb4f97c204a7e45cb87d1a11ba
|
||||
net/minecraft/src/BlockNetherrack 37299eccabe4fa07a862418a595051b9
|
||||
net/minecraft/src/IStatType 0ea308d781b70a297eb4bb7d0371041f
|
||||
net/minecraft/src/InventoryCraftResult c6d993864aab72abe39592f6ffa95721
|
||||
net/minecraft/src/Packet38EntityStatus 5522616380c08ed5017fdd3ba2546596
|
||||
net/minecraft/src/IPlayerFileData bffe74a5386691e7a52d2bebd5254564
|
||||
net/minecraft/src/EntityWeatherEffect 095e4777d4c0cded805b53d88588517b
|
||||
net/minecraft/src/ItemRedstone 73d2244bc693df8b423a89540f042dcc
|
||||
net/minecraft/src/NoiseGenerator2 7eaa2d716964a6a94cfc37b1d5d6deb3
|
||||
net/minecraft/src/ItemBoat fa8002cabbeff36aee0ba72cf8e8c852
|
||||
net/minecraft/src/ItemMapBase ba088d195b640fbc7b7f7298a7a1e345
|
||||
net/minecraft/src/BlockFlower 6deab3e879c239a136724d53371a8d65
|
||||
net/minecraft/src/ItemStack 972fd49a1897a9da26de7db67e69db42
|
||||
net/minecraft/src/Packet71Weather d04a6b9463b0b2f4849721b600fefb8e
|
||||
net/minecraft/src/ConsoleCommandHandler 9c4dfb448a029713fa8d8cb30f18f546
|
||||
net/minecraft/src/Packet29DestroyEntity 9fe9cbb9f9a4d2ddc25cfe3bdcb0e84c
|
||||
net/minecraft/src/BlockLadder 7b00bd86fa5ec990daab2a4eb27c1997
|
||||
net/minecraft/src/EntityArrow e97ffbc2867fec32055511c4e3bfca22
|
||||
net/minecraft/src/BlockWorkbench e5fea63aef7d1726dd65d33928936ad5
|
||||
net/minecraft/src/BlockGravel 0937b3ca08c59bdbd46ae7fd26a393b1
|
||||
net/minecraft/src/BlockDeadBush 2962d4b119cec6c57f632618492a4f5c
|
||||
net/minecraft/src/WorldServerMulti 42de682bcb18e4c400d540d122e6e064
|
||||
net/minecraft/src/NoiseGenerator 6d2bf3399aaf20f9ffa2882f610bc474
|
||||
net/minecraft/src/WorldGenMinable ff31f3f811086edaa2920b9ec7458d17
|
||||
net/minecraft/src/PlayerNBTManager b42ec05be53eb5a3864f968c3b565d74
|
||||
net/minecraft/src/ItemTool 111e283c23893009d07698e45276dcb4
|
||||
net/minecraft/src/BlockSponge ec94d9a11488651f6068345ffded7bff
|
||||
net/minecraft/src/WorldGenHellLava 32cbeaceab4b29179fec5cdae6c26d21
|
||||
net/minecraft/src/TileEntityRecordPlayer be3cd0e2fdafcb4c3d33b956f2d94bc0
|
||||
net/minecraft/src/WorldGenReed d0cce2600754e1f9484039d8e5c4465f
|
||||
net/minecraft/src/BlockCrops 37fe69604dab253c8498ed387edd484b
|
||||
net/minecraft/src/EntitySkeleton 7655ed48ed34c4616d0ae5e0327ec621
|
||||
net/minecraft/src/ItemEgg 7acce4bcd7fbf73fd605fa042747668d
|
||||
net/minecraft/src/Packet60Explosion eb63e95101288453c2e568cfe3bf2652
|
||||
net/minecraft/src/BlockObsidian 944f6cf0005ba3bb6891d038e088527c
|
||||
net/minecraft/src/BlockSoulSand bfa4b1fbc3f32db4b58c810da5ce4654
|
||||
net/minecraft/src/BlockFire f0a2034d3bf8e47a67316a8cca0e5865
|
||||
net/minecraft/src/ContainerChest 2c24753e7e835ea51cc476f927ad1935
|
||||
net/minecraft/src/Packet24MobSpawn 5033400ef95b57c820e7f3913b8dfe21
|
||||
net/minecraft/src/ItemSaddle bf5929a67b8343421cdccc9d48eb2d82
|
||||
net/minecraft/src/EntityChicken a9269347c7a79fc43becd7dd33d20a49
|
||||
net/minecraft/src/StatCollector d11a606be8bc79eb58635519af74d174
|
||||
net/minecraft/src/ShapedRecipes 534000120ceadbcaa79dbba7a9ba8b33
|
||||
net/minecraft/src/ChunkProvider b346f69e17bc2a4f136a947a1f1f5d5c
|
||||
net/minecraft/src/ItemFlintAndSteel ddee391aedcd9a9410f9b0e0498163a9
|
||||
net/minecraft/src/SlotArmor 6e93c56afdc0492b67c57760e10851de
|
||||
net/minecraft/src/ItemPickaxe 2d06effc07255282ec5ea803c63cfc64
|
||||
net/minecraft/src/StringTranslate a6538cfe5a6eca8f9d521f81288b19f5
|
||||
net/minecraft/src/BlockStationary d1b77f31fb9c8a8e1be5e6cb6b57686b
|
||||
net/minecraft/src/ItemAxe c5118d998081a55fd662168725a1f42c
|
||||
net/minecraft/src/BlockSapling 3ae5a6a11e63ee9308dd10ebaa8d2d83
|
||||
net/minecraft/src/Packet18Animation 57da88f529ffae6ae24ef0c627857e48
|
||||
net/minecraft/src/WorldGenCactus 4a1ba44a035a99cccca3e94e20cc3c26
|
||||
net/minecraft/src/EntityGhast 101f6b9ff5e5ebef85409653548a5b3e
|
||||
net/minecraft/src/ItemSword e01eeab2bb830f4d53d1353ff54eab66
|
||||
net/minecraft/src/EntityList 1c38585f970bab76bba7cb9ce0f9f66a
|
||||
net/minecraft/src/EntitySlime 1a7c3b9981b9e17c5b8894d98ca18ae9
|
||||
net/minecraft/src/SaveOldDir 7953cd67fffd4117e3f6a5a0d4703d2e
|
||||
net/minecraft/src/Packet25EntityPainting 5a031244e0c41bc94b3f22b25721a0ad
|
||||
net/minecraft/src/RegionFileCache e8158eb715dd0a9c557845ea8d230e92
|
||||
net/minecraft/src/Packet28EntityVelocity 39209513acf4f4a5953870625a8a5da1
|
||||
net/minecraft/src/EntityGiantZombie 140abdc2cb03550b3db55c441ca9db44
|
||||
net/minecraft/src/TileEntityPiston 677f07988250b10949f7e256edf591be
|
||||
net/minecraft/src/EntityLightningBolt 3ae8527b8aada92a8337dc76ed97498f
|
||||
net/minecraft/src/WorldProviderSky 81dfe2b5f969f6aaa52139af139dc3e2
|
||||
net/minecraft/src/EntitySquid f62844986cdf2d45d59d3f940d9b389a
|
||||
net/minecraft/src/StatList 34e513f0d25b0a2c4e732debbbca448e
|
||||
net/minecraft/src/DataWatcher 97b8e045ba3270b520ccb62499861a70
|
||||
net/minecraft/src/ISaveHandler d9fa202f71549aa69586b92e1fc58031
|
||||
net/minecraft/src/Packet19EntityAction 044c22fa918576e7b175fdebf474cc1a
|
||||
net/minecraft/src/MapColor a46e6ee19a079e947ce091006a3a9cb5
|
||||
net/minecraft/src/NetLoginHandler 91793e4ccde755281d7cf0d376c6ac4a
|
||||
net/minecraft/src/NBTTagLong 8078672f86016518857a83da24aad04b
|
||||
net/minecraft/src/ChatAllowedCharacters 2e9a20d13e7625d46fe217ff02aceb04
|
||||
net/minecraft/src/RecipesTools 8a194856553330361595c00bc543fcb9
|
||||
net/minecraft/src/WorldManager 5b0966bb5a96b209f141741ba59a2a6f
|
||||
net/minecraft/src/NetServerHandler 9923832a9a608970cbe31e9e59db9927
|
||||
net/minecraft/src/Packet9Respawn 2ded295830357b3b4f5178140d133cd6
|
||||
net/minecraft/src/Packet8UpdateHealth e86226c3d8493751921f54039e2701c8
|
||||
net/minecraft/src/BlockGlowStone 2125eaf93a3d1ea980d3c0da108daf99
|
||||
net/minecraft/src/Packet14BlockDig ab6dedaced50a24ac7ed857458706458
|
||||
net/minecraft/src/RecipesFood 3312935c257073b73fb45d37f37aca3d
|
||||
net/minecraft/src/Packet11PlayerPosition 68ca78add786707e5f307e6407c476d5
|
||||
net/minecraft/src/EnumArt 037b750b9755b52869968a6a96070cf4
|
||||
net/minecraft/src/StatCrafting 79728305e54b5618a47dbec57ca03dcf
|
||||
net/minecraft/src/Packet10Flying 93a54ab2f0ac8b3d0bef816056add9c7
|
||||
net/minecraft/src/BiomeGenForest 815d03e409886e1ad2f32c30ce6946e4
|
||||
net/minecraft/src/WorldGenTaiga2 c020322429552fd059bab47238771222
|
||||
net/minecraft/src/StepSoundStone d92f03abbb75382c50fecdbcd2e2027f
|
||||
net/minecraft/src/ThreadSleepForever 56004aa8f7c49d024b09f9dff934f7f5
|
||||
net/minecraft/src/NoiseGeneratorPerlin 3d9f20020de8bb5b8cdc3c6266c74e28
|
||||
net/minecraft/src/EnumSkyBlock 38634316fbc69daba023b08e5199fd0e
|
||||
net/minecraft/src/BlockLeaves 21ec3e5a42eef1e7e736379a254246a5
|
||||
net/minecraft/src/GuiLogOutputHandler d3e9d0be10752acfdf714a0dadc39566
|
||||
net/minecraft/src/EnumMobType 67f79e9368e7d1c55409aafcc9e53afb
|
||||
net/minecraft/src/SpawnerAnimals b4ddaa9311ff8bbdf85c384e0fff9656
|
||||
net/minecraft/src/BlockRedstoneRepeater 558caaf7dc6748dd8b457b6ea586d82a
|
||||
net/minecraft/src/EntityCreature 83fadfd2ebae5459bff33519fe23d273
|
||||
net/minecraft/src/Teleporter 1121cd37016d7009d4b01d2119a47783
|
||||
net/minecraft/src/ServerGuiFocusAdapter 9edf201469d6e68b413e7aa7ce99d469
|
||||
net/minecraft/src/ChunkProviderHell 8d53d7fe8b5301643f9ee699d46f51f4
|
||||
net/minecraft/src/ItemArmor 8c2f832af3ecff2e1d96897f3ae93a65
|
||||
net/minecraft/src/BlockPortal 96106bdc169ee09a86e1a336a1cd228d
|
||||
net/minecraft/src/EntityMob eb2c35873a3424ba9014d88ad8d0908f
|
||||
net/minecraft/src/EntitySnowball 6ce92f55455c6e3ddb631bfb543fcf8f
|
||||
net/minecraft/src/ContainerWorkbench 4b675b49107f05c6d3004cf000f79718
|
||||
net/minecraft/src/Packet30Entity 353f6a40277eba3ecf48231fc8588a93
|
||||
net/minecraft/src/Packet100OpenWindow 7abdf4fc0c92c2c7d7d6c9aa86859e73
|
||||
net/minecraft/src/BlockLeavesBase f889a97ca1d1ca7abb0d99bd1a0ac200
|
||||
net/minecraft/src/ServerConfigurationManager 1b49b9d22ef96a1632c4e3792f63d9a6
|
||||
net/minecraft/src/BiomeGenRainforest 5c89f828263f90a9358db8d9c2e5b261
|
||||
net/minecraft/src/ChunkCoordinates 09d1ca071d80b8b3f74991c497cff1af
|
||||
net/minecraft/src/EntityPlayerMP 6341d4d408922277e9ce5564bf1e29ed
|
||||
net/minecraft/src/WorldGenGlowStone1 e43a197df4a789854d7c177c4180c1ec
|
||||
net/minecraft/src/BlockIce c28a30b5c038bf3458fef24fcc64c605
|
||||
net/minecraft/src/ConvertProgressUpdater 488043ac1fe80e79a5ebf2c805b7b943
|
||||
net/minecraft/src/WorldGenTaiga1 340a5746875839fd4d4ced5897258d36
|
||||
net/minecraft/src/ItemBucket bff304e62d3406a30af7c5f806f241de
|
||||
net/minecraft/src/BiomeGenSky ada8820a5c638acc9349bc17a6903789
|
||||
net/minecraft/src/WorldProviderHell d657e0112b3f6c5806407f21d1f34228
|
||||
net/minecraft/src/BlockJukeBox 90fe966d582e1ce17027ffe47296d8ca
|
||||
net/minecraft/src/BlockTorch ce6b4d1bca2b306a29896844fcf6eca4
|
||||
net/minecraft/src/Packet5PlayerInventory 7effe05dff280b8b79db267bf9ee4024
|
||||
net/minecraft/src/NBTTagByte 21e1b9ffee3aa3df48250cca489d74e3
|
||||
net/minecraft/src/TileEntity dbb58e958772f7dd203ebde1c6469026
|
||||
net/minecraft/src/ItemReed f7f021e111b08c51eb1f2d94a3c1cfb8
|
||||
net/minecraft/src/BlockCactus 67aff0b4b543d5b0a5f8e73e0d03f588
|
||||
net/minecraft/src/BlockCloth 240d281fc0a45b85e1559360df0a4a43
|
||||
net/minecraft/src/BlockChest fa2b96ea6fe0182b589e2a615598bae7
|
||||
net/minecraft/src/Packet40EntityMetadata 68d1250f7bd5a4d362dbffeb06c1fbbe
|
||||
net/minecraft/src/Pathfinder 70c8f03c50c9c29b4d486b2556b97c55
|
||||
net/minecraft/src/Material 2710c2823f32225484953518ff2bf746
|
||||
net/minecraft/src/ItemBlock 4de88ff9452ce1cd8d2378da7d5d265d
|
||||
net/minecraft/src/EmptyChunk 1d204abb85c9b2a73a40ba1c65980af1
|
||||
net/minecraft/src/BlockClay eed57fa621e9ef9a020a1a4e65494917
|
||||
net/minecraft/src/Packet0KeepAlive e1b8b926088f54d3ded322be2c13057f
|
||||
net/minecraft/src/SpawnListEntry 6023402ef474458a6c8ecc6af9eef3fb
|
||||
net/minecraft/src/BiomeGenTaiga f72c6701356378cdde7d395f564ed36b
|
||||
net/minecraft/src/TileEntityMobSpawner 178cde41c442b64c790f7bf7ae21d791
|
||||
net/minecraft/src/EntityPlayer a7e5c213dbf34db6c1def63b66edf668
|
||||
net/minecraft/src/Packet105UpdateProgressbar 09d78ca137346cce8ec7ee8d0e0335a4
|
||||
net/minecraft/src/EntityPainting 522f940790cd4e8f72b44570edd155b4
|
||||
net/minecraft/src/ChunkBlockMap 10dabba68497413b2efb0150a32bf97c
|
||||
net/minecraft/src/Packet53BlockChange 76cb4d8c902486df2d7dc7e83aa8ae8d
|
||||
net/minecraft/src/MaterialTransparent d4f7d25305ae17163e3580d4caca2741
|
||||
net/minecraft/src/WorldChunkManagerHell 6c8ee8367420537c610886e67b6516fb
|
||||
net/minecraft/src/BlockRedstoneTorch 0eb30fc521315655b888d8b965a37bf9
|
||||
net/minecraft/src/NibbleArray 6f2dabe0967d3b3c0dd9bceacfdf7612
|
||||
net/minecraft/src/BlockPumpkin 603d485235729ff409c6cb2e7b47fe97
|
||||
net/minecraft/src/Packet2Handshake 34b693e16f7a73b8637205b9a4506ff2
|
||||
net/minecraft/src/ItemSapling 55687c81a656b9527da46d1d599d1328
|
||||
net/minecraft/src/NBTTagShort dee6dc2f08cc9cd72fc4c929e91dd0af
|
||||
net/minecraft/src/WorldProvider 049b829c14d1c26abc9d751ab89a38e4
|
||||
net/minecraft/src/StepSoundSand 044559e1a5f7e7ec6e28a752e93bfbcc
|
||||
net/minecraft/src/RegionFileChunkBuffer d1355a851f5663dea8085db0259818f4
|
||||
net/minecraft/src/Packet54PlayNoteBlock 7c0e75026cd5cb4dc20e3a7353267d85
|
||||
net/minecraft/src/BlockFlowing 793b4325414dd0304d9179c40fcc0033
|
||||
net/minecraft/src/MetadataChunkBlock 563ca3860667fc29601e4267192d0642
|
||||
net/minecraft/src/BlockRedstoneOre 64492866bf9dfbaec25537896616c20d
|
||||
net/minecraft/src/WorldGenLakes cfe858af9b96029c9bc2b7e99030bc46
|
||||
net/minecraft/src/RecipesArmor 8e9119537a30f343ab3b441f87529bf4
|
||||
net/minecraft/src/Packet13PlayerLookMove 300dbca74a54f2e881d67bd844328903
|
||||
net/minecraft/src/ThreadMonitorConnection 8b5e8c33e78ca88b93c6498b1077833c
|
||||
net/minecraft/src/BlockStairs 45507d2d4ed009751355a1bbc0b9a6d8
|
||||
net/minecraft/src/InventoryLargeChest 508ae717f17a20585fc665b8368140ab
|
||||
net/minecraft/src/BlockPistonMoving d19249fe7ac4edf68f4618fb9460183b
|
||||
net/minecraft/src/ItemBow b6ff84d0ef91604ec3186876b8be28e3
|
||||
net/minecraft/src/BlockLever 47549d48f2d7a91f17cee0baa2e5518c
|
||||
net/minecraft/src/IChunkProvider 462d28bab39e9234cd76e04ed3b128c1
|
||||
net/minecraft/src/ChunkFolderPattern 299abd70eb724e34184547b32b68647a
|
||||
net/minecraft/src/ModelBed 7c156e69a91fee263dcf3e45f11ed511
|
||||
net/minecraft/src/BlockSnow 4ea1c73b2cf9ff9cdeda546aeac1d813
|
||||
net/minecraft/src/WorldProviderSurface 80194b9126f3ab0e33665f0f63595bcd
|
||||
net/minecraft/src/BlockNote 77572b9e6147c1687cf898a732daf583
|
||||
net/minecraft/src/ItemBed 21336562b2b5eff990ba325ccd9e5182
|
||||
net/minecraft/src/BlockFurnace 2b13cf62393cb190f128c121e0f96ecb
|
||||
net/minecraft/src/EntityEgg 17f531f2eadc58907c7308e64588af97
|
||||
net/minecraft/src/EntityZombie e1cd8500b318d2b01061fa4db5e1361f
|
||||
net/minecraft/src/BlockFluid ac3e55269adb44604f6131ba5ef974ac
|
||||
net/minecraft/src/RecipesCrafting c55919f59490d4000433effdb5ef7b43
|
||||
net/minecraft/src/ItemCloth 10b9f89ae364c11b8937c272de34d843
|
||||
net/minecraft/src/MapData ec966b779a8573a5ebdb713448c295e3
|
||||
net/minecraft/src/PlayerHash 398e7ac8afaf68ac34f93b4470cf69fa
|
||||
net/minecraft/src/StatTypeDistance aab37c1ba1979564e958bd5957bb1765
|
||||
net/minecraft/src/NetworkManager 6bb2fbc659ce72fde0288c6ca49c261f
|
||||
net/minecraft/src/Packet104WindowItems bf067ec272825ced18f6be5dc8cc037b
|
||||
net/minecraft/src/EntityCow 7645ca02bdd2d37e41823c566b38b7e5
|
||||
net/minecraft/src/NetworkListenThread 6336425f1d33f26b491df954d86e4c90
|
||||
net/minecraft/src/StepSound 92828411ad72a09b4fc1eadb230d8cef
|
||||
net/minecraft/src/EntityWaterMob c555b29c25d4620e2abbb6e75c6ed9fe
|
||||
net/minecraft/src/FurnaceRecipes 0e833ddad4a31c268487ac5bbdc62ac2
|
||||
net/minecraft/src/Packet31RelEntityMove c25167d6d754cdbf101fbcbb4cfd9c1a
|
||||
net/minecraft/src/EnumStatus 94370329d0deb03f8f512fb69fa0b33e
|
||||
net/minecraft/src/BlockRail cdefd0b80fce2cfbe90c305e6e73513e
|
||||
net/minecraft/src/ItemHoe 7f73dd0f1f6f1a0d87388cfbe1a1a7db
|
||||
net/minecraft/src/MinecraftException c3e6d9e46c9f44513f74c73f08961284
|
||||
net/minecraft/src/IBlockAccess 28daf83a499aeb4adad9e78333297a68
|
||||
net/minecraft/src/BlockOre a95ade73582cba9443ec56bc7f4d0f88
|
||||
net/minecraft/src/ItemSpade 5d085a457b974f352a8682c0fa5e9937
|
||||
net/minecraft/src/EntityPigZombie aa5fed719ab96f1a0c98d61a45708d70
|
||||
net/minecraft/src/WorldGenTallGrass cd05c015fdbc936b6caa0196a1f5dee8
|
||||
net/minecraft/src/Empty1 db272f9d7f397ac3b23513dbb8763491
|
||||
net/minecraft/src/Packet101CloseWindow c3b4af884ebfe55a25153b3efc048e6b
|
||||
net/minecraft/src/NBTTagList 400f104153da8eef33c3d00c42e99279
|
||||
net/minecraft/src/World 9826745c1468b3d79fa0c7595fb0bea9
|
||||
net/minecraft/src/SlotCrafting be2df3111d32960936f0d6bebdca2468
|
||||
net/minecraft/src/SaveFormatOld 9c5255d695d46793c11f258f4db92ae5
|
||||
net/minecraft/src/BiomeGenDesert 4241a980c3580942acb25134db7c903e
|
||||
net/minecraft/src/RecipeSorter 0668121810e8aaffe64ff73d6feb029b
|
||||
net/minecraft/src/BlockGrass 8d3d37bdf51a7d181313907e91fe921d
|
||||
net/minecraft/src/ItemCoal 981354d07accf82862c56b859b2b820c
|
||||
net/minecraft/src/MapStorage 2cb9c00fd470b949565e3825e2c66cb7
|
||||
net/minecraft/src/BlockReed cf86304f38e8c7af264f7a15f3a2378c
|
||||
net/minecraft/src/Slot 4bc198e06fc4a19d716d618f22b3c5f8
|
||||
net/minecraft/src/Packet23VehicleSpawn 3dae4e8c0e2cee2505f3b7a4062f9231
|
||||
net/minecraft/src/CraftingManager 8d2a8f20756020d436a5ef0c6f8408a3
|
||||
net/minecraft/src/StatBasic 7aab3c9669a2d16349e48f9ba376ceef
|
||||
net/minecraft/src/ItemSign d4cb636b555f7b5489a7ab2fc77cb91a
|
||||
net/minecraft/src/AchievementMap 5872a831675da4bcf041a75b60e2316d
|
||||
net/minecraft/src/EnumMovingObjectType 8d4b48ef2246e76010a49e1c0911a41a
|
||||
net/minecraft/src/InventoryPlayer 7e0661c279a77a453e1da2bf872ce829
|
||||
net/minecraft/src/ConsoleLogManager 0874e8602f114ed8125c8d3be5c98499
|
||||
net/minecraft/src/MaterialPortal e70116cba3a54a9089bd1d12e9c52d8f
|
||||
net/minecraft/src/IMob c225c3ab684ad2f3484ca3f15620e442
|
||||
net/minecraft/src/ServerCommand 5de584163da0f9488503ff36c2ae329f
|
||||
net/minecraft/src/Explosion e5b228475147d138125b27dd2528d841
|
||||
net/minecraft/src/NetworkAcceptThread f8f34049eccaf2f625c97743757c358d
|
||||
net/minecraft/src/EntityWolf 57e5e6a065282221981970dbda32bb90
|
||||
net/minecraft/src/Chunk e497278caba268dfec6b42ba378648af
|
||||
net/minecraft/src/MapCoord 48bb4b751e3db510893d0e2c09019556
|
||||
net/minecraft/src/PistonBlockTextures fa3af94ecf05879b6e467c2491cd4c10
|
||||
net/minecraft/src/GuiLogFormatter 153109dbcec984de82a5e4362c5e4bab
|
||||
net/minecraft/src/Packet6SpawnPosition c76cb0b9440bd58e0a2789df068612fc
|
||||
net/minecraft/src/ItemFishingRod 6447ccd58214f1b61873a6c4ac216d8c
|
||||
net/minecraft/src/NBTTagEnd 0a6903b0dc523806101334c8ec3f2e5e
|
||||
net/minecraft/src/IChunkLoader 95d9df8b2ef39c475216e9fb62a7f7e2
|
||||
net/minecraft/src/EntityFlying b45f45fe8db8f7a57a27718f910099a6
|
||||
net/minecraft/src/BlockSandStone 19a023f50ee3e52583279a9c33f87175
|
||||
net/minecraft/src/MapGenBase 03d771ba78f385bdb29b5dd1fe09ea89
|
||||
net/minecraft/src/WatchableObject 3add3b1d3bbb4178de0d1a577204903b
|
||||
net/minecraft/src/Packet22Collect 522462598127b3f236799b4fa81c2656
|
||||
net/minecraft/src/BlockBreakable 7e43d81fe89e3245bfb2036097e8e65c
|
||||
net/minecraft/src/Packet103SetSlot 698c72b9237a904a0032fd26db8723ab
|
||||
net/minecraft/src/Packet70Bed 78bcc3f8b7e286d0ca41bcd19df29410
|
||||
net/minecraft/src/BiomeGenHell 60a84555157cd641f1960119f5e01f72
|
||||
net/minecraft/src/WorldGenBigTree c2bd9a46e1d339bd93c69effc90df832
|
||||
net/minecraft/src/ItemInWorldManager 9091affa1aa51151e860534b7456e8de
|
||||
net/minecraft/src/EntityMinecart 20bd1f6e4e07f76552813f0e3f05312a
|
||||
net/minecraft/src/Block 38231734438b754b2f8553be6354bc91
|
||||
net/minecraft/src/WorldGenPumpkin 85b094f999be367c167302951bf1c0c7
|
||||
net/minecraft/src/PlayerListBox 0d4b98438a5f4e7c381163b84369b609
|
||||
net/minecraft/src/ThreadServerApplication 73e63656103a6784ac5662a41b9520f7
|
||||
net/minecraft/src/IAnimals 2c2c661355a508a7eb33e651aaddada9
|
||||
net/minecraft/src/BlockTrapDoor cb291f23b4d6caa909b1b9239e0eb445
|
||||
net/minecraft/src/BlockBed c441687b9924c0dc8370f9bde289bfe5
|
||||
net/minecraft/src/TileEntityDispenser d015335823005d56b7e5d87e4940e3ff
|
||||
net/minecraft/src/BlockFarmland 09f465c90034630e169a935948eccda0
|
||||
net/minecraft/src/ItemSlab f8a9d42b4cc27176a84ed267d3d595ee
|
||||
net/minecraft/src/BlockWeb 28c55d9919a7e0de491c5178323c7e45
|
||||
net/minecraft/src/ChunkCache 981c611c9afa78c0d62dc979e866d018
|
||||
net/minecraft/src/Packet131MapData dca0968cdc7a242d27897555f54816aa
|
||||
net/minecraft/src/ThreadLoginVerifier 12379ab25fdb7734b5fd9e346454eb94
|
||||
net/minecraft/src/MCHash 95d97b2755a6871fde2231ac84adc1d8
|
||||
net/minecraft/src/WorldGenTrees 8ce58d3f194e3be8a847a8ec55cf84de
|
||||
net/minecraft/src/ChunkFilePattern 77a1c67d2b6d281d75d70f5997f9aaf3
|
||||
net/minecraft/src/RecipesDyes 941a8a4e61c35de7235373adbaa1fea8
|
||||
net/minecraft/src/Packet12PlayerLook b01b8e9b5aab27b7ec728b7e57065f87
|
||||
net/minecraft/src/Path 09baca2dca3abaa3d1a9342b3c0793c1
|
||||
net/minecraft/src/EnumCreatureType d1593b3e0e7f135829828630519c746d
|
||||
net/minecraft/src/ServerGUI 047d76510293c582f445396ea9cd9235
|
||||
net/minecraft/src/PropertyManager 3c78d9f9ef15b3f853f8e30cb32ab820
|
||||
net/minecraft/src/NBTTagInt 01704968601ac82acdf618b8a6c6714d
|
||||
net/minecraft/src/ItemShears 14d4dd76774cf239cd92f56a3a502ae4
|
||||
net/minecraft/src/WorldGenGlowStone2 33d652bb8716136e558633b4f42efd10
|
||||
net/minecraft/src/ItemDye 64664e748b9ed8624b1a5830e6dc2ee8
|
||||
net/minecraft/src/EntityBoat 31d16a1ff30588fb16327d803f788025
|
||||
net/minecraft/src/AxisAlignedBB df75da4bbadad4ac48d8e18df54bcdd1
|
||||
net/minecraft/src/ISaveFormat 53a328e3679205cb3ab1300b7c1fa590
|
||||
net/minecraft/src/IRecipe 1f61e06883db800d6314a2646a2bbb85
|
||||
net/minecraft/src/BlockLockedChest d67713d98657ff9ccb19b060f798d380
|
||||
net/minecraft/src/ChunkFile 1d4047b231a9d31adf349710171ddf6b
|
||||
net/minecraft/src/MCHashEntry 2519f16eb3d418b58555f9b9d99a9171
|
||||
net/minecraft/src/TileEntitySign 6dee393edf9aadd9073d59d5ecfa3b89
|
||||
net/minecraft/src/WorldGenClay edce6c9d407a6c58925b55849c856990
|
||||
net/minecraft/src/WorldGenLiquids 51499a363668be332e218df573b7163a
|
||||
net/minecraft/src/MaterialLogic c1920129f2fc4baca9e95b1619b8a58f
|
||||
net/minecraft/src/StatTypeSimple 345fc14c020c2e4a49d916303ed717cb
|
||||
net/minecraft/src/ICrafting 9dc61bef961fb0f21bdc0953d277487a
|
||||
net/minecraft/src/Packet3Chat 62615b832ec23d280db210786a06c0c4
|
||||
net/minecraft/src/EnumToolMaterial 3e3aca86258b899d9bad6c6b2e61a6da
|
||||
net/minecraft/src/ServerGuiCommandListener 6c29a50e9b3c1c9ca9151e8225cb7049
|
||||
net/minecraft/src/BlockDispenser 2823176f60ccb0f27a37f0b45764f64a
|
||||
net/minecraft/src/ItemFood bbd6bed981b03483ce2a736daaf789a4
|
||||
net/minecraft/src/BlockTNT 169d6e0817ba84ba43b6c1e597924dca
|
||||
net/minecraft/src/IInventory d641e7d430cbd2f0861d4a984a74d3dc
|
||||
net/minecraft/src/Packet102WindowClick c7cd2e130d17599ef4e38d9adceba0aa
|
||||
net/minecraft/src/MapDataBase c4a7cf88bf92e07806814a27b5dbffca
|
||||
net/minecraft/src/NetworkMasterThread 4a4c0ff68bc41647effe3a5914f77f39
|
||||
net/minecraft/src/ItemMinecart 5cff6c774a09b7d02ae32d84953e266c
|
||||
net/minecraft/src/EntityFallingSand a6294392b134ec37af045ce29552cb42
|
||||
net/minecraft/src/PathEntity 19df165f53b4282f2328b1f2fe1c86d3
|
||||
net/minecraft/src/MaterialLiquid 3a205dc59fbf293e7452b335d04d0e34
|
||||
net/minecraft/src/ContainerDispenser 03d4362c1cfc412b126a51f98c8adf6e
|
||||
net/minecraft/src/NBTTagByteArray 8004b8fb3badc6979c10bec186f61877
|
||||
net/minecraft/src/EntitySheep 1553247ae611a045dcd4f8200e6aa500
|
||||
net/minecraft/src/Packet21PickupSpawn 24b184d27d724eb89d3db0f5b745a352
|
||||
net/minecraft/src/WorldChunkManager ab646383d78122d6b88dc882fcd1467a
|
||||
net/minecraft/src/BlockDoor ef2758f28508a93de9b5a033d1851e34
|
||||
net/minecraft/src/ChunkPosition d5a550d6183ffae16008fa8c0d07b1ab
|
||||
net/minecraft/src/Packet106Transaction 8e4acd0aca89302767c7a25674cf6900
|
||||
net/minecraft/src/Empty2 a1329471bacf0c7a0653682ae3fd876a
|
||||
net/minecraft/src/EntityLiving b6f39b279f2b95ca373c8f590e169154
|
||||
net/minecraft/src/NetworkReaderThread eeab9a4bae737a213d20393e0a453d62
|
||||
net/minecraft/src/Packet39AttachEntity 95d6b6f7b16df6265c0f1e30ab79118d
|
||||
net/minecraft/src/RailLogic 47d69aec44f95a1c0ab8e7e5deaa9155
|
||||
net/minecraft/src/BlockTallGrass b51886f6a356f4cbc69f50ec05cadc93
|
||||
net/minecraft/src/Packet20NamedEntitySpawn 2d37bffd5dd11d965d397078cbe6875e
|
||||
net/minecraft/src/BlockContainer 13327f8853cf5ccd8798000c943853ad
|
||||
net/minecraft/src/Packet200Statistic af1abae5b8a8976bb96acbd73afde586
|
||||
net/minecraft/src/CompressedStreamTools 45a47def53c36248dd1f4c830406f5b5
|
||||
net/minecraft/src/Packet61DoorChange 41eeb3273931015b7417ca3542fc0320
|
||||
net/minecraft/src/IWorldAccess 2551bcf3c20341d23a59b24c3b083323
|
||||
net/minecraft/src/PacketCounter f45a6ef5a39cf58951daaa9770591b86
|
||||
net/minecraft/src/ShapelessRecipes 440501a4b894ce39fe97b884b29341b0
|
||||
net/minecraft/src/StatBase cd806f9f715b2475a5cd08fa3983ba21
|
||||
net/minecraft/src/MapGenCaves 8f5f36c1d9f0857c0f3e4b5a4929e48b
|
||||
net/minecraft/src/BlockSign 8e93f40fda9de3d180c53e4aaeb24059
|
||||
net/minecraft/src/ItemPainting 048eab0de1f0d7012f3126e622ee59ea
|
||||
net/minecraft/src/EntityCreeper 6e31bbd5f3372e5d71b98e5325eb2400
|
||||
net/minecraft/src/ChunkLoader 5cd60c89e049dda1884b2ec8380a30a5
|
||||
net/minecraft/src/ChunkProviderSky f972ceb78827746600092cd3426ec4f1
|
||||
net/minecraft/src/EntityTracker 1d3c29154d1cb53c5ea15e48e597d49d
|
||||
net/minecraft/src/WorldGenFire d91859ead03dc64f3133fc25c945b878
|
||||
net/minecraft/src/ItemLeaves bd944e2ba03ac918e5fd7253da963125
|
||||
net/minecraft/src/BlockMushroom 5d11502c16452b8afc0a8e44de213bc9
|
||||
net/minecraft/src/Packet32EntityLook 04194a7867f5ec93ccce840eed49990d
|
||||
net/minecraft/src/IProgressUpdate 7b1a8934f746a23e1d06a7ecf09dc9af
|
||||
net/minecraft/src/MapGenCavesHell 9529a054c1c82bce779ae2db83962bac
|
||||
net/minecraft/src/BlockStep 534705b35dc20faca032deddbe42670f
|
||||
net/minecraft/src/EntityFireball a2be2e18678e65c958f2dcfd149b65bc
|
||||
net/minecraft/src/BlockPistonExtension 30c2dbb27e06a0520896572044ac7720
|
||||
net/minecraft/src/BiomeGenBase 539f66eec1b4036b1bc907a5682a6c4d
|
||||
net/minecraft/src/ItemPiston 81972e71ac79be58fa455e398297d6e6
|
||||
net/minecraft/src/BlockMobSpawner 43e2c03b1519f8597ee09a12d1d4e2a6
|
||||
net/minecraft/src/Packet17Sleep 67a5efd300629bc661d388161cc188af
|
||||
net/minecraft/src/WorldInfo f9fd7bcb79f549b8167e0b25a2135795
|
||||
net/minecraft/src/AchievementList d30045fe7ded1a2b3eef79cfc4989943
|
||||
net/minecraft/src/BlockDetectorRail 53188f6ed41ad518c89405fb452c9953
|
||||
net/minecraft/src/ItemSnowball 4dc9f8865790f9deb6602cf9917fd4bd
|
||||
net/minecraft/src/Entity 628454604c7c5b6d73ffcfc81cfeb11a
|
||||
net/minecraft/src/NoiseGeneratorOctaves2 25fbfbca85cfadcfc9294aac2a14fa2f
|
||||
net/minecraft/src/Packet b066a816f409c9120135ada192020c89
|
||||
net/minecraft/src/ItemMap 0e93611394e65fc6a0ae216fc52063ec
|
||||
net/minecraft/src/EntityTNTPrimed 58d3f8f768d3ae73f99e33d119d8081d
|
||||
net/minecraft/src/Packet7UseEntity 2dde217178141ec4a02b24ce25ded1d4
|
||||
net/minecraft/src/BlockPressurePlate 5c331a3deb97b1399ecb95192198b8e3
|
||||
net/minecraft/src/PlayerInstance 36a875cc4f0813a7db6513d82c630845
|
||||
net/minecraft/src/Packet15Place c7a3ecf7aa3b71a7549ee300651bb1c9
|
||||
net/minecraft/src/GuiStatsComponent b34730e63af1265f9d6b62c49aba4ce3
|
||||
net/minecraft/src/ChunkProviderServer c526c5fff1d78388387f22683409323f
|
||||
net/minecraft/src/EntityPig 13212973f2448e4ce7b5453e70efc7d1
|
||||
net/minecraft/src/RecipesWeapons 09fd9927d705a543265dd9cdbdff9838
|
||||
net/minecraft/src/PlayerHashEntry 6592d6d96bdf481704c93ae98af8c469
|
||||
net/minecraft/src/NBTTagDouble bf77bf257cedd9751f16bf57ea503c47
|
||||
net/minecraft/src/McRegionChunkLoader 222b3081036653931e380e61286af752
|
||||
net/minecraft/src/Packet130UpdateSign f2f4a25042c6d68c8d03302ead2b5e75
|
||||
net/minecraft/src/Packet1Login dc46a4003f429bfa9bd389094d8764e9
|
||||
net/minecraft/src/WorldServer f1d47d3e22b772ba423dc1e918f06610
|
||||
net/minecraft/src/EntitySpider 7dccd3779c2d57ebc5b421a6a4caaa31
|
||||
net/minecraft/src/PathPoint 079bf47a409d52c21a331854aaba72b9
|
||||
net/minecraft/src/MathHelper 79c45f59b6b99baf7b4188c8d609c43a
|
||||
net/minecraft/src/PlayerManager bf7e36e37f1eb53434701a4b8df1126a
|
||||
net/minecraft/src/ThreadCommandReader fe54ec84c54651451ef70de98fd0154d
|
||||
net/minecraft/src/NextTickListEntry 6ac1f01c2b37d67070efeb0dd0bcbcf3
|
||||
net/minecraft/src/TileEntityFurnace 85c36f15ffafc27d6a5240d90777aff6
|
||||
net/minecraft/src/RedstoneUpdateInfo 4c19faa3c89e83989071313f60beeace
|
||||
net/minecraft/src/BlockDirt 7306c0210187b89ad56e1204e1cf4a20
|
||||
net/minecraft/src/Packet4UpdateTime 7feefb9c4c02991dfd0dd1b8ae96b094
|
||||
net/minecraft/src/ItemDoor 0c3a0b9aba1eb3fff598933fe1483de1
|
||||
net/minecraft/src/RegionFile 8912536e07b3b24db0d6cf0e2e48f613
|
||||
net/minecraft/src/Achievement 742b820d3d75169f5761607839dbe807
|
||||
net/minecraft/src/Packet255KickDisconnect 716a99fc626f81bc64f852ae5c2bde80
|
||||
net/minecraft/src/ContainerFurnace 6e36639c318e728894cf42a7e804e450
|
||||
net/minecraft/src/Packet16BlockItemSwitch 88fb7b1df8fa6993598f44ac4d45059b
|
||||
net/minecraft/src/TileEntityChest 8639e44edd5e069e91c64af595b1360d
|
||||
net/minecraft/src/SaveConverterMcRegion 32d3d6661c42424114c9eee842e1e0f3
|
||||
net/minecraft/src/BlockRedstoneWire 8e34b7c987b9d9ff47922598f043e0b1
|
||||
net/minecraft/src/WorldGenerator 4a639f3f6bb27b7b6d4bd1516c010a36
|
||||
net/minecraft/src/NBTTagFloat 9ea39302525393a03ddb739f8cc9ca17
|
||||
net/minecraft/src/ItemLog 63dee1236da777be7195cf8953acf1c9
|
||||
net/minecraft/src/ICommandListener 638af8fe506e5ec4198c70290e6b3d2c
|
||||
net/minecraft/src/NBTBase 06858536273e1e8a6fabe856fb0760cb
|
||||
net/minecraft/src/WorldGenFlowers 1de1752a98db6c28d33ce20514628753
|
||||
net/minecraft/src/ChunkCoordIntPair cfeb3f37797149413a71e87e030b0bb8
|
||||
net/minecraft/src/BlockBookshelf b51f595f6269ed6b0364ae67b9483ec4
|
||||
net/minecraft/src/ChunkProviderGenerate 9baa6e0dced9f33c8164a4bbf1951614
|
||||
net/minecraft/src/BlockLog e5d275c18f1cb7b1e6f50c66067fb8b4
|
||||
net/minecraft/src/MovingObjectPosition bf0f281fa299f65f842efc9305804ce3
|
||||
net/minecraft/src/Packet27Position 54b31b2a4b8edc85449da5af3b6316a7
|
||||
net/minecraft/src/NBTTagString 9c4f18cf4ab51377ef477412af18692b
|
||||
net/minecraft/src/BlockPistonBase 9ac4f3a839e6ff3cc80b3fe8f7870487
|
||||
net/minecraft/src/BiomeGenSwamp 354cf963c49bbda9630f35b0ed174516
|
||||
net/minecraft/src/ContainerPlayer 170a694c57a702760f30f352d26c2a18
|
||||
net/minecraft/src/Vec3D 46064be3594c7254be51b9b190e8176c
|
||||
net/minecraft/src/TileEntityNote babfc0ab8646b03a1f1672b8c2dc7f76
|
||||
net/minecraft/src/ConsoleLogFormatter 9b81dc2c36fc1f0322424b41ca07cb4d
|
||||
net/minecraft/src/IUpdatePlayerListBox 7c68acfd7547db77ef7ea7b8343b4816
|
||||
net/minecraft/src/BlockOreStorage aaefb6370b8c8666c135ab789fb0c270
|
||||
net/minecraft/src/WorldGenForest 93b07730e8bdd9a89f53de49c8521779
|
||||
net/minecraft/src/BlockCake ad5f6f31792d6a01054c3d0e4a23742b
|
||||
net/minecraft/src/ServerWindowAdapter f95e6667e6f8eb14626f51232effebf6
|
||||
net/minecraft/src/EntityAnimal 10d92d5116c053070ddadac83ebee034
|
||||
net/minecraft/src/Packet33RelEntityMoveLook 901f3f64322a8bee06fb668851445660
|
||||
net/minecraft/src/Container 69acf4986614dc13d33ea2ed89ef1b43
|
||||
net/minecraft/src/BlockStone 543d6587b9f5f29087027a2eb98a37a1
|
||||
net/minecraft/src/NoiseGeneratorOctaves b02ca36e1e0e51c26120a2a163bea4d3
|
||||
net/minecraft/src/GuiStatsListener 52ecd04ca3688253bd14e8ea0e695d69
|
||||
net/minecraft/src/InventoryCrafting 496d9ba13440e14054ab41e6f4356770
|
||||
net/minecraft/src/SlotFurnace 65b1ab78e55a0f7538d39426c99fd89f
|
||||
net/minecraft/src/Packet34EntityTeleport 2347f1d19adf5a5a962b115323efecbf
|
||||
net/minecraft/src/NetworkWriterThread 0743942da009f5434d3db73bd801e9e1
|
||||
net/minecraft/src/ItemSoup acedbfab3457afe2d3ee36f02944a586
|
||||
415
src/net/minecraft/server/MinecraftServer.java
Normal file
415
src/net/minecraft/server/MinecraftServer.java
Normal file
@@ -0,0 +1,415 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
import java.awt.GraphicsEnvironment;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import net.minecraft.src.AxisAlignedBB;
|
||||
import net.minecraft.src.ChunkCoordinates;
|
||||
import net.minecraft.src.ConsoleCommandHandler;
|
||||
import net.minecraft.src.ConsoleLogManager;
|
||||
import net.minecraft.src.ConvertProgressUpdater;
|
||||
import net.minecraft.src.EntityTracker;
|
||||
import net.minecraft.src.ICommandListener;
|
||||
import net.minecraft.src.IProgressUpdate;
|
||||
import net.minecraft.src.ISaveFormat;
|
||||
import net.minecraft.src.IUpdatePlayerListBox;
|
||||
import net.minecraft.src.NetworkListenThread;
|
||||
import net.minecraft.src.Packet4UpdateTime;
|
||||
import net.minecraft.src.PropertyManager;
|
||||
import net.minecraft.src.SaveConverterMcRegion;
|
||||
import net.minecraft.src.SaveOldDir;
|
||||
import net.minecraft.src.ServerCommand;
|
||||
import net.minecraft.src.ServerConfigurationManager;
|
||||
import net.minecraft.src.ServerGUI;
|
||||
import net.minecraft.src.StatList;
|
||||
import net.minecraft.src.ThreadCommandReader;
|
||||
import net.minecraft.src.ThreadServerApplication;
|
||||
import net.minecraft.src.ThreadSleepForever;
|
||||
import net.minecraft.src.Vec3D;
|
||||
import net.minecraft.src.WorldManager;
|
||||
import net.minecraft.src.WorldServer;
|
||||
import net.minecraft.src.WorldServerMulti;
|
||||
|
||||
public class MinecraftServer implements Runnable, ICommandListener {
|
||||
public static Logger logger = Logger.getLogger("Minecraft");
|
||||
public static HashMap field_6037_b = new HashMap();
|
||||
public NetworkListenThread networkServer;
|
||||
public PropertyManager propertyManagerObj;
|
||||
public WorldServer[] worldMngr;
|
||||
public ServerConfigurationManager configManager;
|
||||
private ConsoleCommandHandler commandHandler;
|
||||
private boolean serverRunning = true;
|
||||
public boolean serverStopped = false;
|
||||
int deathTime = 0;
|
||||
public String currentTask;
|
||||
public int percentDone;
|
||||
private List field_9010_p = new ArrayList();
|
||||
private List commands = Collections.synchronizedList(new ArrayList());
|
||||
public EntityTracker[] entityTracker = new EntityTracker[2];
|
||||
public boolean onlineMode;
|
||||
public boolean spawnPeacefulMobs;
|
||||
public boolean pvpOn;
|
||||
public boolean allowFlight;
|
||||
|
||||
public MinecraftServer() {
|
||||
new ThreadSleepForever(this);
|
||||
}
|
||||
|
||||
private boolean startServer() throws UnknownHostException {
|
||||
this.commandHandler = new ConsoleCommandHandler(this);
|
||||
ThreadCommandReader var1 = new ThreadCommandReader(this);
|
||||
var1.setDaemon(true);
|
||||
var1.start();
|
||||
ConsoleLogManager.init();
|
||||
logger.info("Starting minecraft server version Beta 1.7.3");
|
||||
if(Runtime.getRuntime().maxMemory() / 1024L / 1024L < 512L) {
|
||||
logger.warning("**** NOT ENOUGH RAM!");
|
||||
logger.warning("To start the server with more ram, launch it as \"java -Xmx1024M -Xms1024M -jar minecraft_server.jar\"");
|
||||
}
|
||||
|
||||
logger.info("Loading properties");
|
||||
this.propertyManagerObj = new PropertyManager(new File("server.properties"));
|
||||
String var2 = this.propertyManagerObj.getStringProperty("server-ip", "");
|
||||
this.onlineMode = this.propertyManagerObj.getBooleanProperty("online-mode", true);
|
||||
this.spawnPeacefulMobs = this.propertyManagerObj.getBooleanProperty("spawn-animals", true);
|
||||
this.pvpOn = this.propertyManagerObj.getBooleanProperty("pvp", true);
|
||||
this.allowFlight = this.propertyManagerObj.getBooleanProperty("allow-flight", false);
|
||||
InetAddress var3 = null;
|
||||
if(var2.length() > 0) {
|
||||
var3 = InetAddress.getByName(var2);
|
||||
}
|
||||
|
||||
int var4 = this.propertyManagerObj.getIntProperty("server-port", 25565);
|
||||
logger.info("Starting Minecraft server on " + (var2.length() == 0 ? "*" : var2) + ":" + var4);
|
||||
|
||||
try {
|
||||
this.networkServer = new NetworkListenThread(this, var3, var4);
|
||||
} catch (IOException var13) {
|
||||
logger.warning("**** FAILED TO BIND TO PORT!");
|
||||
logger.log(Level.WARNING, "The exception was: " + var13.toString());
|
||||
logger.warning("Perhaps a server is already running on that port?");
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!this.onlineMode) {
|
||||
logger.warning("**** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!");
|
||||
logger.warning("The server will make no attempt to authenticate usernames. Beware.");
|
||||
logger.warning("While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose.");
|
||||
logger.warning("To change this, set \"online-mode\" to \"true\" in the server.settings file.");
|
||||
}
|
||||
|
||||
this.configManager = new ServerConfigurationManager(this);
|
||||
this.entityTracker[0] = new EntityTracker(this, 0);
|
||||
this.entityTracker[1] = new EntityTracker(this, -1);
|
||||
long var5 = System.nanoTime();
|
||||
String var7 = this.propertyManagerObj.getStringProperty("level-name", "world");
|
||||
String var8 = this.propertyManagerObj.getStringProperty("level-seed", "");
|
||||
long var9 = (new Random()).nextLong();
|
||||
if(var8.length() > 0) {
|
||||
try {
|
||||
var9 = Long.parseLong(var8);
|
||||
} catch (NumberFormatException var12) {
|
||||
var9 = (long)var8.hashCode();
|
||||
}
|
||||
}
|
||||
|
||||
logger.info("Preparing level \"" + var7 + "\"");
|
||||
this.initWorld(new SaveConverterMcRegion(new File(".")), var7, var9);
|
||||
logger.info("Done (" + (System.nanoTime() - var5) + "ns)! For help, type \"help\" or \"?\"");
|
||||
return true;
|
||||
}
|
||||
|
||||
private void initWorld(ISaveFormat var1, String var2, long var3) {
|
||||
if(var1.isOldSaveType(var2)) {
|
||||
logger.info("Converting map!");
|
||||
var1.converMapToMCRegion(var2, new ConvertProgressUpdater(this));
|
||||
}
|
||||
|
||||
this.worldMngr = new WorldServer[2];
|
||||
SaveOldDir var5 = new SaveOldDir(new File("."), var2, true);
|
||||
|
||||
for(int var6 = 0; var6 < this.worldMngr.length; ++var6) {
|
||||
if(var6 == 0) {
|
||||
this.worldMngr[var6] = new WorldServer(this, var5, var2, var6 == 0 ? 0 : -1, var3);
|
||||
} else {
|
||||
this.worldMngr[var6] = new WorldServerMulti(this, var5, var2, var6 == 0 ? 0 : -1, var3, this.worldMngr[0]);
|
||||
}
|
||||
|
||||
this.worldMngr[var6].addWorldAccess(new WorldManager(this, this.worldMngr[var6]));
|
||||
this.worldMngr[var6].difficultySetting = this.propertyManagerObj.getBooleanProperty("spawn-monsters", true) ? 1 : 0;
|
||||
this.worldMngr[var6].setAllowedSpawnTypes(this.propertyManagerObj.getBooleanProperty("spawn-monsters", true), this.spawnPeacefulMobs);
|
||||
this.configManager.setPlayerManager(this.worldMngr);
|
||||
}
|
||||
|
||||
short var18 = 196;
|
||||
long var7 = System.currentTimeMillis();
|
||||
|
||||
for(int var9 = 0; var9 < this.worldMngr.length; ++var9) {
|
||||
logger.info("Preparing start region for level " + var9);
|
||||
if(var9 == 0 || this.propertyManagerObj.getBooleanProperty("allow-nether", true)) {
|
||||
WorldServer var10 = this.worldMngr[var9];
|
||||
ChunkCoordinates var11 = var10.getSpawnPoint();
|
||||
|
||||
for(int var12 = -var18; var12 <= var18 && this.serverRunning; var12 += 16) {
|
||||
for(int var13 = -var18; var13 <= var18 && this.serverRunning; var13 += 16) {
|
||||
long var14 = System.currentTimeMillis();
|
||||
if(var14 < var7) {
|
||||
var7 = var14;
|
||||
}
|
||||
|
||||
if(var14 > var7 + 1000L) {
|
||||
int var16 = (var18 * 2 + 1) * (var18 * 2 + 1);
|
||||
int var17 = (var12 + var18) * (var18 * 2 + 1) + var13 + 1;
|
||||
this.outputPercentRemaining("Preparing spawn area", var17 * 100 / var16);
|
||||
var7 = var14;
|
||||
}
|
||||
|
||||
var10.chunkProviderServer.loadChunk(var11.posX + var12 >> 4, var11.posZ + var13 >> 4);
|
||||
|
||||
while(var10.func_6156_d() && this.serverRunning) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.clearCurrentTask();
|
||||
}
|
||||
|
||||
private void outputPercentRemaining(String var1, int var2) {
|
||||
this.currentTask = var1;
|
||||
this.percentDone = var2;
|
||||
logger.info(var1 + ": " + var2 + "%");
|
||||
}
|
||||
|
||||
private void clearCurrentTask() {
|
||||
this.currentTask = null;
|
||||
this.percentDone = 0;
|
||||
}
|
||||
|
||||
private void saveServerWorld() {
|
||||
logger.info("Saving chunks");
|
||||
|
||||
for(int var1 = 0; var1 < this.worldMngr.length; ++var1) {
|
||||
WorldServer var2 = this.worldMngr[var1];
|
||||
var2.saveWorld(true, (IProgressUpdate)null);
|
||||
var2.func_30006_w();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void stopServer() {
|
||||
logger.info("Stopping server");
|
||||
if(this.configManager != null) {
|
||||
this.configManager.savePlayerStates();
|
||||
}
|
||||
|
||||
for(int var1 = 0; var1 < this.worldMngr.length; ++var1) {
|
||||
WorldServer var2 = this.worldMngr[var1];
|
||||
if(var2 != null) {
|
||||
this.saveServerWorld();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void initiateShutdown() {
|
||||
this.serverRunning = false;
|
||||
}
|
||||
|
||||
public void run() {
|
||||
try {
|
||||
if(this.startServer()) {
|
||||
long var1 = System.currentTimeMillis();
|
||||
|
||||
for(long var3 = 0L; this.serverRunning; Thread.sleep(1L)) {
|
||||
long var5 = System.currentTimeMillis();
|
||||
long var7 = var5 - var1;
|
||||
if(var7 > 2000L) {
|
||||
logger.warning("Can\'t keep up! Did the system time change, or is the server overloaded?");
|
||||
var7 = 2000L;
|
||||
}
|
||||
|
||||
if(var7 < 0L) {
|
||||
logger.warning("Time ran backwards! Did the system time change?");
|
||||
var7 = 0L;
|
||||
}
|
||||
|
||||
var3 += var7;
|
||||
var1 = var5;
|
||||
if(this.worldMngr[0].isAllPlayersFullyAsleep()) {
|
||||
this.doTick();
|
||||
var3 = 0L;
|
||||
} else {
|
||||
while(var3 > 50L) {
|
||||
var3 -= 50L;
|
||||
this.doTick();
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
while(this.serverRunning) {
|
||||
this.commandLineParser();
|
||||
|
||||
try {
|
||||
Thread.sleep(10L);
|
||||
} catch (InterruptedException var57) {
|
||||
var57.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Throwable var58) {
|
||||
var58.printStackTrace();
|
||||
logger.log(Level.SEVERE, "Unexpected exception", var58);
|
||||
|
||||
while(this.serverRunning) {
|
||||
this.commandLineParser();
|
||||
|
||||
try {
|
||||
Thread.sleep(10L);
|
||||
} catch (InterruptedException var56) {
|
||||
var56.printStackTrace();
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
try {
|
||||
this.stopServer();
|
||||
this.serverStopped = true;
|
||||
} catch (Throwable var54) {
|
||||
var54.printStackTrace();
|
||||
} finally {
|
||||
System.exit(0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void doTick() {
|
||||
ArrayList var1 = new ArrayList();
|
||||
Iterator var2 = field_6037_b.keySet().iterator();
|
||||
|
||||
while(var2.hasNext()) {
|
||||
String var3 = (String)var2.next();
|
||||
int var4 = ((Integer)field_6037_b.get(var3)).intValue();
|
||||
if(var4 > 0) {
|
||||
field_6037_b.put(var3, Integer.valueOf(var4 - 1));
|
||||
} else {
|
||||
var1.add(var3);
|
||||
}
|
||||
}
|
||||
|
||||
int var6;
|
||||
for(var6 = 0; var6 < var1.size(); ++var6) {
|
||||
field_6037_b.remove(var1.get(var6));
|
||||
}
|
||||
|
||||
AxisAlignedBB.clearBoundingBoxPool();
|
||||
Vec3D.initialize();
|
||||
++this.deathTime;
|
||||
|
||||
for(var6 = 0; var6 < this.worldMngr.length; ++var6) {
|
||||
if(var6 == 0 || this.propertyManagerObj.getBooleanProperty("allow-nether", true)) {
|
||||
WorldServer var7 = this.worldMngr[var6];
|
||||
if(this.deathTime % 20 == 0) {
|
||||
this.configManager.sendPacketToAllPlayersInDimension(new Packet4UpdateTime(var7.getWorldTime()), var7.worldProvider.worldType);
|
||||
}
|
||||
|
||||
var7.tick();
|
||||
|
||||
while(var7.func_6156_d()) {
|
||||
}
|
||||
|
||||
var7.updateEntities();
|
||||
}
|
||||
}
|
||||
|
||||
this.networkServer.handleNetworkListenThread();
|
||||
this.configManager.onTick();
|
||||
|
||||
for(var6 = 0; var6 < this.entityTracker.length; ++var6) {
|
||||
this.entityTracker[var6].updateTrackedEntities();
|
||||
}
|
||||
|
||||
for(var6 = 0; var6 < this.field_9010_p.size(); ++var6) {
|
||||
((IUpdatePlayerListBox)this.field_9010_p.get(var6)).update();
|
||||
}
|
||||
|
||||
try {
|
||||
this.commandLineParser();
|
||||
} catch (Exception var5) {
|
||||
logger.log(Level.WARNING, "Unexpected exception while parsing console command", var5);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void addCommand(String var1, ICommandListener var2) {
|
||||
this.commands.add(new ServerCommand(var1, var2));
|
||||
}
|
||||
|
||||
public void commandLineParser() {
|
||||
while(this.commands.size() > 0) {
|
||||
ServerCommand var1 = (ServerCommand)this.commands.remove(0);
|
||||
this.commandHandler.handleCommand(var1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void func_6022_a(IUpdatePlayerListBox var1) {
|
||||
this.field_9010_p.add(var1);
|
||||
}
|
||||
|
||||
public static void main(String[] var0) {
|
||||
StatList.func_27092_a();
|
||||
|
||||
try {
|
||||
MinecraftServer var1 = new MinecraftServer();
|
||||
if(!GraphicsEnvironment.isHeadless() && (var0.length <= 0 || !var0[0].equals("nogui"))) {
|
||||
ServerGUI.initGui(var1);
|
||||
}
|
||||
|
||||
(new ThreadServerApplication("Server thread", var1)).start();
|
||||
} catch (Exception var2) {
|
||||
logger.log(Level.SEVERE, "Failed to start the minecraft server", var2);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public File getFile(String var1) {
|
||||
return new File(var1);
|
||||
}
|
||||
|
||||
public void log(String var1) {
|
||||
logger.info(var1);
|
||||
}
|
||||
|
||||
public void logWarning(String var1) {
|
||||
logger.warning(var1);
|
||||
}
|
||||
|
||||
public String getUsername() {
|
||||
return "CONSOLE";
|
||||
}
|
||||
|
||||
public WorldServer getWorldManager(int var1) {
|
||||
return var1 == -1 ? this.worldMngr[1] : this.worldMngr[0];
|
||||
}
|
||||
|
||||
public EntityTracker getEntityTracker(int var1) {
|
||||
return var1 == -1 ? this.entityTracker[1] : this.entityTracker[0];
|
||||
}
|
||||
|
||||
public static boolean isServerRunning(MinecraftServer var0) {
|
||||
return var0.serverRunning;
|
||||
}
|
||||
}
|
||||
67
src/net/minecraft/src/Achievement.java
Normal file
67
src/net/minecraft/src/Achievement.java
Normal file
@@ -0,0 +1,67 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class Achievement extends StatBase {
|
||||
public final int field_25067_a;
|
||||
public final int field_27991_b;
|
||||
public final Achievement field_27992_c;
|
||||
private final String field_27063_l;
|
||||
public final ItemStack theItemStack;
|
||||
private boolean field_27062_m;
|
||||
|
||||
public Achievement(int var1, String var2, int var3, int var4, Item var5, Achievement var6) {
|
||||
this(var1, var2, var3, var4, new ItemStack(var5), var6);
|
||||
}
|
||||
|
||||
public Achievement(int var1, String var2, int var3, int var4, Block var5, Achievement var6) {
|
||||
this(var1, var2, var3, var4, new ItemStack(var5), var6);
|
||||
}
|
||||
|
||||
public Achievement(int var1, String var2, int var3, int var4, ItemStack var5, Achievement var6) {
|
||||
super(5242880 + var1, StatCollector.translateToLocal("achievement." + var2));
|
||||
this.theItemStack = var5;
|
||||
this.field_27063_l = StatCollector.translateToLocal("achievement." + var2 + ".desc");
|
||||
this.field_25067_a = var3;
|
||||
this.field_27991_b = var4;
|
||||
if(var3 < AchievementList.field_27114_a) {
|
||||
AchievementList.field_27114_a = var3;
|
||||
}
|
||||
|
||||
if(var4 < AchievementList.field_27113_b) {
|
||||
AchievementList.field_27113_b = var4;
|
||||
}
|
||||
|
||||
if(var3 > AchievementList.field_27112_c) {
|
||||
AchievementList.field_27112_c = var3;
|
||||
}
|
||||
|
||||
if(var4 > AchievementList.field_27111_d) {
|
||||
AchievementList.field_27111_d = var4;
|
||||
}
|
||||
|
||||
this.field_27992_c = var6;
|
||||
}
|
||||
|
||||
public Achievement func_27059_a() {
|
||||
this.field_27058_g = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Achievement func_27060_b() {
|
||||
this.field_27062_m = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Achievement func_27061_c() {
|
||||
super.func_27053_d();
|
||||
AchievementList.field_25129_a.add(this);
|
||||
return this;
|
||||
}
|
||||
|
||||
public StatBase func_27053_d() {
|
||||
return this.func_27061_c();
|
||||
}
|
||||
|
||||
public StatBase func_27052_e() {
|
||||
return this.func_27059_a();
|
||||
}
|
||||
}
|
||||
35
src/net/minecraft/src/AchievementList.java
Normal file
35
src/net/minecraft/src/AchievementList.java
Normal file
@@ -0,0 +1,35 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class AchievementList {
|
||||
public static int field_27114_a;
|
||||
public static int field_27113_b;
|
||||
public static int field_27112_c;
|
||||
public static int field_27111_d;
|
||||
public static List field_25129_a = new ArrayList();
|
||||
public static Achievement field_25128_b = (new Achievement(0, "openInventory", 0, 0, Item.book, (Achievement)null)).func_27059_a().func_27061_c();
|
||||
public static Achievement field_25131_c = (new Achievement(1, "mineWood", 2, 1, Block.wood, field_25128_b)).func_27061_c();
|
||||
public static Achievement field_25130_d = (new Achievement(2, "buildWorkBench", 4, -1, Block.workbench, field_25131_c)).func_27061_c();
|
||||
public static Achievement field_27110_i = (new Achievement(3, "buildPickaxe", 4, 2, Item.pickaxeWood, field_25130_d)).func_27061_c();
|
||||
public static Achievement field_27109_j = (new Achievement(4, "buildFurnace", 3, 4, Block.stoneOvenActive, field_27110_i)).func_27061_c();
|
||||
public static Achievement field_27108_k = (new Achievement(5, "acquireIron", 1, 4, Item.ingotIron, field_27109_j)).func_27061_c();
|
||||
public static Achievement field_27107_l = (new Achievement(6, "buildHoe", 2, -3, Item.hoeWood, field_25130_d)).func_27061_c();
|
||||
public static Achievement field_27106_m = (new Achievement(7, "makeBread", -1, -3, Item.bread, field_27107_l)).func_27061_c();
|
||||
public static Achievement field_27105_n = (new Achievement(8, "bakeCake", 0, -5, Item.cake, field_27107_l)).func_27061_c();
|
||||
public static Achievement field_27104_o = (new Achievement(9, "buildBetterPickaxe", 6, 2, Item.pickaxeStone, field_27110_i)).func_27061_c();
|
||||
public static Achievement field_27103_p = (new Achievement(10, "cookFish", 2, 6, Item.fishCooked, field_27109_j)).func_27061_c();
|
||||
public static Achievement field_27102_q = (new Achievement(11, "onARail", 2, 3, Block.minecartTrack, field_27108_k)).func_27060_b().func_27061_c();
|
||||
public static Achievement field_27101_r = (new Achievement(12, "buildSword", 6, -1, Item.swordWood, field_25130_d)).func_27061_c();
|
||||
public static Achievement field_27100_s = (new Achievement(13, "killEnemy", 8, -1, Item.bone, field_27101_r)).func_27061_c();
|
||||
public static Achievement field_27099_t = (new Achievement(14, "killCow", 7, -3, Item.leather, field_27101_r)).func_27061_c();
|
||||
public static Achievement field_27098_u = (new Achievement(15, "flyPig", 8, -4, Item.saddle, field_27099_t)).func_27060_b().func_27061_c();
|
||||
|
||||
public static void func_27097_a() {
|
||||
}
|
||||
|
||||
static {
|
||||
System.out.println(field_25129_a.size() + " achievements");
|
||||
}
|
||||
}
|
||||
36
src/net/minecraft/src/AchievementMap.java
Normal file
36
src/net/minecraft/src/AchievementMap.java
Normal file
@@ -0,0 +1,36 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class AchievementMap {
|
||||
public static AchievementMap field_25134_a = new AchievementMap();
|
||||
private Map field_25133_b = new HashMap();
|
||||
|
||||
private AchievementMap() {
|
||||
try {
|
||||
BufferedReader var1 = new BufferedReader(new InputStreamReader(AchievementMap.class.getResourceAsStream("/achievement/map.txt")));
|
||||
|
||||
while(true) {
|
||||
String var2 = var1.readLine();
|
||||
if(var2 == null) {
|
||||
var1.close();
|
||||
break;
|
||||
}
|
||||
|
||||
String[] var3 = var2.split(",");
|
||||
int var4 = Integer.parseInt(var3[0]);
|
||||
this.field_25133_b.put(Integer.valueOf(var4), var3[1]);
|
||||
}
|
||||
} catch (Exception var5) {
|
||||
var5.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static String func_25132_a(int var0) {
|
||||
return (String)field_25134_a.field_25133_b.get(Integer.valueOf(var0));
|
||||
}
|
||||
}
|
||||
324
src/net/minecraft/src/AxisAlignedBB.java
Normal file
324
src/net/minecraft/src/AxisAlignedBB.java
Normal file
@@ -0,0 +1,324 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class AxisAlignedBB {
|
||||
private static List boundingBoxes = new ArrayList();
|
||||
private static int numBoundingBoxesInUse = 0;
|
||||
public double minX;
|
||||
public double minY;
|
||||
public double minZ;
|
||||
public double maxX;
|
||||
public double maxY;
|
||||
public double maxZ;
|
||||
|
||||
public static AxisAlignedBB getBoundingBox(double var0, double var2, double var4, double var6, double var8, double var10) {
|
||||
return new AxisAlignedBB(var0, var2, var4, var6, var8, var10);
|
||||
}
|
||||
|
||||
public static void clearBoundingBoxPool() {
|
||||
numBoundingBoxesInUse = 0;
|
||||
}
|
||||
|
||||
public static AxisAlignedBB getBoundingBoxFromPool(double var0, double var2, double var4, double var6, double var8, double var10) {
|
||||
if(numBoundingBoxesInUse >= boundingBoxes.size()) {
|
||||
boundingBoxes.add(getBoundingBox(0.0D, 0.0D, 0.0D, 0.0D, 0.0D, 0.0D));
|
||||
}
|
||||
|
||||
return ((AxisAlignedBB)boundingBoxes.get(numBoundingBoxesInUse++)).setBounds(var0, var2, var4, var6, var8, var10);
|
||||
}
|
||||
|
||||
private AxisAlignedBB(double var1, double var3, double var5, double var7, double var9, double var11) {
|
||||
this.minX = var1;
|
||||
this.minY = var3;
|
||||
this.minZ = var5;
|
||||
this.maxX = var7;
|
||||
this.maxY = var9;
|
||||
this.maxZ = var11;
|
||||
}
|
||||
|
||||
public AxisAlignedBB setBounds(double var1, double var3, double var5, double var7, double var9, double var11) {
|
||||
this.minX = var1;
|
||||
this.minY = var3;
|
||||
this.minZ = var5;
|
||||
this.maxX = var7;
|
||||
this.maxY = var9;
|
||||
this.maxZ = var11;
|
||||
return this;
|
||||
}
|
||||
|
||||
public AxisAlignedBB addCoord(double var1, double var3, double var5) {
|
||||
double var7 = this.minX;
|
||||
double var9 = this.minY;
|
||||
double var11 = this.minZ;
|
||||
double var13 = this.maxX;
|
||||
double var15 = this.maxY;
|
||||
double var17 = this.maxZ;
|
||||
if(var1 < 0.0D) {
|
||||
var7 += var1;
|
||||
}
|
||||
|
||||
if(var1 > 0.0D) {
|
||||
var13 += var1;
|
||||
}
|
||||
|
||||
if(var3 < 0.0D) {
|
||||
var9 += var3;
|
||||
}
|
||||
|
||||
if(var3 > 0.0D) {
|
||||
var15 += var3;
|
||||
}
|
||||
|
||||
if(var5 < 0.0D) {
|
||||
var11 += var5;
|
||||
}
|
||||
|
||||
if(var5 > 0.0D) {
|
||||
var17 += var5;
|
||||
}
|
||||
|
||||
return getBoundingBoxFromPool(var7, var9, var11, var13, var15, var17);
|
||||
}
|
||||
|
||||
public AxisAlignedBB expand(double var1, double var3, double var5) {
|
||||
double var7 = this.minX - var1;
|
||||
double var9 = this.minY - var3;
|
||||
double var11 = this.minZ - var5;
|
||||
double var13 = this.maxX + var1;
|
||||
double var15 = this.maxY + var3;
|
||||
double var17 = this.maxZ + var5;
|
||||
return getBoundingBoxFromPool(var7, var9, var11, var13, var15, var17);
|
||||
}
|
||||
|
||||
public AxisAlignedBB getOffsetBoundingBox(double var1, double var3, double var5) {
|
||||
return getBoundingBoxFromPool(this.minX + var1, this.minY + var3, this.minZ + var5, this.maxX + var1, this.maxY + var3, this.maxZ + var5);
|
||||
}
|
||||
|
||||
public double calculateXOffset(AxisAlignedBB var1, double var2) {
|
||||
if(var1.maxY > this.minY && var1.minY < this.maxY) {
|
||||
if(var1.maxZ > this.minZ && var1.minZ < this.maxZ) {
|
||||
double var4;
|
||||
if(var2 > 0.0D && var1.maxX <= this.minX) {
|
||||
var4 = this.minX - var1.maxX;
|
||||
if(var4 < var2) {
|
||||
var2 = var4;
|
||||
}
|
||||
}
|
||||
|
||||
if(var2 < 0.0D && var1.minX >= this.maxX) {
|
||||
var4 = this.maxX - var1.minX;
|
||||
if(var4 > var2) {
|
||||
var2 = var4;
|
||||
}
|
||||
}
|
||||
|
||||
return var2;
|
||||
} else {
|
||||
return var2;
|
||||
}
|
||||
} else {
|
||||
return var2;
|
||||
}
|
||||
}
|
||||
|
||||
public double calculateYOffset(AxisAlignedBB var1, double var2) {
|
||||
if(var1.maxX > this.minX && var1.minX < this.maxX) {
|
||||
if(var1.maxZ > this.minZ && var1.minZ < this.maxZ) {
|
||||
double var4;
|
||||
if(var2 > 0.0D && var1.maxY <= this.minY) {
|
||||
var4 = this.minY - var1.maxY;
|
||||
if(var4 < var2) {
|
||||
var2 = var4;
|
||||
}
|
||||
}
|
||||
|
||||
if(var2 < 0.0D && var1.minY >= this.maxY) {
|
||||
var4 = this.maxY - var1.minY;
|
||||
if(var4 > var2) {
|
||||
var2 = var4;
|
||||
}
|
||||
}
|
||||
|
||||
return var2;
|
||||
} else {
|
||||
return var2;
|
||||
}
|
||||
} else {
|
||||
return var2;
|
||||
}
|
||||
}
|
||||
|
||||
public double calculateZOffset(AxisAlignedBB var1, double var2) {
|
||||
if(var1.maxX > this.minX && var1.minX < this.maxX) {
|
||||
if(var1.maxY > this.minY && var1.minY < this.maxY) {
|
||||
double var4;
|
||||
if(var2 > 0.0D && var1.maxZ <= this.minZ) {
|
||||
var4 = this.minZ - var1.maxZ;
|
||||
if(var4 < var2) {
|
||||
var2 = var4;
|
||||
}
|
||||
}
|
||||
|
||||
if(var2 < 0.0D && var1.minZ >= this.maxZ) {
|
||||
var4 = this.maxZ - var1.minZ;
|
||||
if(var4 > var2) {
|
||||
var2 = var4;
|
||||
}
|
||||
}
|
||||
|
||||
return var2;
|
||||
} else {
|
||||
return var2;
|
||||
}
|
||||
} else {
|
||||
return var2;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean intersectsWith(AxisAlignedBB var1) {
|
||||
return var1.maxX > this.minX && var1.minX < this.maxX ? (var1.maxY > this.minY && var1.minY < this.maxY ? var1.maxZ > this.minZ && var1.minZ < this.maxZ : false) : false;
|
||||
}
|
||||
|
||||
public AxisAlignedBB offset(double var1, double var3, double var5) {
|
||||
this.minX += var1;
|
||||
this.minY += var3;
|
||||
this.minZ += var5;
|
||||
this.maxX += var1;
|
||||
this.maxY += var3;
|
||||
this.maxZ += var5;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isVecInXYZ(Vec3D var1) {
|
||||
return var1.xCoord > this.minX && var1.xCoord < this.maxX ? (var1.yCoord > this.minY && var1.yCoord < this.maxY ? var1.zCoord > this.minZ && var1.zCoord < this.maxZ : false) : false;
|
||||
}
|
||||
|
||||
public AxisAlignedBB getInsetBoundingBox(double var1, double var3, double var5) {
|
||||
double var7 = this.minX + var1;
|
||||
double var9 = this.minY + var3;
|
||||
double var11 = this.minZ + var5;
|
||||
double var13 = this.maxX - var1;
|
||||
double var15 = this.maxY - var3;
|
||||
double var17 = this.maxZ - var5;
|
||||
return getBoundingBoxFromPool(var7, var9, var11, var13, var15, var17);
|
||||
}
|
||||
|
||||
public AxisAlignedBB copy() {
|
||||
return getBoundingBoxFromPool(this.minX, this.minY, this.minZ, this.maxX, this.maxY, this.maxZ);
|
||||
}
|
||||
|
||||
public MovingObjectPosition func_706_a(Vec3D var1, Vec3D var2) {
|
||||
Vec3D var3 = var1.getIntermediateWithXValue(var2, this.minX);
|
||||
Vec3D var4 = var1.getIntermediateWithXValue(var2, this.maxX);
|
||||
Vec3D var5 = var1.getIntermediateWithYValue(var2, this.minY);
|
||||
Vec3D var6 = var1.getIntermediateWithYValue(var2, this.maxY);
|
||||
Vec3D var7 = var1.getIntermediateWithZValue(var2, this.minZ);
|
||||
Vec3D var8 = var1.getIntermediateWithZValue(var2, this.maxZ);
|
||||
if(!this.isVecInYZ(var3)) {
|
||||
var3 = null;
|
||||
}
|
||||
|
||||
if(!this.isVecInYZ(var4)) {
|
||||
var4 = null;
|
||||
}
|
||||
|
||||
if(!this.isVecInXZ(var5)) {
|
||||
var5 = null;
|
||||
}
|
||||
|
||||
if(!this.isVecInXZ(var6)) {
|
||||
var6 = null;
|
||||
}
|
||||
|
||||
if(!this.isVecInXY(var7)) {
|
||||
var7 = null;
|
||||
}
|
||||
|
||||
if(!this.isVecInXY(var8)) {
|
||||
var8 = null;
|
||||
}
|
||||
|
||||
Vec3D var9 = null;
|
||||
if(var3 != null && (var9 == null || var1.squareDistanceTo(var3) < var1.squareDistanceTo(var9))) {
|
||||
var9 = var3;
|
||||
}
|
||||
|
||||
if(var4 != null && (var9 == null || var1.squareDistanceTo(var4) < var1.squareDistanceTo(var9))) {
|
||||
var9 = var4;
|
||||
}
|
||||
|
||||
if(var5 != null && (var9 == null || var1.squareDistanceTo(var5) < var1.squareDistanceTo(var9))) {
|
||||
var9 = var5;
|
||||
}
|
||||
|
||||
if(var6 != null && (var9 == null || var1.squareDistanceTo(var6) < var1.squareDistanceTo(var9))) {
|
||||
var9 = var6;
|
||||
}
|
||||
|
||||
if(var7 != null && (var9 == null || var1.squareDistanceTo(var7) < var1.squareDistanceTo(var9))) {
|
||||
var9 = var7;
|
||||
}
|
||||
|
||||
if(var8 != null && (var9 == null || var1.squareDistanceTo(var8) < var1.squareDistanceTo(var9))) {
|
||||
var9 = var8;
|
||||
}
|
||||
|
||||
if(var9 == null) {
|
||||
return null;
|
||||
} else {
|
||||
byte var10 = -1;
|
||||
if(var9 == var3) {
|
||||
var10 = 4;
|
||||
}
|
||||
|
||||
if(var9 == var4) {
|
||||
var10 = 5;
|
||||
}
|
||||
|
||||
if(var9 == var5) {
|
||||
var10 = 0;
|
||||
}
|
||||
|
||||
if(var9 == var6) {
|
||||
var10 = 1;
|
||||
}
|
||||
|
||||
if(var9 == var7) {
|
||||
var10 = 2;
|
||||
}
|
||||
|
||||
if(var9 == var8) {
|
||||
var10 = 3;
|
||||
}
|
||||
|
||||
return new MovingObjectPosition(0, 0, 0, var10, var9);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isVecInYZ(Vec3D var1) {
|
||||
return var1 == null ? false : var1.yCoord >= this.minY && var1.yCoord <= this.maxY && var1.zCoord >= this.minZ && var1.zCoord <= this.maxZ;
|
||||
}
|
||||
|
||||
private boolean isVecInXZ(Vec3D var1) {
|
||||
return var1 == null ? false : var1.xCoord >= this.minX && var1.xCoord <= this.maxX && var1.zCoord >= this.minZ && var1.zCoord <= this.maxZ;
|
||||
}
|
||||
|
||||
private boolean isVecInXY(Vec3D var1) {
|
||||
return var1 == null ? false : var1.xCoord >= this.minX && var1.xCoord <= this.maxX && var1.yCoord >= this.minY && var1.yCoord <= this.maxY;
|
||||
}
|
||||
|
||||
public void setBB(AxisAlignedBB var1) {
|
||||
this.minX = var1.minX;
|
||||
this.minY = var1.minY;
|
||||
this.minZ = var1.minZ;
|
||||
this.maxX = var1.maxX;
|
||||
this.maxY = var1.maxY;
|
||||
this.maxZ = var1.maxZ;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return "box[" + this.minX + ", " + this.minY + ", " + this.minZ + " -> " + this.maxX + ", " + this.maxY + ", " + this.maxZ + "]";
|
||||
}
|
||||
}
|
||||
112
src/net/minecraft/src/BiomeGenBase.java
Normal file
112
src/net/minecraft/src/BiomeGenBase.java
Normal file
@@ -0,0 +1,112 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
public class BiomeGenBase {
|
||||
public static final BiomeGenBase rainforest = (new BiomeGenRainforest()).setColor(588342).setBiomeName("Rainforest").func_4080_a(2094168);
|
||||
public static final BiomeGenBase swampland = (new BiomeGenSwamp()).setColor(522674).setBiomeName("Swampland").func_4080_a(9154376);
|
||||
public static final BiomeGenBase seasonalForest = (new BiomeGenBase()).setColor(10215459).setBiomeName("Seasonal Forest");
|
||||
public static final BiomeGenBase forest = (new BiomeGenForest()).setColor(353825).setBiomeName("Forest").func_4080_a(5159473);
|
||||
public static final BiomeGenBase savanna = (new BiomeGenDesert()).setColor(14278691).setBiomeName("Savanna");
|
||||
public static final BiomeGenBase shrubland = (new BiomeGenBase()).setColor(10595616).setBiomeName("Shrubland");
|
||||
public static final BiomeGenBase taiga = (new BiomeGenTaiga()).setColor(3060051).setBiomeName("Taiga").setEnableSnow().func_4080_a(8107825);
|
||||
public static final BiomeGenBase desert = (new BiomeGenDesert()).setColor(16421912).setBiomeName("Desert").setDisableRain();
|
||||
public static final BiomeGenBase plains = (new BiomeGenDesert()).setColor(16767248).setBiomeName("Plains");
|
||||
public static final BiomeGenBase iceDesert = (new BiomeGenDesert()).setColor(16772499).setBiomeName("Ice Desert").setEnableSnow().setDisableRain().func_4080_a(12899129);
|
||||
public static final BiomeGenBase tundra = (new BiomeGenBase()).setColor(5762041).setBiomeName("Tundra").setEnableSnow().func_4080_a(12899129);
|
||||
public static final BiomeGenBase hell = (new BiomeGenHell()).setColor(16711680).setBiomeName("Hell").setDisableRain();
|
||||
public static final BiomeGenBase field_28054_m = (new BiomeGenSky()).setColor(8421631).setBiomeName("Sky").setDisableRain();
|
||||
public String biomeName;
|
||||
public int color;
|
||||
public byte topBlock = (byte)Block.grass.blockID;
|
||||
public byte fillerBlock = (byte)Block.dirt.blockID;
|
||||
public int field_6161_q = 5169201;
|
||||
protected List spawnableMonsterList = new ArrayList();
|
||||
protected List spawnableCreatureList = new ArrayList();
|
||||
protected List spawnableWaterCreatureList = new ArrayList();
|
||||
private boolean enableSnow;
|
||||
private boolean enableRain = true;
|
||||
private static BiomeGenBase[] biomeLookupTable = new BiomeGenBase[4096];
|
||||
|
||||
protected BiomeGenBase() {
|
||||
this.spawnableMonsterList.add(new SpawnListEntry(EntitySpider.class, 10));
|
||||
this.spawnableMonsterList.add(new SpawnListEntry(EntityZombie.class, 10));
|
||||
this.spawnableMonsterList.add(new SpawnListEntry(EntitySkeleton.class, 10));
|
||||
this.spawnableMonsterList.add(new SpawnListEntry(EntityCreeper.class, 10));
|
||||
this.spawnableMonsterList.add(new SpawnListEntry(EntitySlime.class, 10));
|
||||
this.spawnableCreatureList.add(new SpawnListEntry(EntitySheep.class, 12));
|
||||
this.spawnableCreatureList.add(new SpawnListEntry(EntityPig.class, 10));
|
||||
this.spawnableCreatureList.add(new SpawnListEntry(EntityChicken.class, 10));
|
||||
this.spawnableCreatureList.add(new SpawnListEntry(EntityCow.class, 8));
|
||||
this.spawnableWaterCreatureList.add(new SpawnListEntry(EntitySquid.class, 10));
|
||||
}
|
||||
|
||||
private BiomeGenBase setDisableRain() {
|
||||
this.enableRain = false;
|
||||
return this;
|
||||
}
|
||||
|
||||
public static void generateBiomeLookup() {
|
||||
for(int var0 = 0; var0 < 64; ++var0) {
|
||||
for(int var1 = 0; var1 < 64; ++var1) {
|
||||
biomeLookupTable[var0 + var1 * 64] = getBiome((float)var0 / 63.0F, (float)var1 / 63.0F);
|
||||
}
|
||||
}
|
||||
|
||||
desert.topBlock = desert.fillerBlock = (byte)Block.sand.blockID;
|
||||
iceDesert.topBlock = iceDesert.fillerBlock = (byte)Block.sand.blockID;
|
||||
}
|
||||
|
||||
public WorldGenerator getRandomWorldGenForTrees(Random var1) {
|
||||
return (WorldGenerator)(var1.nextInt(10) == 0 ? new WorldGenBigTree() : new WorldGenTrees());
|
||||
}
|
||||
|
||||
protected BiomeGenBase setEnableSnow() {
|
||||
this.enableSnow = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
protected BiomeGenBase setBiomeName(String var1) {
|
||||
this.biomeName = var1;
|
||||
return this;
|
||||
}
|
||||
|
||||
protected BiomeGenBase func_4080_a(int var1) {
|
||||
this.field_6161_q = var1;
|
||||
return this;
|
||||
}
|
||||
|
||||
protected BiomeGenBase setColor(int var1) {
|
||||
this.color = var1;
|
||||
return this;
|
||||
}
|
||||
|
||||
public static BiomeGenBase getBiomeFromLookup(double var0, double var2) {
|
||||
int var4 = (int)(var0 * 63.0D);
|
||||
int var5 = (int)(var2 * 63.0D);
|
||||
return biomeLookupTable[var4 + var5 * 64];
|
||||
}
|
||||
|
||||
public static BiomeGenBase getBiome(float var0, float var1) {
|
||||
var1 *= var0;
|
||||
return var0 < 0.1F ? tundra : (var1 < 0.2F ? (var0 < 0.5F ? tundra : (var0 < 0.95F ? savanna : desert)) : (var1 > 0.5F && var0 < 0.7F ? swampland : (var0 < 0.5F ? taiga : (var0 < 0.97F ? (var1 < 0.35F ? shrubland : forest) : (var1 < 0.45F ? plains : (var1 < 0.9F ? seasonalForest : rainforest))))));
|
||||
}
|
||||
|
||||
public List getSpawnableList(EnumCreatureType var1) {
|
||||
return var1 == EnumCreatureType.monster ? this.spawnableMonsterList : (var1 == EnumCreatureType.creature ? this.spawnableCreatureList : (var1 == EnumCreatureType.waterCreature ? this.spawnableWaterCreatureList : null));
|
||||
}
|
||||
|
||||
public boolean getEnableSnow() {
|
||||
return this.enableSnow;
|
||||
}
|
||||
|
||||
public boolean canSpawnLightningBolt() {
|
||||
return this.enableSnow ? false : this.enableRain;
|
||||
}
|
||||
|
||||
static {
|
||||
generateBiomeLookup();
|
||||
}
|
||||
}
|
||||
4
src/net/minecraft/src/BiomeGenDesert.java
Normal file
4
src/net/minecraft/src/BiomeGenDesert.java
Normal file
@@ -0,0 +1,4 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BiomeGenDesert extends BiomeGenBase {
|
||||
}
|
||||
13
src/net/minecraft/src/BiomeGenForest.java
Normal file
13
src/net/minecraft/src/BiomeGenForest.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BiomeGenForest extends BiomeGenBase {
|
||||
public BiomeGenForest() {
|
||||
this.spawnableCreatureList.add(new SpawnListEntry(EntityWolf.class, 2));
|
||||
}
|
||||
|
||||
public WorldGenerator getRandomWorldGenForTrees(Random var1) {
|
||||
return (WorldGenerator)(var1.nextInt(5) == 0 ? new WorldGenForest() : (var1.nextInt(3) == 0 ? new WorldGenBigTree() : new WorldGenTrees()));
|
||||
}
|
||||
}
|
||||
11
src/net/minecraft/src/BiomeGenHell.java
Normal file
11
src/net/minecraft/src/BiomeGenHell.java
Normal file
@@ -0,0 +1,11 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BiomeGenHell extends BiomeGenBase {
|
||||
public BiomeGenHell() {
|
||||
this.spawnableMonsterList.clear();
|
||||
this.spawnableCreatureList.clear();
|
||||
this.spawnableWaterCreatureList.clear();
|
||||
this.spawnableMonsterList.add(new SpawnListEntry(EntityGhast.class, 10));
|
||||
this.spawnableMonsterList.add(new SpawnListEntry(EntityPigZombie.class, 10));
|
||||
}
|
||||
}
|
||||
9
src/net/minecraft/src/BiomeGenRainforest.java
Normal file
9
src/net/minecraft/src/BiomeGenRainforest.java
Normal file
@@ -0,0 +1,9 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BiomeGenRainforest extends BiomeGenBase {
|
||||
public WorldGenerator getRandomWorldGenForTrees(Random var1) {
|
||||
return (WorldGenerator)(var1.nextInt(3) == 0 ? new WorldGenBigTree() : new WorldGenTrees());
|
||||
}
|
||||
}
|
||||
10
src/net/minecraft/src/BiomeGenSky.java
Normal file
10
src/net/minecraft/src/BiomeGenSky.java
Normal file
@@ -0,0 +1,10 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BiomeGenSky extends BiomeGenBase {
|
||||
public BiomeGenSky() {
|
||||
this.spawnableMonsterList.clear();
|
||||
this.spawnableCreatureList.clear();
|
||||
this.spawnableWaterCreatureList.clear();
|
||||
this.spawnableCreatureList.add(new SpawnListEntry(EntityChicken.class, 10));
|
||||
}
|
||||
}
|
||||
4
src/net/minecraft/src/BiomeGenSwamp.java
Normal file
4
src/net/minecraft/src/BiomeGenSwamp.java
Normal file
@@ -0,0 +1,4 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BiomeGenSwamp extends BiomeGenBase {
|
||||
}
|
||||
13
src/net/minecraft/src/BiomeGenTaiga.java
Normal file
13
src/net/minecraft/src/BiomeGenTaiga.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BiomeGenTaiga extends BiomeGenBase {
|
||||
public BiomeGenTaiga() {
|
||||
this.spawnableCreatureList.add(new SpawnListEntry(EntityWolf.class, 2));
|
||||
}
|
||||
|
||||
public WorldGenerator getRandomWorldGenForTrees(Random var1) {
|
||||
return (WorldGenerator)(var1.nextInt(3) == 0 ? new WorldGenTaiga1() : new WorldGenTaiga2());
|
||||
}
|
||||
}
|
||||
543
src/net/minecraft/src/Block.java
Normal file
543
src/net/minecraft/src/Block.java
Normal file
@@ -0,0 +1,543 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Random;
|
||||
|
||||
public class Block {
|
||||
public static final StepSound soundPowderFootstep = new StepSound("stone", 1.0F, 1.0F);
|
||||
public static final StepSound soundWoodFootstep = new StepSound("wood", 1.0F, 1.0F);
|
||||
public static final StepSound soundGravelFootstep = new StepSound("gravel", 1.0F, 1.0F);
|
||||
public static final StepSound soundGrassFootstep = new StepSound("grass", 1.0F, 1.0F);
|
||||
public static final StepSound soundStoneFootstep = new StepSound("stone", 1.0F, 1.0F);
|
||||
public static final StepSound soundMetalFootstep = new StepSound("stone", 1.0F, 1.5F);
|
||||
public static final StepSound soundGlassFootstep = new StepSoundStone("stone", 1.0F, 1.0F);
|
||||
public static final StepSound soundClothFootstep = new StepSound("cloth", 1.0F, 1.0F);
|
||||
public static final StepSound soundSandFootstep = new StepSoundSand("sand", 1.0F, 1.0F);
|
||||
public static final Block[] blocksList = new Block[256];
|
||||
public static final boolean[] tickOnLoad = new boolean[256];
|
||||
public static final boolean[] opaqueCubeLookup = new boolean[256];
|
||||
public static final boolean[] isBlockContainer = new boolean[256];
|
||||
public static final int[] lightOpacity = new int[256];
|
||||
public static final boolean[] canBlockGrass = new boolean[256];
|
||||
public static final int[] lightValue = new int[256];
|
||||
public static final boolean[] requiresSelfNotify = new boolean[256];
|
||||
public static final Block stone = (new BlockStone(1, 1)).setHardness(1.5F).setResistance(10.0F).setStepSound(soundStoneFootstep).setBlockName("stone");
|
||||
public static final BlockGrass grass = (BlockGrass)(new BlockGrass(2)).setHardness(0.6F).setStepSound(soundGrassFootstep).setBlockName("grass");
|
||||
public static final Block dirt = (new BlockDirt(3, 2)).setHardness(0.5F).setStepSound(soundGravelFootstep).setBlockName("dirt");
|
||||
public static final Block cobblestone = (new Block(4, 16, Material.rock)).setHardness(2.0F).setResistance(10.0F).setStepSound(soundStoneFootstep).setBlockName("stonebrick");
|
||||
public static final Block planks = (new Block(5, 4, Material.wood)).setHardness(2.0F).setResistance(5.0F).setStepSound(soundWoodFootstep).setBlockName("wood").setRequiresSelfNotify();
|
||||
public static final Block sapling = (new BlockSapling(6, 15)).setHardness(0.0F).setStepSound(soundGrassFootstep).setBlockName("sapling").setRequiresSelfNotify();
|
||||
public static final Block bedrock = (new Block(7, 17, Material.rock)).setBlockUnbreakable().setResistance(6000000.0F).setStepSound(soundStoneFootstep).setBlockName("bedrock").disableStats();
|
||||
public static final Block waterMoving = (new BlockFlowing(8, Material.water)).setHardness(100.0F).setLightOpacity(3).setBlockName("water").disableStats().setRequiresSelfNotify();
|
||||
public static final Block waterStill = (new BlockStationary(9, Material.water)).setHardness(100.0F).setLightOpacity(3).setBlockName("water").disableStats().setRequiresSelfNotify();
|
||||
public static final Block lavaMoving = (new BlockFlowing(10, Material.lava)).setHardness(0.0F).setLightValue(1.0F).setLightOpacity(255).setBlockName("lava").disableStats().setRequiresSelfNotify();
|
||||
public static final Block lavaStill = (new BlockStationary(11, Material.lava)).setHardness(100.0F).setLightValue(1.0F).setLightOpacity(255).setBlockName("lava").disableStats().setRequiresSelfNotify();
|
||||
public static final Block sand = (new BlockSand(12, 18)).setHardness(0.5F).setStepSound(soundSandFootstep).setBlockName("sand");
|
||||
public static final Block gravel = (new BlockGravel(13, 19)).setHardness(0.6F).setStepSound(soundGravelFootstep).setBlockName("gravel");
|
||||
public static final Block oreGold = (new BlockOre(14, 32)).setHardness(3.0F).setResistance(5.0F).setStepSound(soundStoneFootstep).setBlockName("oreGold");
|
||||
public static final Block oreIron = (new BlockOre(15, 33)).setHardness(3.0F).setResistance(5.0F).setStepSound(soundStoneFootstep).setBlockName("oreIron");
|
||||
public static final Block oreCoal = (new BlockOre(16, 34)).setHardness(3.0F).setResistance(5.0F).setStepSound(soundStoneFootstep).setBlockName("oreCoal");
|
||||
public static final Block wood = (new BlockLog(17)).setHardness(2.0F).setStepSound(soundWoodFootstep).setBlockName("log").setRequiresSelfNotify();
|
||||
public static final BlockLeaves leaves = (BlockLeaves)(new BlockLeaves(18, 52)).setHardness(0.2F).setLightOpacity(1).setStepSound(soundGrassFootstep).setBlockName("leaves").disableStats().setRequiresSelfNotify();
|
||||
public static final Block sponge = (new BlockSponge(19)).setHardness(0.6F).setStepSound(soundGrassFootstep).setBlockName("sponge");
|
||||
public static final Block glass = (new BlockGlass(20, 49, Material.glass, false)).setHardness(0.3F).setStepSound(soundGlassFootstep).setBlockName("glass");
|
||||
public static final Block oreLapis = (new BlockOre(21, 160)).setHardness(3.0F).setResistance(5.0F).setStepSound(soundStoneFootstep).setBlockName("oreLapis");
|
||||
public static final Block blockLapis = (new Block(22, 144, Material.rock)).setHardness(3.0F).setResistance(5.0F).setStepSound(soundStoneFootstep).setBlockName("blockLapis");
|
||||
public static final Block dispenser = (new BlockDispenser(23)).setHardness(3.5F).setStepSound(soundStoneFootstep).setBlockName("dispenser").setRequiresSelfNotify();
|
||||
public static final Block sandStone = (new BlockSandStone(24)).setStepSound(soundStoneFootstep).setHardness(0.8F).setBlockName("sandStone");
|
||||
public static final Block musicBlock = (new BlockNote(25)).setHardness(0.8F).setBlockName("musicBlock").setRequiresSelfNotify();
|
||||
public static final Block bed = (new BlockBed(26)).setHardness(0.2F).setBlockName("bed").disableStats().setRequiresSelfNotify();
|
||||
public static final Block railPowered = (new BlockRail(27, 179, true)).setHardness(0.7F).setStepSound(soundMetalFootstep).setBlockName("goldenRail").setRequiresSelfNotify();
|
||||
public static final Block railDetector = (new BlockDetectorRail(28, 195)).setHardness(0.7F).setStepSound(soundMetalFootstep).setBlockName("detectorRail").setRequiresSelfNotify();
|
||||
public static final Block pistonStickyBase = (new BlockPistonBase(29, 106, true)).setBlockName("pistonStickyBase").setRequiresSelfNotify();
|
||||
public static final Block web = (new BlockWeb(30, 11)).setLightOpacity(1).setHardness(4.0F).setBlockName("web");
|
||||
public static final BlockTallGrass tallGrass = (BlockTallGrass)(new BlockTallGrass(31, 39)).setHardness(0.0F).setStepSound(soundGrassFootstep).setBlockName("tallgrass");
|
||||
public static final BlockDeadBush deadBush = (BlockDeadBush)(new BlockDeadBush(32, 55)).setHardness(0.0F).setStepSound(soundGrassFootstep).setBlockName("deadbush");
|
||||
public static final Block pistonBase = (new BlockPistonBase(33, 107, false)).setBlockName("pistonBase").setRequiresSelfNotify();
|
||||
public static final BlockPistonExtension pistonExtension = (BlockPistonExtension)(new BlockPistonExtension(34, 107)).setRequiresSelfNotify();
|
||||
public static final Block cloth = (new BlockCloth()).setHardness(0.8F).setStepSound(soundClothFootstep).setBlockName("cloth").setRequiresSelfNotify();
|
||||
public static final BlockPistonMoving pistonMoving = new BlockPistonMoving(36);
|
||||
public static final BlockFlower plantYellow = (BlockFlower)(new BlockFlower(37, 13)).setHardness(0.0F).setStepSound(soundGrassFootstep).setBlockName("flower");
|
||||
public static final BlockFlower plantRed = (BlockFlower)(new BlockFlower(38, 12)).setHardness(0.0F).setStepSound(soundGrassFootstep).setBlockName("rose");
|
||||
public static final BlockFlower mushroomBrown = (BlockFlower)(new BlockMushroom(39, 29)).setHardness(0.0F).setStepSound(soundGrassFootstep).setLightValue(2.0F / 16.0F).setBlockName("mushroom");
|
||||
public static final BlockFlower mushroomRed = (BlockFlower)(new BlockMushroom(40, 28)).setHardness(0.0F).setStepSound(soundGrassFootstep).setBlockName("mushroom");
|
||||
public static final Block blockGold = (new BlockOreStorage(41, 23)).setHardness(3.0F).setResistance(10.0F).setStepSound(soundMetalFootstep).setBlockName("blockGold");
|
||||
public static final Block blockSteel = (new BlockOreStorage(42, 22)).setHardness(5.0F).setResistance(10.0F).setStepSound(soundMetalFootstep).setBlockName("blockIron");
|
||||
public static final Block stairDouble = (new BlockStep(43, true)).setHardness(2.0F).setResistance(10.0F).setStepSound(soundStoneFootstep).setBlockName("stoneSlab");
|
||||
public static final Block stairSingle = (new BlockStep(44, false)).setHardness(2.0F).setResistance(10.0F).setStepSound(soundStoneFootstep).setBlockName("stoneSlab");
|
||||
public static final Block brick = (new Block(45, 7, Material.rock)).setHardness(2.0F).setResistance(10.0F).setStepSound(soundStoneFootstep).setBlockName("brick");
|
||||
public static final Block tnt = (new BlockTNT(46, 8)).setHardness(0.0F).setStepSound(soundGrassFootstep).setBlockName("tnt");
|
||||
public static final Block bookShelf = (new BlockBookshelf(47, 35)).setHardness(1.5F).setStepSound(soundWoodFootstep).setBlockName("bookshelf");
|
||||
public static final Block cobblestoneMossy = (new Block(48, 36, Material.rock)).setHardness(2.0F).setResistance(10.0F).setStepSound(soundStoneFootstep).setBlockName("stoneMoss");
|
||||
public static final Block obsidian = (new BlockObsidian(49, 37)).setHardness(10.0F).setResistance(2000.0F).setStepSound(soundStoneFootstep).setBlockName("obsidian");
|
||||
public static final Block torchWood = (new BlockTorch(50, 80)).setHardness(0.0F).setLightValue(15.0F / 16.0F).setStepSound(soundWoodFootstep).setBlockName("torch").setRequiresSelfNotify();
|
||||
public static final BlockFire fire = (BlockFire)(new BlockFire(51, 31)).setHardness(0.0F).setLightValue(1.0F).setStepSound(soundWoodFootstep).setBlockName("fire").disableStats().setRequiresSelfNotify();
|
||||
public static final Block mobSpawner = (new BlockMobSpawner(52, 65)).setHardness(5.0F).setStepSound(soundMetalFootstep).setBlockName("mobSpawner").disableStats();
|
||||
public static final Block stairCompactPlanks = (new BlockStairs(53, planks)).setBlockName("stairsWood").setRequiresSelfNotify();
|
||||
public static final Block chest = (new BlockChest(54)).setHardness(2.5F).setStepSound(soundWoodFootstep).setBlockName("chest").setRequiresSelfNotify();
|
||||
public static final Block redstoneWire = (new BlockRedstoneWire(55, 164)).setHardness(0.0F).setStepSound(soundPowderFootstep).setBlockName("redstoneDust").disableStats().setRequiresSelfNotify();
|
||||
public static final Block oreDiamond = (new BlockOre(56, 50)).setHardness(3.0F).setResistance(5.0F).setStepSound(soundStoneFootstep).setBlockName("oreDiamond");
|
||||
public static final Block blockDiamond = (new BlockOreStorage(57, 24)).setHardness(5.0F).setResistance(10.0F).setStepSound(soundMetalFootstep).setBlockName("blockDiamond");
|
||||
public static final Block workbench = (new BlockWorkbench(58)).setHardness(2.5F).setStepSound(soundWoodFootstep).setBlockName("workbench");
|
||||
public static final Block crops = (new BlockCrops(59, 88)).setHardness(0.0F).setStepSound(soundGrassFootstep).setBlockName("crops").disableStats().setRequiresSelfNotify();
|
||||
public static final Block tilledField = (new BlockFarmland(60)).setHardness(0.6F).setStepSound(soundGravelFootstep).setBlockName("farmland");
|
||||
public static final Block stoneOvenIdle = (new BlockFurnace(61, false)).setHardness(3.5F).setStepSound(soundStoneFootstep).setBlockName("furnace").setRequiresSelfNotify();
|
||||
public static final Block stoneOvenActive = (new BlockFurnace(62, true)).setHardness(3.5F).setStepSound(soundStoneFootstep).setLightValue(14.0F / 16.0F).setBlockName("furnace").setRequiresSelfNotify();
|
||||
public static final Block signPost = (new BlockSign(63, TileEntitySign.class, true)).setHardness(1.0F).setStepSound(soundWoodFootstep).setBlockName("sign").disableStats().setRequiresSelfNotify();
|
||||
public static final Block doorWood = (new BlockDoor(64, Material.wood)).setHardness(3.0F).setStepSound(soundWoodFootstep).setBlockName("doorWood").disableStats().setRequiresSelfNotify();
|
||||
public static final Block ladder = (new BlockLadder(65, 83)).setHardness(0.4F).setStepSound(soundWoodFootstep).setBlockName("ladder").setRequiresSelfNotify();
|
||||
public static final Block minecartTrack = (new BlockRail(66, 128, false)).setHardness(0.7F).setStepSound(soundMetalFootstep).setBlockName("rail").setRequiresSelfNotify();
|
||||
public static final Block stairCompactCobblestone = (new BlockStairs(67, cobblestone)).setBlockName("stairsStone").setRequiresSelfNotify();
|
||||
public static final Block signWall = (new BlockSign(68, TileEntitySign.class, false)).setHardness(1.0F).setStepSound(soundWoodFootstep).setBlockName("sign").disableStats().setRequiresSelfNotify();
|
||||
public static final Block lever = (new BlockLever(69, 96)).setHardness(0.5F).setStepSound(soundWoodFootstep).setBlockName("lever").setRequiresSelfNotify();
|
||||
public static final Block pressurePlateStone = (new BlockPressurePlate(70, stone.blockIndexInTexture, EnumMobType.mobs, Material.rock)).setHardness(0.5F).setStepSound(soundStoneFootstep).setBlockName("pressurePlate").setRequiresSelfNotify();
|
||||
public static final Block doorSteel = (new BlockDoor(71, Material.iron)).setHardness(5.0F).setStepSound(soundMetalFootstep).setBlockName("doorIron").disableStats().setRequiresSelfNotify();
|
||||
public static final Block pressurePlatePlanks = (new BlockPressurePlate(72, planks.blockIndexInTexture, EnumMobType.everything, Material.wood)).setHardness(0.5F).setStepSound(soundWoodFootstep).setBlockName("pressurePlate").setRequiresSelfNotify();
|
||||
public static final Block oreRedstone = (new BlockRedstoneOre(73, 51, false)).setHardness(3.0F).setResistance(5.0F).setStepSound(soundStoneFootstep).setBlockName("oreRedstone").setRequiresSelfNotify();
|
||||
public static final Block oreRedstoneGlowing = (new BlockRedstoneOre(74, 51, true)).setLightValue(10.0F / 16.0F).setHardness(3.0F).setResistance(5.0F).setStepSound(soundStoneFootstep).setBlockName("oreRedstone").setRequiresSelfNotify();
|
||||
public static final Block torchRedstoneIdle = (new BlockRedstoneTorch(75, 115, false)).setHardness(0.0F).setStepSound(soundWoodFootstep).setBlockName("notGate").setRequiresSelfNotify();
|
||||
public static final Block torchRedstoneActive = (new BlockRedstoneTorch(76, 99, true)).setHardness(0.0F).setLightValue(0.5F).setStepSound(soundWoodFootstep).setBlockName("notGate").setRequiresSelfNotify();
|
||||
public static final Block button = (new BlockButton(77, stone.blockIndexInTexture)).setHardness(0.5F).setStepSound(soundStoneFootstep).setBlockName("button").setRequiresSelfNotify();
|
||||
public static final Block snow = (new BlockSnow(78, 66)).setHardness(0.1F).setStepSound(soundClothFootstep).setBlockName("snow");
|
||||
public static final Block ice = (new BlockIce(79, 67)).setHardness(0.5F).setLightOpacity(3).setStepSound(soundGlassFootstep).setBlockName("ice");
|
||||
public static final Block blockSnow = (new BlockSnowBlock(80, 66)).setHardness(0.2F).setStepSound(soundClothFootstep).setBlockName("snow");
|
||||
public static final Block cactus = (new BlockCactus(81, 70)).setHardness(0.4F).setStepSound(soundClothFootstep).setBlockName("cactus");
|
||||
public static final Block blockClay = (new BlockClay(82, 72)).setHardness(0.6F).setStepSound(soundGravelFootstep).setBlockName("clay");
|
||||
public static final Block reed = (new BlockReed(83, 73)).setHardness(0.0F).setStepSound(soundGrassFootstep).setBlockName("reeds").disableStats();
|
||||
public static final Block jukebox = (new BlockJukeBox(84, 74)).setHardness(2.0F).setResistance(10.0F).setStepSound(soundStoneFootstep).setBlockName("jukebox").setRequiresSelfNotify();
|
||||
public static final Block fence = (new BlockFence(85, 4)).setHardness(2.0F).setResistance(5.0F).setStepSound(soundWoodFootstep).setBlockName("fence").setRequiresSelfNotify();
|
||||
public static final Block pumpkin = (new BlockPumpkin(86, 102, false)).setHardness(1.0F).setStepSound(soundWoodFootstep).setBlockName("pumpkin").setRequiresSelfNotify();
|
||||
public static final Block bloodStone = (new BlockNetherrack(87, 103)).setHardness(0.4F).setStepSound(soundStoneFootstep).setBlockName("hellrock");
|
||||
public static final Block slowSand = (new BlockSoulSand(88, 104)).setHardness(0.5F).setStepSound(soundSandFootstep).setBlockName("hellsand");
|
||||
public static final Block glowStone = (new BlockGlowStone(89, 105, Material.rock)).setHardness(0.3F).setStepSound(soundGlassFootstep).setLightValue(1.0F).setBlockName("lightgem");
|
||||
public static final BlockPortal portal = (BlockPortal)(new BlockPortal(90, 14)).setHardness(-1.0F).setStepSound(soundGlassFootstep).setLightValue(12.0F / 16.0F).setBlockName("portal");
|
||||
public static final Block pumpkinLantern = (new BlockPumpkin(91, 102, true)).setHardness(1.0F).setStepSound(soundWoodFootstep).setLightValue(1.0F).setBlockName("litpumpkin").setRequiresSelfNotify();
|
||||
public static final Block cake = (new BlockCake(92, 121)).setHardness(0.5F).setStepSound(soundClothFootstep).setBlockName("cake").disableStats().setRequiresSelfNotify();
|
||||
public static final Block redstoneRepeaterIdle = (new BlockRedstoneRepeater(93, false)).setHardness(0.0F).setStepSound(soundWoodFootstep).setBlockName("diode").disableStats().setRequiresSelfNotify();
|
||||
public static final Block redstoneRepeaterActive = (new BlockRedstoneRepeater(94, true)).setHardness(0.0F).setLightValue(10.0F / 16.0F).setStepSound(soundWoodFootstep).setBlockName("diode").disableStats().setRequiresSelfNotify();
|
||||
public static final Block lockedChest = (new BlockLockedChest(95)).setHardness(0.0F).setLightValue(1.0F).setStepSound(soundWoodFootstep).setBlockName("lockedchest").setTickOnLoad(true).setRequiresSelfNotify();
|
||||
public static final Block trapdoor = (new BlockTrapDoor(96, Material.wood)).setHardness(3.0F).setStepSound(soundWoodFootstep).setBlockName("trapdoor").disableStats().setRequiresSelfNotify();
|
||||
public int blockIndexInTexture;
|
||||
public final int blockID;
|
||||
protected float blockHardness;
|
||||
protected float blockResistance;
|
||||
protected boolean blockConstructorCalled;
|
||||
protected boolean enableStats;
|
||||
public double minX;
|
||||
public double minY;
|
||||
public double minZ;
|
||||
public double maxX;
|
||||
public double maxY;
|
||||
public double maxZ;
|
||||
public StepSound stepSound;
|
||||
public float blockParticleGravity;
|
||||
public final Material blockMaterial;
|
||||
public float slipperiness;
|
||||
private String blockName;
|
||||
|
||||
protected Block(int var1, Material var2) {
|
||||
this.blockConstructorCalled = true;
|
||||
this.enableStats = true;
|
||||
this.stepSound = soundPowderFootstep;
|
||||
this.blockParticleGravity = 1.0F;
|
||||
this.slipperiness = 0.6F;
|
||||
if(blocksList[var1] != null) {
|
||||
throw new IllegalArgumentException("Slot " + var1 + " is already occupied by " + blocksList[var1] + " when adding " + this);
|
||||
} else {
|
||||
this.blockMaterial = var2;
|
||||
blocksList[var1] = this;
|
||||
this.blockID = var1;
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
opaqueCubeLookup[var1] = this.isOpaqueCube();
|
||||
lightOpacity[var1] = this.isOpaqueCube() ? 255 : 0;
|
||||
canBlockGrass[var1] = !var2.getCanBlockGrass();
|
||||
isBlockContainer[var1] = false;
|
||||
}
|
||||
}
|
||||
|
||||
protected Block setRequiresSelfNotify() {
|
||||
requiresSelfNotify[this.blockID] = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
protected void setFireBurnRates() {
|
||||
}
|
||||
|
||||
protected Block(int var1, int var2, Material var3) {
|
||||
this(var1, var3);
|
||||
this.blockIndexInTexture = var2;
|
||||
}
|
||||
|
||||
protected Block setStepSound(StepSound var1) {
|
||||
this.stepSound = var1;
|
||||
return this;
|
||||
}
|
||||
|
||||
protected Block setLightOpacity(int var1) {
|
||||
lightOpacity[this.blockID] = var1;
|
||||
return this;
|
||||
}
|
||||
|
||||
protected Block setLightValue(float var1) {
|
||||
lightValue[this.blockID] = (int)(15.0F * var1);
|
||||
return this;
|
||||
}
|
||||
|
||||
protected Block setResistance(float var1) {
|
||||
this.blockResistance = var1 * 3.0F;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return true;
|
||||
}
|
||||
|
||||
protected Block setHardness(float var1) {
|
||||
this.blockHardness = var1;
|
||||
if(this.blockResistance < var1 * 5.0F) {
|
||||
this.blockResistance = var1 * 5.0F;
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
protected Block setBlockUnbreakable() {
|
||||
this.setHardness(-1.0F);
|
||||
return this;
|
||||
}
|
||||
|
||||
public float getHardness() {
|
||||
return this.blockHardness;
|
||||
}
|
||||
|
||||
protected Block setTickOnLoad(boolean var1) {
|
||||
tickOnLoad[this.blockID] = var1;
|
||||
return this;
|
||||
}
|
||||
|
||||
public void setBlockBounds(float var1, float var2, float var3, float var4, float var5, float var6) {
|
||||
this.minX = (double)var1;
|
||||
this.minY = (double)var2;
|
||||
this.minZ = (double)var3;
|
||||
this.maxX = (double)var4;
|
||||
this.maxY = (double)var5;
|
||||
this.maxZ = (double)var6;
|
||||
}
|
||||
|
||||
public boolean shouldSideBeRendered(IBlockAccess var1, int var2, int var3, int var4, int var5) {
|
||||
return var1.getBlockMaterial(var2, var3, var4).isSolid();
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
return this.getBlockTextureFromSide(var1);
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSide(int var1) {
|
||||
return this.blockIndexInTexture;
|
||||
}
|
||||
|
||||
public void getCollidingBoundingBoxes(World var1, int var2, int var3, int var4, AxisAlignedBB var5, ArrayList var6) {
|
||||
AxisAlignedBB var7 = this.getCollisionBoundingBoxFromPool(var1, var2, var3, var4);
|
||||
if(var7 != null && var5.intersectsWith(var7)) {
|
||||
var6.add(var7);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
return AxisAlignedBB.getBoundingBoxFromPool((double)var2 + this.minX, (double)var3 + this.minY, (double)var4 + this.minZ, (double)var2 + this.maxX, (double)var3 + this.maxY, (double)var4 + this.maxZ);
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean canCollideCheck(int var1, boolean var2) {
|
||||
return this.isCollidable();
|
||||
}
|
||||
|
||||
public boolean isCollidable() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
}
|
||||
|
||||
public void onBlockDestroyedByPlayer(World var1, int var2, int var3, int var4, int var5) {
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
}
|
||||
|
||||
public int tickRate() {
|
||||
return 10;
|
||||
}
|
||||
|
||||
public void onBlockAdded(World var1, int var2, int var3, int var4) {
|
||||
}
|
||||
|
||||
public void onBlockRemoval(World var1, int var2, int var3, int var4) {
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return this.blockID;
|
||||
}
|
||||
|
||||
public float blockStrength(EntityPlayer var1) {
|
||||
return this.blockHardness < 0.0F ? 0.0F : (!var1.canHarvestBlock(this) ? 1.0F / this.blockHardness / 100.0F : var1.getCurrentPlayerStrVsBlock(this) / this.blockHardness / 30.0F);
|
||||
}
|
||||
|
||||
public final void dropBlockAsItem(World var1, int var2, int var3, int var4, int var5) {
|
||||
this.dropBlockAsItemWithChance(var1, var2, var3, var4, var5, 1.0F);
|
||||
}
|
||||
|
||||
public void dropBlockAsItemWithChance(World var1, int var2, int var3, int var4, int var5, float var6) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
int var7 = this.quantityDropped(var1.rand);
|
||||
|
||||
for(int var8 = 0; var8 < var7; ++var8) {
|
||||
if(var1.rand.nextFloat() <= var6) {
|
||||
int var9 = this.idDropped(var5, var1.rand);
|
||||
if(var9 > 0) {
|
||||
this.dropBlockAsItem_do(var1, var2, var3, var4, new ItemStack(var9, 1, this.damageDropped(var5)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
protected void dropBlockAsItem_do(World var1, int var2, int var3, int var4, ItemStack var5) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
float var6 = 0.7F;
|
||||
double var7 = (double)(var1.rand.nextFloat() * var6) + (double)(1.0F - var6) * 0.5D;
|
||||
double var9 = (double)(var1.rand.nextFloat() * var6) + (double)(1.0F - var6) * 0.5D;
|
||||
double var11 = (double)(var1.rand.nextFloat() * var6) + (double)(1.0F - var6) * 0.5D;
|
||||
EntityItem var13 = new EntityItem(var1, (double)var2 + var7, (double)var3 + var9, (double)var4 + var11, var5);
|
||||
var13.delayBeforeCanPickup = 10;
|
||||
var1.entityJoinedWorld(var13);
|
||||
}
|
||||
}
|
||||
|
||||
protected int damageDropped(int var1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public float getExplosionResistance(Entity var1) {
|
||||
return this.blockResistance / 5.0F;
|
||||
}
|
||||
|
||||
public MovingObjectPosition collisionRayTrace(World var1, int var2, int var3, int var4, Vec3D var5, Vec3D var6) {
|
||||
this.setBlockBoundsBasedOnState(var1, var2, var3, var4);
|
||||
var5 = var5.addVector((double)(-var2), (double)(-var3), (double)(-var4));
|
||||
var6 = var6.addVector((double)(-var2), (double)(-var3), (double)(-var4));
|
||||
Vec3D var7 = var5.getIntermediateWithXValue(var6, this.minX);
|
||||
Vec3D var8 = var5.getIntermediateWithXValue(var6, this.maxX);
|
||||
Vec3D var9 = var5.getIntermediateWithYValue(var6, this.minY);
|
||||
Vec3D var10 = var5.getIntermediateWithYValue(var6, this.maxY);
|
||||
Vec3D var11 = var5.getIntermediateWithZValue(var6, this.minZ);
|
||||
Vec3D var12 = var5.getIntermediateWithZValue(var6, this.maxZ);
|
||||
if(!this.isVecInsideYZBounds(var7)) {
|
||||
var7 = null;
|
||||
}
|
||||
|
||||
if(!this.isVecInsideYZBounds(var8)) {
|
||||
var8 = null;
|
||||
}
|
||||
|
||||
if(!this.isVecInsideXZBounds(var9)) {
|
||||
var9 = null;
|
||||
}
|
||||
|
||||
if(!this.isVecInsideXZBounds(var10)) {
|
||||
var10 = null;
|
||||
}
|
||||
|
||||
if(!this.isVecInsideXYBounds(var11)) {
|
||||
var11 = null;
|
||||
}
|
||||
|
||||
if(!this.isVecInsideXYBounds(var12)) {
|
||||
var12 = null;
|
||||
}
|
||||
|
||||
Vec3D var13 = null;
|
||||
if(var7 != null && (var13 == null || var5.distanceTo(var7) < var5.distanceTo(var13))) {
|
||||
var13 = var7;
|
||||
}
|
||||
|
||||
if(var8 != null && (var13 == null || var5.distanceTo(var8) < var5.distanceTo(var13))) {
|
||||
var13 = var8;
|
||||
}
|
||||
|
||||
if(var9 != null && (var13 == null || var5.distanceTo(var9) < var5.distanceTo(var13))) {
|
||||
var13 = var9;
|
||||
}
|
||||
|
||||
if(var10 != null && (var13 == null || var5.distanceTo(var10) < var5.distanceTo(var13))) {
|
||||
var13 = var10;
|
||||
}
|
||||
|
||||
if(var11 != null && (var13 == null || var5.distanceTo(var11) < var5.distanceTo(var13))) {
|
||||
var13 = var11;
|
||||
}
|
||||
|
||||
if(var12 != null && (var13 == null || var5.distanceTo(var12) < var5.distanceTo(var13))) {
|
||||
var13 = var12;
|
||||
}
|
||||
|
||||
if(var13 == null) {
|
||||
return null;
|
||||
} else {
|
||||
byte var14 = -1;
|
||||
if(var13 == var7) {
|
||||
var14 = 4;
|
||||
}
|
||||
|
||||
if(var13 == var8) {
|
||||
var14 = 5;
|
||||
}
|
||||
|
||||
if(var13 == var9) {
|
||||
var14 = 0;
|
||||
}
|
||||
|
||||
if(var13 == var10) {
|
||||
var14 = 1;
|
||||
}
|
||||
|
||||
if(var13 == var11) {
|
||||
var14 = 2;
|
||||
}
|
||||
|
||||
if(var13 == var12) {
|
||||
var14 = 3;
|
||||
}
|
||||
|
||||
return new MovingObjectPosition(var2, var3, var4, var14, var13.addVector((double)var2, (double)var3, (double)var4));
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isVecInsideYZBounds(Vec3D var1) {
|
||||
return var1 == null ? false : var1.yCoord >= this.minY && var1.yCoord <= this.maxY && var1.zCoord >= this.minZ && var1.zCoord <= this.maxZ;
|
||||
}
|
||||
|
||||
private boolean isVecInsideXZBounds(Vec3D var1) {
|
||||
return var1 == null ? false : var1.xCoord >= this.minX && var1.xCoord <= this.maxX && var1.zCoord >= this.minZ && var1.zCoord <= this.maxZ;
|
||||
}
|
||||
|
||||
private boolean isVecInsideXYBounds(Vec3D var1) {
|
||||
return var1 == null ? false : var1.xCoord >= this.minX && var1.xCoord <= this.maxX && var1.yCoord >= this.minY && var1.yCoord <= this.maxY;
|
||||
}
|
||||
|
||||
public void onBlockDestroyedByExplosion(World var1, int var2, int var3, int var4) {
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockOnSide(World var1, int var2, int var3, int var4, int var5) {
|
||||
return this.canPlaceBlockAt(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockId(var2, var3, var4);
|
||||
return var5 == 0 || blocksList[var5].blockMaterial.func_27090_g();
|
||||
}
|
||||
|
||||
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void onEntityWalking(World var1, int var2, int var3, int var4, Entity var5) {
|
||||
}
|
||||
|
||||
public void onBlockPlaced(World var1, int var2, int var3, int var4, int var5) {
|
||||
}
|
||||
|
||||
public void onBlockClicked(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
}
|
||||
|
||||
public void velocityToAddToEntity(World var1, int var2, int var3, int var4, Entity var5, Vec3D var6) {
|
||||
}
|
||||
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) {
|
||||
}
|
||||
|
||||
public boolean isPoweringTo(IBlockAccess var1, int var2, int var3, int var4, int var5) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean canProvidePower() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void onEntityCollidedWithBlock(World var1, int var2, int var3, int var4, Entity var5) {
|
||||
}
|
||||
|
||||
public boolean isIndirectlyPoweringTo(World var1, int var2, int var3, int var4, int var5) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void harvestBlock(World var1, EntityPlayer var2, int var3, int var4, int var5, int var6) {
|
||||
var2.addStat(StatList.mineBlockStatArray[this.blockID], 1);
|
||||
this.dropBlockAsItem(var1, var3, var4, var5, var6);
|
||||
}
|
||||
|
||||
public boolean canBlockStay(World var1, int var2, int var3, int var4) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public void onBlockPlacedBy(World var1, int var2, int var3, int var4, EntityLiving var5) {
|
||||
}
|
||||
|
||||
public Block setBlockName(String var1) {
|
||||
this.blockName = "tile." + var1;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getNameLocalizedForStats() {
|
||||
return StatCollector.translateToLocal(this.getBlockName() + ".name");
|
||||
}
|
||||
|
||||
public String getBlockName() {
|
||||
return this.blockName;
|
||||
}
|
||||
|
||||
public void playBlock(World var1, int var2, int var3, int var4, int var5, int var6) {
|
||||
}
|
||||
|
||||
public boolean getEnableStats() {
|
||||
return this.enableStats;
|
||||
}
|
||||
|
||||
protected Block disableStats() {
|
||||
this.enableStats = false;
|
||||
return this;
|
||||
}
|
||||
|
||||
public int getMobilityFlag() {
|
||||
return this.blockMaterial.getMaterialMobility();
|
||||
}
|
||||
|
||||
static {
|
||||
Item.itemsList[cloth.blockID] = (new ItemCloth(cloth.blockID - 256)).setItemName("cloth");
|
||||
Item.itemsList[wood.blockID] = (new ItemLog(wood.blockID - 256)).setItemName("log");
|
||||
Item.itemsList[stairSingle.blockID] = (new ItemSlab(stairSingle.blockID - 256)).setItemName("stoneSlab");
|
||||
Item.itemsList[sapling.blockID] = (new ItemSapling(sapling.blockID - 256)).setItemName("sapling");
|
||||
Item.itemsList[leaves.blockID] = (new ItemLeaves(leaves.blockID - 256)).setItemName("leaves");
|
||||
Item.itemsList[pistonBase.blockID] = new ItemPiston(pistonBase.blockID - 256);
|
||||
Item.itemsList[pistonStickyBase.blockID] = new ItemPiston(pistonStickyBase.blockID - 256);
|
||||
|
||||
for(int var0 = 0; var0 < 256; ++var0) {
|
||||
if(blocksList[var0] != null && Item.itemsList[var0] == null) {
|
||||
Item.itemsList[var0] = new ItemBlock(var0 - 256);
|
||||
blocksList[var0].setFireBurnRates();
|
||||
}
|
||||
}
|
||||
|
||||
canBlockGrass[0] = true;
|
||||
StatList.func_25088_a();
|
||||
}
|
||||
}
|
||||
190
src/net/minecraft/src/BlockBed.java
Normal file
190
src/net/minecraft/src/BlockBed.java
Normal file
@@ -0,0 +1,190 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockBed extends Block {
|
||||
public static final int[][] field_22023_a = new int[][]{{0, 1}, {-1, 0}, {0, -1}, {1, 0}};
|
||||
|
||||
public BlockBed(int var1) {
|
||||
super(var1, 134, Material.cloth);
|
||||
this.setBounds();
|
||||
}
|
||||
|
||||
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
if(var1.singleplayerWorld) {
|
||||
return true;
|
||||
} else {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if(!func_22020_d(var6)) {
|
||||
int var7 = func_22019_c(var6);
|
||||
var2 += field_22023_a[var7][0];
|
||||
var4 += field_22023_a[var7][1];
|
||||
if(var1.getBlockId(var2, var3, var4) != this.blockID) {
|
||||
return true;
|
||||
}
|
||||
|
||||
var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
}
|
||||
|
||||
if(!var1.worldProvider.func_28108_d()) {
|
||||
double var16 = (double)var2 + 0.5D;
|
||||
double var17 = (double)var3 + 0.5D;
|
||||
double var11 = (double)var4 + 0.5D;
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
int var13 = func_22019_c(var6);
|
||||
var2 += field_22023_a[var13][0];
|
||||
var4 += field_22023_a[var13][1];
|
||||
if(var1.getBlockId(var2, var3, var4) == this.blockID) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
var16 = (var16 + (double)var2 + 0.5D) / 2.0D;
|
||||
var17 = (var17 + (double)var3 + 0.5D) / 2.0D;
|
||||
var11 = (var11 + (double)var4 + 0.5D) / 2.0D;
|
||||
}
|
||||
|
||||
var1.newExplosion((Entity)null, (double)((float)var2 + 0.5F), (double)((float)var3 + 0.5F), (double)((float)var4 + 0.5F), 5.0F, true);
|
||||
return true;
|
||||
} else {
|
||||
if(func_22018_f(var6)) {
|
||||
EntityPlayer var14 = null;
|
||||
Iterator var8 = var1.playerEntities.iterator();
|
||||
|
||||
while(var8.hasNext()) {
|
||||
EntityPlayer var9 = (EntityPlayer)var8.next();
|
||||
if(var9.func_22057_E()) {
|
||||
ChunkCoordinates var10 = var9.playerLocation;
|
||||
if(var10.posX == var2 && var10.posY == var3 && var10.posZ == var4) {
|
||||
var14 = var9;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(var14 != null) {
|
||||
var5.func_22061_a("tile.bed.occupied");
|
||||
return true;
|
||||
}
|
||||
|
||||
func_22022_a(var1, var2, var3, var4, false);
|
||||
}
|
||||
|
||||
EnumStatus var15 = var5.goToSleep(var2, var3, var4);
|
||||
if(var15 == EnumStatus.OK) {
|
||||
func_22022_a(var1, var2, var3, var4, true);
|
||||
return true;
|
||||
} else {
|
||||
if(var15 == EnumStatus.NOT_POSSIBLE_NOW) {
|
||||
var5.func_22061_a("tile.bed.noSleep");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
if(var1 == 0) {
|
||||
return Block.planks.blockIndexInTexture;
|
||||
} else {
|
||||
int var3 = func_22019_c(var2);
|
||||
int var4 = ModelBed.field_22155_c[var3][var1];
|
||||
return func_22020_d(var2) ? (var4 == 2 ? this.blockIndexInTexture + 2 + 16 : (var4 != 5 && var4 != 4 ? this.blockIndexInTexture + 1 : this.blockIndexInTexture + 1 + 16)) : (var4 == 3 ? this.blockIndexInTexture - 1 + 16 : (var4 != 5 && var4 != 4 ? this.blockIndexInTexture : this.blockIndexInTexture + 16));
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) {
|
||||
this.setBounds();
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
int var7 = func_22019_c(var6);
|
||||
if(func_22020_d(var6)) {
|
||||
if(var1.getBlockId(var2 - field_22023_a[var7][0], var3, var4 - field_22023_a[var7][1]) != this.blockID) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
} else if(var1.getBlockId(var2 + field_22023_a[var7][0], var3, var4 + field_22023_a[var7][1]) != this.blockID) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
if(!var1.singleplayerWorld) {
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var6);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return func_22020_d(var1) ? 0 : Item.bed.shiftedIndex;
|
||||
}
|
||||
|
||||
private void setBounds() {
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 9.0F / 16.0F, 1.0F);
|
||||
}
|
||||
|
||||
public static int func_22019_c(int var0) {
|
||||
return var0 & 3;
|
||||
}
|
||||
|
||||
public static boolean func_22020_d(int var0) {
|
||||
return (var0 & 8) != 0;
|
||||
}
|
||||
|
||||
public static boolean func_22018_f(int var0) {
|
||||
return (var0 & 4) != 0;
|
||||
}
|
||||
|
||||
public static void func_22022_a(World var0, int var1, int var2, int var3, boolean var4) {
|
||||
int var5 = var0.getBlockMetadata(var1, var2, var3);
|
||||
if(var4) {
|
||||
var5 |= 4;
|
||||
} else {
|
||||
var5 &= -5;
|
||||
}
|
||||
|
||||
var0.setBlockMetadataWithNotify(var1, var2, var3, var5);
|
||||
}
|
||||
|
||||
public static ChunkCoordinates func_22021_g(World var0, int var1, int var2, int var3, int var4) {
|
||||
int var5 = var0.getBlockMetadata(var1, var2, var3);
|
||||
int var6 = func_22019_c(var5);
|
||||
|
||||
for(int var7 = 0; var7 <= 1; ++var7) {
|
||||
int var8 = var1 - field_22023_a[var6][0] * var7 - 1;
|
||||
int var9 = var3 - field_22023_a[var6][1] * var7 - 1;
|
||||
int var10 = var8 + 2;
|
||||
int var11 = var9 + 2;
|
||||
|
||||
for(int var12 = var8; var12 <= var10; ++var12) {
|
||||
for(int var13 = var9; var13 <= var11; ++var13) {
|
||||
if(var0.isBlockNormalCube(var12, var2 - 1, var13) && var0.isAirBlock(var12, var2, var13) && var0.isAirBlock(var12, var2 + 1, var13)) {
|
||||
if(var4 <= 0) {
|
||||
return new ChunkCoordinates(var12, var2, var13);
|
||||
}
|
||||
|
||||
--var4;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public void dropBlockAsItemWithChance(World var1, int var2, int var3, int var4, int var5, float var6) {
|
||||
if(!func_22020_d(var5)) {
|
||||
super.dropBlockAsItemWithChance(var1, var2, var3, var4, var5, var6);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int getMobilityFlag() {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
17
src/net/minecraft/src/BlockBookshelf.java
Normal file
17
src/net/minecraft/src/BlockBookshelf.java
Normal file
@@ -0,0 +1,17 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockBookshelf extends Block {
|
||||
public BlockBookshelf(int var1, int var2) {
|
||||
super(var1, var2, Material.wood);
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSide(int var1) {
|
||||
return var1 <= 1 ? 4 : this.blockIndexInTexture;
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
14
src/net/minecraft/src/BlockBreakable.java
Normal file
14
src/net/minecraft/src/BlockBreakable.java
Normal file
@@ -0,0 +1,14 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BlockBreakable extends Block {
|
||||
private boolean field_6084_a;
|
||||
|
||||
protected BlockBreakable(int var1, int var2, Material var3, boolean var4) {
|
||||
super(var1, var2, var3);
|
||||
this.field_6084_a = var4;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
215
src/net/minecraft/src/BlockButton.java
Normal file
215
src/net/minecraft/src/BlockButton.java
Normal file
@@ -0,0 +1,215 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockButton extends Block {
|
||||
protected BlockButton(int var1, int var2) {
|
||||
super(var1, var2, Material.circuits);
|
||||
this.setTickOnLoad(true);
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public int tickRate() {
|
||||
return 20;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockOnSide(World var1, int var2, int var3, int var4, int var5) {
|
||||
return var5 == 2 && var1.isBlockNormalCube(var2, var3, var4 + 1) ? true : (var5 == 3 && var1.isBlockNormalCube(var2, var3, var4 - 1) ? true : (var5 == 4 && var1.isBlockNormalCube(var2 + 1, var3, var4) ? true : var5 == 5 && var1.isBlockNormalCube(var2 - 1, var3, var4)));
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return var1.isBlockNormalCube(var2 - 1, var3, var4) ? true : (var1.isBlockNormalCube(var2 + 1, var3, var4) ? true : (var1.isBlockNormalCube(var2, var3, var4 - 1) ? true : var1.isBlockNormalCube(var2, var3, var4 + 1)));
|
||||
}
|
||||
|
||||
public void onBlockPlaced(World var1, int var2, int var3, int var4, int var5) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
int var7 = var6 & 8;
|
||||
var6 &= 7;
|
||||
if(var5 == 2 && var1.isBlockNormalCube(var2, var3, var4 + 1)) {
|
||||
var6 = 4;
|
||||
} else if(var5 == 3 && var1.isBlockNormalCube(var2, var3, var4 - 1)) {
|
||||
var6 = 3;
|
||||
} else if(var5 == 4 && var1.isBlockNormalCube(var2 + 1, var3, var4)) {
|
||||
var6 = 2;
|
||||
} else if(var5 == 5 && var1.isBlockNormalCube(var2 - 1, var3, var4)) {
|
||||
var6 = 1;
|
||||
} else {
|
||||
var6 = this.getOrientation(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6 + var7);
|
||||
}
|
||||
|
||||
private int getOrientation(World var1, int var2, int var3, int var4) {
|
||||
return var1.isBlockNormalCube(var2 - 1, var3, var4) ? 1 : (var1.isBlockNormalCube(var2 + 1, var3, var4) ? 2 : (var1.isBlockNormalCube(var2, var3, var4 - 1) ? 3 : (var1.isBlockNormalCube(var2, var3, var4 + 1) ? 4 : 1)));
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(this.func_322_g(var1, var2, var3, var4)) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4) & 7;
|
||||
boolean var7 = false;
|
||||
if(!var1.isBlockNormalCube(var2 - 1, var3, var4) && var6 == 1) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(!var1.isBlockNormalCube(var2 + 1, var3, var4) && var6 == 2) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(!var1.isBlockNormalCube(var2, var3, var4 - 1) && var6 == 3) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(!var1.isBlockNormalCube(var2, var3, var4 + 1) && var6 == 4) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(var7) {
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4));
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private boolean func_322_g(World var1, int var2, int var3, int var4) {
|
||||
if(!this.canPlaceBlockAt(var1, var2, var3, var4)) {
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4));
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4);
|
||||
int var6 = var5 & 7;
|
||||
boolean var7 = (var5 & 8) > 0;
|
||||
float var8 = 6.0F / 16.0F;
|
||||
float var9 = 10.0F / 16.0F;
|
||||
float var10 = 3.0F / 16.0F;
|
||||
float var11 = 2.0F / 16.0F;
|
||||
if(var7) {
|
||||
var11 = 1.0F / 16.0F;
|
||||
}
|
||||
|
||||
if(var6 == 1) {
|
||||
this.setBlockBounds(0.0F, var8, 0.5F - var10, var11, var9, 0.5F + var10);
|
||||
} else if(var6 == 2) {
|
||||
this.setBlockBounds(1.0F - var11, var8, 0.5F - var10, 1.0F, var9, 0.5F + var10);
|
||||
} else if(var6 == 3) {
|
||||
this.setBlockBounds(0.5F - var10, var8, 0.0F, 0.5F + var10, var9, var11);
|
||||
} else if(var6 == 4) {
|
||||
this.setBlockBounds(0.5F - var10, var8, 1.0F - var11, 0.5F + var10, var9, 1.0F);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onBlockClicked(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
this.blockActivated(var1, var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
int var7 = var6 & 7;
|
||||
int var8 = 8 - (var6 & 8);
|
||||
if(var8 == 0) {
|
||||
return true;
|
||||
} else {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var7 + var8);
|
||||
var1.markBlocksDirty(var2, var3, var4, var2, var3, var4);
|
||||
var1.playSoundEffect((double)var2 + 0.5D, (double)var3 + 0.5D, (double)var4 + 0.5D, "random.click", 0.3F, 0.6F);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4, this.blockID);
|
||||
if(var7 == 1) {
|
||||
var1.notifyBlocksOfNeighborChange(var2 - 1, var3, var4, this.blockID);
|
||||
} else if(var7 == 2) {
|
||||
var1.notifyBlocksOfNeighborChange(var2 + 1, var3, var4, this.blockID);
|
||||
} else if(var7 == 3) {
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4 - 1, this.blockID);
|
||||
} else if(var7 == 4) {
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4 + 1, this.blockID);
|
||||
} else {
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID);
|
||||
}
|
||||
|
||||
var1.scheduleUpdateTick(var2, var3, var4, this.blockID, this.tickRate());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public void onBlockRemoval(World var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if((var5 & 8) > 0) {
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4, this.blockID);
|
||||
int var6 = var5 & 7;
|
||||
if(var6 == 1) {
|
||||
var1.notifyBlocksOfNeighborChange(var2 - 1, var3, var4, this.blockID);
|
||||
} else if(var6 == 2) {
|
||||
var1.notifyBlocksOfNeighborChange(var2 + 1, var3, var4, this.blockID);
|
||||
} else if(var6 == 3) {
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4 - 1, this.blockID);
|
||||
} else if(var6 == 4) {
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4 + 1, this.blockID);
|
||||
} else {
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID);
|
||||
}
|
||||
}
|
||||
|
||||
super.onBlockRemoval(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public boolean isPoweringTo(IBlockAccess var1, int var2, int var3, int var4, int var5) {
|
||||
return (var1.getBlockMetadata(var2, var3, var4) & 8) > 0;
|
||||
}
|
||||
|
||||
public boolean isIndirectlyPoweringTo(World var1, int var2, int var3, int var4, int var5) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if((var6 & 8) == 0) {
|
||||
return false;
|
||||
} else {
|
||||
int var7 = var6 & 7;
|
||||
return var7 == 5 && var5 == 1 ? true : (var7 == 4 && var5 == 2 ? true : (var7 == 3 && var5 == 3 ? true : (var7 == 2 && var5 == 4 ? true : var7 == 1 && var5 == 5)));
|
||||
}
|
||||
}
|
||||
|
||||
public boolean canProvidePower() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if((var6 & 8) != 0) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6 & 7);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4, this.blockID);
|
||||
int var7 = var6 & 7;
|
||||
if(var7 == 1) {
|
||||
var1.notifyBlocksOfNeighborChange(var2 - 1, var3, var4, this.blockID);
|
||||
} else if(var7 == 2) {
|
||||
var1.notifyBlocksOfNeighborChange(var2 + 1, var3, var4, this.blockID);
|
||||
} else if(var7 == 3) {
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4 - 1, this.blockID);
|
||||
} else if(var7 == 4) {
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4 + 1, this.blockID);
|
||||
} else {
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID);
|
||||
}
|
||||
|
||||
var1.playSoundEffect((double)var2 + 0.5D, (double)var3 + 0.5D, (double)var4 + 0.5D, "random.click", 0.3F, 0.5F);
|
||||
var1.markBlocksDirty(var2, var3, var4, var2, var3, var4);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
77
src/net/minecraft/src/BlockCactus.java
Normal file
77
src/net/minecraft/src/BlockCactus.java
Normal file
@@ -0,0 +1,77 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockCactus extends Block {
|
||||
protected BlockCactus(int var1, int var2) {
|
||||
super(var1, var2, Material.cactus);
|
||||
this.setTickOnLoad(true);
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
if(var1.isAirBlock(var2, var3 + 1, var4)) {
|
||||
int var6;
|
||||
for(var6 = 1; var1.getBlockId(var2, var3 - var6, var4) == this.blockID; ++var6) {
|
||||
}
|
||||
|
||||
if(var6 < 3) {
|
||||
int var7 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if(var7 == 15) {
|
||||
var1.setBlockWithNotify(var2, var3 + 1, var4, this.blockID);
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 0);
|
||||
} else {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var7 + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
float var5 = 1.0F / 16.0F;
|
||||
return AxisAlignedBB.getBoundingBoxFromPool((double)((float)var2 + var5), (double)var3, (double)((float)var4 + var5), (double)((float)(var2 + 1) - var5), (double)((float)(var3 + 1) - var5), (double)((float)(var4 + 1) - var5));
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSide(int var1) {
|
||||
return var1 == 1 ? this.blockIndexInTexture - 1 : (var1 == 0 ? this.blockIndexInTexture + 1 : this.blockIndexInTexture);
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return !super.canPlaceBlockAt(var1, var2, var3, var4) ? false : this.canBlockStay(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(!this.canBlockStay(var1, var2, var3, var4)) {
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4));
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public boolean canBlockStay(World var1, int var2, int var3, int var4) {
|
||||
if(var1.getBlockMaterial(var2 - 1, var3, var4).isSolid()) {
|
||||
return false;
|
||||
} else if(var1.getBlockMaterial(var2 + 1, var3, var4).isSolid()) {
|
||||
return false;
|
||||
} else if(var1.getBlockMaterial(var2, var3, var4 - 1).isSolid()) {
|
||||
return false;
|
||||
} else if(var1.getBlockMaterial(var2, var3, var4 + 1).isSolid()) {
|
||||
return false;
|
||||
} else {
|
||||
int var5 = var1.getBlockId(var2, var3 - 1, var4);
|
||||
return var5 == Block.cactus.blockID || var5 == Block.sand.blockID;
|
||||
}
|
||||
}
|
||||
|
||||
public void onEntityCollidedWithBlock(World var1, int var2, int var3, int var4, Entity var5) {
|
||||
var5.attackEntityFrom((Entity)null, 1);
|
||||
}
|
||||
}
|
||||
89
src/net/minecraft/src/BlockCake.java
Normal file
89
src/net/minecraft/src/BlockCake.java
Normal file
@@ -0,0 +1,89 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockCake extends Block {
|
||||
protected BlockCake(int var1, int var2) {
|
||||
super(var1, var2, Material.cakeMaterial);
|
||||
this.setTickOnLoad(true);
|
||||
}
|
||||
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4);
|
||||
float var6 = 1.0F / 16.0F;
|
||||
float var7 = (float)(1 + var5 * 2) / 16.0F;
|
||||
float var8 = 0.5F;
|
||||
this.setBlockBounds(var7, 0.0F, var6, 1.0F - var6, var8, 1.0F - var6);
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4);
|
||||
float var6 = 1.0F / 16.0F;
|
||||
float var7 = (float)(1 + var5 * 2) / 16.0F;
|
||||
float var8 = 0.5F;
|
||||
return AxisAlignedBB.getBoundingBoxFromPool((double)((float)var2 + var7), (double)var3, (double)((float)var4 + var6), (double)((float)(var2 + 1) - var6), (double)((float)var3 + var8 - var6), (double)((float)(var4 + 1) - var6));
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
return var1 == 1 ? this.blockIndexInTexture : (var1 == 0 ? this.blockIndexInTexture + 3 : (var2 > 0 && var1 == 4 ? this.blockIndexInTexture + 2 : this.blockIndexInTexture + 1));
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSide(int var1) {
|
||||
return var1 == 1 ? this.blockIndexInTexture : (var1 == 0 ? this.blockIndexInTexture + 3 : this.blockIndexInTexture + 1);
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
this.eatCakeSlice(var1, var2, var3, var4, var5);
|
||||
return true;
|
||||
}
|
||||
|
||||
public void onBlockClicked(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
this.eatCakeSlice(var1, var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
private void eatCakeSlice(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
if(var5.health < 20) {
|
||||
var5.heal(3);
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4) + 1;
|
||||
if(var6 >= 6) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
} else {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6);
|
||||
var1.markBlockAsNeedsUpdate(var2, var3, var4);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return !super.canPlaceBlockAt(var1, var2, var3, var4) ? false : this.canBlockStay(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(!this.canBlockStay(var1, var2, var3, var4)) {
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4));
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public boolean canBlockStay(World var1, int var2, int var3, int var4) {
|
||||
return var1.getBlockMaterial(var2, var3 - 1, var4).isSolid();
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
113
src/net/minecraft/src/BlockChest.java
Normal file
113
src/net/minecraft/src/BlockChest.java
Normal file
@@ -0,0 +1,113 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockChest extends BlockContainer {
|
||||
private Random random = new Random();
|
||||
|
||||
protected BlockChest(int var1) {
|
||||
super(var1, Material.wood);
|
||||
this.blockIndexInTexture = 26;
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSide(int var1) {
|
||||
return var1 == 1 ? this.blockIndexInTexture - 1 : (var1 == 0 ? this.blockIndexInTexture - 1 : (var1 == 3 ? this.blockIndexInTexture + 1 : this.blockIndexInTexture));
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
int var5 = 0;
|
||||
if(var1.getBlockId(var2 - 1, var3, var4) == this.blockID) {
|
||||
++var5;
|
||||
}
|
||||
|
||||
if(var1.getBlockId(var2 + 1, var3, var4) == this.blockID) {
|
||||
++var5;
|
||||
}
|
||||
|
||||
if(var1.getBlockId(var2, var3, var4 - 1) == this.blockID) {
|
||||
++var5;
|
||||
}
|
||||
|
||||
if(var1.getBlockId(var2, var3, var4 + 1) == this.blockID) {
|
||||
++var5;
|
||||
}
|
||||
|
||||
return var5 > 1 ? false : (this.isThereANeighborChest(var1, var2 - 1, var3, var4) ? false : (this.isThereANeighborChest(var1, var2 + 1, var3, var4) ? false : (this.isThereANeighborChest(var1, var2, var3, var4 - 1) ? false : !this.isThereANeighborChest(var1, var2, var3, var4 + 1))));
|
||||
}
|
||||
|
||||
private boolean isThereANeighborChest(World var1, int var2, int var3, int var4) {
|
||||
return var1.getBlockId(var2, var3, var4) != this.blockID ? false : (var1.getBlockId(var2 - 1, var3, var4) == this.blockID ? true : (var1.getBlockId(var2 + 1, var3, var4) == this.blockID ? true : (var1.getBlockId(var2, var3, var4 - 1) == this.blockID ? true : var1.getBlockId(var2, var3, var4 + 1) == this.blockID)));
|
||||
}
|
||||
|
||||
public void onBlockRemoval(World var1, int var2, int var3, int var4) {
|
||||
TileEntityChest var5 = (TileEntityChest)var1.getBlockTileEntity(var2, var3, var4);
|
||||
|
||||
for(int var6 = 0; var6 < var5.getSizeInventory(); ++var6) {
|
||||
ItemStack var7 = var5.getStackInSlot(var6);
|
||||
if(var7 != null) {
|
||||
float var8 = this.random.nextFloat() * 0.8F + 0.1F;
|
||||
float var9 = this.random.nextFloat() * 0.8F + 0.1F;
|
||||
float var10 = this.random.nextFloat() * 0.8F + 0.1F;
|
||||
|
||||
while(var7.stackSize > 0) {
|
||||
int var11 = this.random.nextInt(21) + 10;
|
||||
if(var11 > var7.stackSize) {
|
||||
var11 = var7.stackSize;
|
||||
}
|
||||
|
||||
var7.stackSize -= var11;
|
||||
EntityItem var12 = new EntityItem(var1, (double)((float)var2 + var8), (double)((float)var3 + var9), (double)((float)var4 + var10), new ItemStack(var7.itemID, var11, var7.getItemDamage()));
|
||||
float var13 = 0.05F;
|
||||
var12.motionX = (double)((float)this.random.nextGaussian() * var13);
|
||||
var12.motionY = (double)((float)this.random.nextGaussian() * var13 + 0.2F);
|
||||
var12.motionZ = (double)((float)this.random.nextGaussian() * var13);
|
||||
var1.entityJoinedWorld(var12);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
super.onBlockRemoval(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
Object var6 = (TileEntityChest)var1.getBlockTileEntity(var2, var3, var4);
|
||||
if(var1.isBlockNormalCube(var2, var3 + 1, var4)) {
|
||||
return true;
|
||||
} else if(var1.getBlockId(var2 - 1, var3, var4) == this.blockID && var1.isBlockNormalCube(var2 - 1, var3 + 1, var4)) {
|
||||
return true;
|
||||
} else if(var1.getBlockId(var2 + 1, var3, var4) == this.blockID && var1.isBlockNormalCube(var2 + 1, var3 + 1, var4)) {
|
||||
return true;
|
||||
} else if(var1.getBlockId(var2, var3, var4 - 1) == this.blockID && var1.isBlockNormalCube(var2, var3 + 1, var4 - 1)) {
|
||||
return true;
|
||||
} else if(var1.getBlockId(var2, var3, var4 + 1) == this.blockID && var1.isBlockNormalCube(var2, var3 + 1, var4 + 1)) {
|
||||
return true;
|
||||
} else {
|
||||
if(var1.getBlockId(var2 - 1, var3, var4) == this.blockID) {
|
||||
var6 = new InventoryLargeChest("Large chest", (TileEntityChest)var1.getBlockTileEntity(var2 - 1, var3, var4), (IInventory)var6);
|
||||
}
|
||||
|
||||
if(var1.getBlockId(var2 + 1, var3, var4) == this.blockID) {
|
||||
var6 = new InventoryLargeChest("Large chest", (IInventory)var6, (TileEntityChest)var1.getBlockTileEntity(var2 + 1, var3, var4));
|
||||
}
|
||||
|
||||
if(var1.getBlockId(var2, var3, var4 - 1) == this.blockID) {
|
||||
var6 = new InventoryLargeChest("Large chest", (TileEntityChest)var1.getBlockTileEntity(var2, var3, var4 - 1), (IInventory)var6);
|
||||
}
|
||||
|
||||
if(var1.getBlockId(var2, var3, var4 + 1) == this.blockID) {
|
||||
var6 = new InventoryLargeChest("Large chest", (IInventory)var6, (TileEntityChest)var1.getBlockTileEntity(var2, var3, var4 + 1));
|
||||
}
|
||||
|
||||
if(var1.singleplayerWorld) {
|
||||
return true;
|
||||
} else {
|
||||
var5.displayGUIChest((IInventory)var6);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected TileEntity getBlockEntity() {
|
||||
return new TileEntityChest();
|
||||
}
|
||||
}
|
||||
17
src/net/minecraft/src/BlockClay.java
Normal file
17
src/net/minecraft/src/BlockClay.java
Normal file
@@ -0,0 +1,17 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockClay extends Block {
|
||||
public BlockClay(int var1, int var2) {
|
||||
super(var1, var2, Material.clay);
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Item.clay.shiftedIndex;
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return 4;
|
||||
}
|
||||
}
|
||||
28
src/net/minecraft/src/BlockCloth.java
Normal file
28
src/net/minecraft/src/BlockCloth.java
Normal file
@@ -0,0 +1,28 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BlockCloth extends Block {
|
||||
public BlockCloth() {
|
||||
super(35, 64, Material.cloth);
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
if(var2 == 0) {
|
||||
return this.blockIndexInTexture;
|
||||
} else {
|
||||
var2 = ~(var2 & 15);
|
||||
return 113 + ((var2 & 8) >> 3) + (var2 & 7) * 16;
|
||||
}
|
||||
}
|
||||
|
||||
protected int damageDropped(int var1) {
|
||||
return var1;
|
||||
}
|
||||
|
||||
public static int func_21033_c(int var0) {
|
||||
return ~var0 & 15;
|
||||
}
|
||||
|
||||
public static int func_21034_d(int var0) {
|
||||
return ~var0 & 15;
|
||||
}
|
||||
}
|
||||
25
src/net/minecraft/src/BlockContainer.java
Normal file
25
src/net/minecraft/src/BlockContainer.java
Normal file
@@ -0,0 +1,25 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public abstract class BlockContainer extends Block {
|
||||
protected BlockContainer(int var1, Material var2) {
|
||||
super(var1, var2);
|
||||
isBlockContainer[var1] = true;
|
||||
}
|
||||
|
||||
protected BlockContainer(int var1, int var2, Material var3) {
|
||||
super(var1, var2, var3);
|
||||
isBlockContainer[var1] = true;
|
||||
}
|
||||
|
||||
public void onBlockAdded(World var1, int var2, int var3, int var4) {
|
||||
super.onBlockAdded(var1, var2, var3, var4);
|
||||
var1.setBlockTileEntity(var2, var3, var4, this.getBlockEntity());
|
||||
}
|
||||
|
||||
public void onBlockRemoval(World var1, int var2, int var3, int var4) {
|
||||
super.onBlockRemoval(var1, var2, var3, var4);
|
||||
var1.removeBlockTileEntity(var2, var3, var4);
|
||||
}
|
||||
|
||||
protected abstract TileEntity getBlockEntity();
|
||||
}
|
||||
110
src/net/minecraft/src/BlockCrops.java
Normal file
110
src/net/minecraft/src/BlockCrops.java
Normal file
@@ -0,0 +1,110 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockCrops extends BlockFlower {
|
||||
protected BlockCrops(int var1, int var2) {
|
||||
super(var1, var2);
|
||||
this.blockIndexInTexture = var2;
|
||||
this.setTickOnLoad(true);
|
||||
float var3 = 0.5F;
|
||||
this.setBlockBounds(0.5F - var3, 0.0F, 0.5F - var3, 0.5F + var3, 0.25F, 0.5F + var3);
|
||||
}
|
||||
|
||||
protected boolean canThisPlantGrowOnThisBlockID(int var1) {
|
||||
return var1 == Block.tilledField.blockID;
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
super.updateTick(var1, var2, var3, var4, var5);
|
||||
if(var1.getBlockLightValue(var2, var3 + 1, var4) >= 9) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if(var6 < 7) {
|
||||
float var7 = this.getGrowthRate(var1, var2, var3, var4);
|
||||
if(var5.nextInt((int)(100.0F / var7)) == 0) {
|
||||
++var6;
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void fertilize(World var1, int var2, int var3, int var4) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 7);
|
||||
}
|
||||
|
||||
private float getGrowthRate(World var1, int var2, int var3, int var4) {
|
||||
float var5 = 1.0F;
|
||||
int var6 = var1.getBlockId(var2, var3, var4 - 1);
|
||||
int var7 = var1.getBlockId(var2, var3, var4 + 1);
|
||||
int var8 = var1.getBlockId(var2 - 1, var3, var4);
|
||||
int var9 = var1.getBlockId(var2 + 1, var3, var4);
|
||||
int var10 = var1.getBlockId(var2 - 1, var3, var4 - 1);
|
||||
int var11 = var1.getBlockId(var2 + 1, var3, var4 - 1);
|
||||
int var12 = var1.getBlockId(var2 + 1, var3, var4 + 1);
|
||||
int var13 = var1.getBlockId(var2 - 1, var3, var4 + 1);
|
||||
boolean var14 = var8 == this.blockID || var9 == this.blockID;
|
||||
boolean var15 = var6 == this.blockID || var7 == this.blockID;
|
||||
boolean var16 = var10 == this.blockID || var11 == this.blockID || var12 == this.blockID || var13 == this.blockID;
|
||||
|
||||
for(int var17 = var2 - 1; var17 <= var2 + 1; ++var17) {
|
||||
for(int var18 = var4 - 1; var18 <= var4 + 1; ++var18) {
|
||||
int var19 = var1.getBlockId(var17, var3 - 1, var18);
|
||||
float var20 = 0.0F;
|
||||
if(var19 == Block.tilledField.blockID) {
|
||||
var20 = 1.0F;
|
||||
if(var1.getBlockMetadata(var17, var3 - 1, var18) > 0) {
|
||||
var20 = 3.0F;
|
||||
}
|
||||
}
|
||||
|
||||
if(var17 != var2 || var18 != var4) {
|
||||
var20 /= 4.0F;
|
||||
}
|
||||
|
||||
var5 += var20;
|
||||
}
|
||||
}
|
||||
|
||||
if(var16 || var14 && var15) {
|
||||
var5 /= 2.0F;
|
||||
}
|
||||
|
||||
return var5;
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
if(var2 < 0) {
|
||||
var2 = 7;
|
||||
}
|
||||
|
||||
return this.blockIndexInTexture + var2;
|
||||
}
|
||||
|
||||
public void dropBlockAsItemWithChance(World var1, int var2, int var3, int var4, int var5, float var6) {
|
||||
super.dropBlockAsItemWithChance(var1, var2, var3, var4, var5, var6);
|
||||
if(!var1.singleplayerWorld) {
|
||||
for(int var7 = 0; var7 < 3; ++var7) {
|
||||
if(var1.rand.nextInt(15) <= var5) {
|
||||
float var8 = 0.7F;
|
||||
float var9 = var1.rand.nextFloat() * var8 + (1.0F - var8) * 0.5F;
|
||||
float var10 = var1.rand.nextFloat() * var8 + (1.0F - var8) * 0.5F;
|
||||
float var11 = var1.rand.nextFloat() * var8 + (1.0F - var8) * 0.5F;
|
||||
EntityItem var12 = new EntityItem(var1, (double)((float)var2 + var9), (double)((float)var3 + var10), (double)((float)var4 + var11), new ItemStack(Item.seeds));
|
||||
var12.delayBeforeCanPickup = 10;
|
||||
var1.entityJoinedWorld(var12);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return var1 == 7 ? Item.wheat.shiftedIndex : -1;
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
23
src/net/minecraft/src/BlockDeadBush.java
Normal file
23
src/net/minecraft/src/BlockDeadBush.java
Normal file
@@ -0,0 +1,23 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockDeadBush extends BlockFlower {
|
||||
protected BlockDeadBush(int var1, int var2) {
|
||||
super(var1, var2);
|
||||
float var3 = 0.4F;
|
||||
this.setBlockBounds(0.5F - var3, 0.0F, 0.5F - var3, 0.5F + var3, 0.8F, 0.5F + var3);
|
||||
}
|
||||
|
||||
protected boolean canThisPlantGrowOnThisBlockID(int var1) {
|
||||
return var1 == Block.sand.blockID;
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
return this.blockIndexInTexture;
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
74
src/net/minecraft/src/BlockDetectorRail.java
Normal file
74
src/net/minecraft/src/BlockDetectorRail.java
Normal file
@@ -0,0 +1,74 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockDetectorRail extends BlockRail {
|
||||
public BlockDetectorRail(int var1, int var2) {
|
||||
super(var1, var2, true);
|
||||
this.setTickOnLoad(true);
|
||||
}
|
||||
|
||||
public int tickRate() {
|
||||
return 20;
|
||||
}
|
||||
|
||||
public boolean canProvidePower() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public void onEntityCollidedWithBlock(World var1, int var2, int var3, int var4, Entity var5) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if((var6 & 8) == 0) {
|
||||
this.func_27035_f(var1, var2, var3, var4, var6);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if((var6 & 8) != 0) {
|
||||
this.func_27035_f(var1, var2, var3, var4, var6);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isPoweringTo(IBlockAccess var1, int var2, int var3, int var4, int var5) {
|
||||
return (var1.getBlockMetadata(var2, var3, var4) & 8) != 0;
|
||||
}
|
||||
|
||||
public boolean isIndirectlyPoweringTo(World var1, int var2, int var3, int var4, int var5) {
|
||||
return (var1.getBlockMetadata(var2, var3, var4) & 8) == 0 ? false : var5 == 1;
|
||||
}
|
||||
|
||||
private void func_27035_f(World var1, int var2, int var3, int var4, int var5) {
|
||||
boolean var6 = (var5 & 8) != 0;
|
||||
boolean var7 = false;
|
||||
float var8 = 2.0F / 16.0F;
|
||||
List var9 = var1.getEntitiesWithinAABB(EntityMinecart.class, AxisAlignedBB.getBoundingBoxFromPool((double)((float)var2 + var8), (double)var3, (double)((float)var4 + var8), (double)((float)(var2 + 1) - var8), (double)var3 + 0.25D, (double)((float)(var4 + 1) - var8)));
|
||||
if(var9.size() > 0) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(var7 && !var6) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var5 | 8);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID);
|
||||
var1.markBlocksDirty(var2, var3, var4, var2, var3, var4);
|
||||
}
|
||||
|
||||
if(!var7 && var6) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var5 & 7);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID);
|
||||
var1.markBlocksDirty(var2, var3, var4, var2, var3, var4);
|
||||
}
|
||||
|
||||
if(var7) {
|
||||
var1.scheduleUpdateTick(var2, var3, var4, this.blockID, this.tickRate());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
7
src/net/minecraft/src/BlockDirt.java
Normal file
7
src/net/minecraft/src/BlockDirt.java
Normal file
@@ -0,0 +1,7 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BlockDirt extends Block {
|
||||
protected BlockDirt(int var1, int var2) {
|
||||
super(var1, var2, Material.ground);
|
||||
}
|
||||
}
|
||||
193
src/net/minecraft/src/BlockDispenser.java
Normal file
193
src/net/minecraft/src/BlockDispenser.java
Normal file
@@ -0,0 +1,193 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockDispenser extends BlockContainer {
|
||||
private Random field_28032_a = new Random();
|
||||
|
||||
protected BlockDispenser(int var1) {
|
||||
super(var1, Material.rock);
|
||||
this.blockIndexInTexture = 45;
|
||||
}
|
||||
|
||||
public int tickRate() {
|
||||
return 4;
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Block.dispenser.blockID;
|
||||
}
|
||||
|
||||
public void onBlockAdded(World var1, int var2, int var3, int var4) {
|
||||
super.onBlockAdded(var1, var2, var3, var4);
|
||||
this.setDispenserDefaultDirection(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
private void setDispenserDefaultDirection(World var1, int var2, int var3, int var4) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
int var5 = var1.getBlockId(var2, var3, var4 - 1);
|
||||
int var6 = var1.getBlockId(var2, var3, var4 + 1);
|
||||
int var7 = var1.getBlockId(var2 - 1, var3, var4);
|
||||
int var8 = var1.getBlockId(var2 + 1, var3, var4);
|
||||
byte var9 = 3;
|
||||
if(Block.opaqueCubeLookup[var5] && !Block.opaqueCubeLookup[var6]) {
|
||||
var9 = 3;
|
||||
}
|
||||
|
||||
if(Block.opaqueCubeLookup[var6] && !Block.opaqueCubeLookup[var5]) {
|
||||
var9 = 2;
|
||||
}
|
||||
|
||||
if(Block.opaqueCubeLookup[var7] && !Block.opaqueCubeLookup[var8]) {
|
||||
var9 = 5;
|
||||
}
|
||||
|
||||
if(Block.opaqueCubeLookup[var8] && !Block.opaqueCubeLookup[var7]) {
|
||||
var9 = 4;
|
||||
}
|
||||
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var9);
|
||||
}
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSide(int var1) {
|
||||
return var1 == 1 ? this.blockIndexInTexture + 17 : (var1 == 0 ? this.blockIndexInTexture + 17 : (var1 == 3 ? this.blockIndexInTexture + 1 : this.blockIndexInTexture));
|
||||
}
|
||||
|
||||
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
if(var1.singleplayerWorld) {
|
||||
return true;
|
||||
} else {
|
||||
TileEntityDispenser var6 = (TileEntityDispenser)var1.getBlockTileEntity(var2, var3, var4);
|
||||
var5.displayGUIDispenser(var6);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
private void dispenseItem(World var1, int var2, int var3, int var4, Random var5) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
byte var9 = 0;
|
||||
byte var10 = 0;
|
||||
if(var6 == 3) {
|
||||
var10 = 1;
|
||||
} else if(var6 == 2) {
|
||||
var10 = -1;
|
||||
} else if(var6 == 5) {
|
||||
var9 = 1;
|
||||
} else {
|
||||
var9 = -1;
|
||||
}
|
||||
|
||||
TileEntityDispenser var11 = (TileEntityDispenser)var1.getBlockTileEntity(var2, var3, var4);
|
||||
ItemStack var12 = var11.getRandomStackFromInventory();
|
||||
double var13 = (double)var2 + (double)var9 * 0.6D + 0.5D;
|
||||
double var15 = (double)var3 + 0.5D;
|
||||
double var17 = (double)var4 + (double)var10 * 0.6D + 0.5D;
|
||||
if(var12 == null) {
|
||||
var1.func_28097_e(1001, var2, var3, var4, 0);
|
||||
} else {
|
||||
if(var12.itemID == Item.arrow.shiftedIndex) {
|
||||
EntityArrow var19 = new EntityArrow(var1, var13, var15, var17);
|
||||
var19.setArrowHeading((double)var9, (double)0.1F, (double)var10, 1.1F, 6.0F);
|
||||
var19.field_28012_a = true;
|
||||
var1.entityJoinedWorld(var19);
|
||||
var1.func_28097_e(1002, var2, var3, var4, 0);
|
||||
} else if(var12.itemID == Item.egg.shiftedIndex) {
|
||||
EntityEgg var22 = new EntityEgg(var1, var13, var15, var17);
|
||||
var22.func_20078_a((double)var9, (double)0.1F, (double)var10, 1.1F, 6.0F);
|
||||
var1.entityJoinedWorld(var22);
|
||||
var1.func_28097_e(1002, var2, var3, var4, 0);
|
||||
} else if(var12.itemID == Item.snowball.shiftedIndex) {
|
||||
EntitySnowball var23 = new EntitySnowball(var1, var13, var15, var17);
|
||||
var23.func_6141_a((double)var9, (double)0.1F, (double)var10, 1.1F, 6.0F);
|
||||
var1.entityJoinedWorld(var23);
|
||||
var1.func_28097_e(1002, var2, var3, var4, 0);
|
||||
} else {
|
||||
EntityItem var24 = new EntityItem(var1, var13, var15 - 0.3D, var17, var12);
|
||||
double var20 = var5.nextDouble() * 0.1D + 0.2D;
|
||||
var24.motionX = (double)var9 * var20;
|
||||
var24.motionY = (double)0.2F;
|
||||
var24.motionZ = (double)var10 * var20;
|
||||
var24.motionX += var5.nextGaussian() * (double)0.0075F * 6.0D;
|
||||
var24.motionY += var5.nextGaussian() * (double)0.0075F * 6.0D;
|
||||
var24.motionZ += var5.nextGaussian() * (double)0.0075F * 6.0D;
|
||||
var1.entityJoinedWorld(var24);
|
||||
var1.func_28097_e(1000, var2, var3, var4, 0);
|
||||
}
|
||||
|
||||
var1.func_28097_e(2000, var2, var3, var4, var9 + 1 + (var10 + 1) * 3);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(var5 > 0 && Block.blocksList[var5].canProvidePower()) {
|
||||
boolean var6 = var1.isBlockIndirectlyGettingPowered(var2, var3, var4) || var1.isBlockIndirectlyGettingPowered(var2, var3 + 1, var4);
|
||||
if(var6) {
|
||||
var1.scheduleUpdateTick(var2, var3, var4, this.blockID, this.tickRate());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
if(var1.isBlockIndirectlyGettingPowered(var2, var3, var4) || var1.isBlockIndirectlyGettingPowered(var2, var3 + 1, var4)) {
|
||||
this.dispenseItem(var1, var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected TileEntity getBlockEntity() {
|
||||
return new TileEntityDispenser();
|
||||
}
|
||||
|
||||
public void onBlockPlacedBy(World var1, int var2, int var3, int var4, EntityLiving var5) {
|
||||
int var6 = MathHelper.floor_double((double)(var5.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
|
||||
if(var6 == 0) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 2);
|
||||
}
|
||||
|
||||
if(var6 == 1) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 5);
|
||||
}
|
||||
|
||||
if(var6 == 2) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 3);
|
||||
}
|
||||
|
||||
if(var6 == 3) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 4);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onBlockRemoval(World var1, int var2, int var3, int var4) {
|
||||
TileEntityDispenser var5 = (TileEntityDispenser)var1.getBlockTileEntity(var2, var3, var4);
|
||||
|
||||
for(int var6 = 0; var6 < var5.getSizeInventory(); ++var6) {
|
||||
ItemStack var7 = var5.getStackInSlot(var6);
|
||||
if(var7 != null) {
|
||||
float var8 = this.field_28032_a.nextFloat() * 0.8F + 0.1F;
|
||||
float var9 = this.field_28032_a.nextFloat() * 0.8F + 0.1F;
|
||||
float var10 = this.field_28032_a.nextFloat() * 0.8F + 0.1F;
|
||||
|
||||
while(var7.stackSize > 0) {
|
||||
int var11 = this.field_28032_a.nextInt(21) + 10;
|
||||
if(var11 > var7.stackSize) {
|
||||
var11 = var7.stackSize;
|
||||
}
|
||||
|
||||
var7.stackSize -= var11;
|
||||
EntityItem var12 = new EntityItem(var1, (double)((float)var2 + var8), (double)((float)var3 + var9), (double)((float)var4 + var10), new ItemStack(var7.itemID, var11, var7.getItemDamage()));
|
||||
float var13 = 0.05F;
|
||||
var12.motionX = (double)((float)this.field_28032_a.nextGaussian() * var13);
|
||||
var12.motionY = (double)((float)this.field_28032_a.nextGaussian() * var13 + 0.2F);
|
||||
var12.motionZ = (double)((float)this.field_28032_a.nextGaussian() * var13);
|
||||
var1.entityJoinedWorld(var12);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
super.onBlockRemoval(var1, var2, var3, var4);
|
||||
}
|
||||
}
|
||||
186
src/net/minecraft/src/BlockDoor.java
Normal file
186
src/net/minecraft/src/BlockDoor.java
Normal file
@@ -0,0 +1,186 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockDoor extends Block {
|
||||
protected BlockDoor(int var1, Material var2) {
|
||||
super(var1, var2);
|
||||
this.blockIndexInTexture = 97;
|
||||
if(var2 == Material.iron) {
|
||||
++this.blockIndexInTexture;
|
||||
}
|
||||
|
||||
float var3 = 0.5F;
|
||||
float var4 = 1.0F;
|
||||
this.setBlockBounds(0.5F - var3, 0.0F, 0.5F - var3, 0.5F + var3, var4, 0.5F + var3);
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
if(var1 != 0 && var1 != 1) {
|
||||
int var3 = this.func_271_d(var2);
|
||||
if((var3 == 0 || var3 == 2) ^ var1 <= 3) {
|
||||
return this.blockIndexInTexture;
|
||||
} else {
|
||||
int var4 = var3 / 2 + (var1 & 1 ^ var3);
|
||||
var4 += (var2 & 4) / 4;
|
||||
int var5 = this.blockIndexInTexture - (var2 & 8) * 2;
|
||||
if((var4 & 1) != 0) {
|
||||
var5 = -var5;
|
||||
}
|
||||
|
||||
return var5;
|
||||
}
|
||||
} else {
|
||||
return this.blockIndexInTexture;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
this.setBlockBoundsBasedOnState(var1, var2, var3, var4);
|
||||
return super.getCollisionBoundingBoxFromPool(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) {
|
||||
this.func_273_b(this.func_271_d(var1.getBlockMetadata(var2, var3, var4)));
|
||||
}
|
||||
|
||||
public void func_273_b(int var1) {
|
||||
float var2 = 3.0F / 16.0F;
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 2.0F, 1.0F);
|
||||
if(var1 == 0) {
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, var2);
|
||||
}
|
||||
|
||||
if(var1 == 1) {
|
||||
this.setBlockBounds(1.0F - var2, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
if(var1 == 2) {
|
||||
this.setBlockBounds(0.0F, 0.0F, 1.0F - var2, 1.0F, 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
if(var1 == 3) {
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, var2, 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onBlockClicked(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
this.blockActivated(var1, var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
if(this.blockMaterial == Material.iron) {
|
||||
return true;
|
||||
} else {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if((var6 & 8) != 0) {
|
||||
if(var1.getBlockId(var2, var3 - 1, var4) == this.blockID) {
|
||||
this.blockActivated(var1, var2, var3 - 1, var4, var5);
|
||||
}
|
||||
|
||||
return true;
|
||||
} else {
|
||||
if(var1.getBlockId(var2, var3 + 1, var4) == this.blockID) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3 + 1, var4, (var6 ^ 4) + 8);
|
||||
}
|
||||
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6 ^ 4);
|
||||
var1.markBlocksDirty(var2, var3 - 1, var4, var2, var3, var4);
|
||||
var1.func_28101_a(var5, 1003, var2, var3, var4, 0);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void func_272_a(World var1, int var2, int var3, int var4, boolean var5) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if((var6 & 8) != 0) {
|
||||
if(var1.getBlockId(var2, var3 - 1, var4) == this.blockID) {
|
||||
this.func_272_a(var1, var2, var3 - 1, var4, var5);
|
||||
}
|
||||
|
||||
} else {
|
||||
boolean var7 = (var1.getBlockMetadata(var2, var3, var4) & 4) > 0;
|
||||
if(var7 != var5) {
|
||||
if(var1.getBlockId(var2, var3 + 1, var4) == this.blockID) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3 + 1, var4, (var6 ^ 4) + 8);
|
||||
}
|
||||
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6 ^ 4);
|
||||
var1.markBlocksDirty(var2, var3 - 1, var4, var2, var3, var4);
|
||||
var1.func_28101_a((EntityPlayer)null, 1003, var2, var3, var4, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if((var6 & 8) != 0) {
|
||||
if(var1.getBlockId(var2, var3 - 1, var4) != this.blockID) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
|
||||
if(var5 > 0 && Block.blocksList[var5].canProvidePower()) {
|
||||
this.onNeighborBlockChange(var1, var2, var3 - 1, var4, var5);
|
||||
}
|
||||
} else {
|
||||
boolean var7 = false;
|
||||
if(var1.getBlockId(var2, var3 + 1, var4) != this.blockID) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(!var1.isBlockNormalCube(var2, var3 - 1, var4)) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
var7 = true;
|
||||
if(var1.getBlockId(var2, var3 + 1, var4) == this.blockID) {
|
||||
var1.setBlockWithNotify(var2, var3 + 1, var4, 0);
|
||||
}
|
||||
}
|
||||
|
||||
if(var7) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var6);
|
||||
}
|
||||
} else if(var5 > 0 && Block.blocksList[var5].canProvidePower()) {
|
||||
boolean var8 = var1.isBlockIndirectlyGettingPowered(var2, var3, var4) || var1.isBlockIndirectlyGettingPowered(var2, var3 + 1, var4);
|
||||
this.func_272_a(var1, var2, var3, var4, var8);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return (var1 & 8) != 0 ? 0 : (this.blockMaterial == Material.iron ? Item.doorSteel.shiftedIndex : Item.doorWood.shiftedIndex);
|
||||
}
|
||||
|
||||
public MovingObjectPosition collisionRayTrace(World var1, int var2, int var3, int var4, Vec3D var5, Vec3D var6) {
|
||||
this.setBlockBoundsBasedOnState(var1, var2, var3, var4);
|
||||
return super.collisionRayTrace(var1, var2, var3, var4, var5, var6);
|
||||
}
|
||||
|
||||
public int func_271_d(int var1) {
|
||||
return (var1 & 4) == 0 ? var1 - 1 & 3 : var1 & 3;
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return var3 >= 127 ? false : var1.isBlockNormalCube(var2, var3 - 1, var4) && super.canPlaceBlockAt(var1, var2, var3, var4) && super.canPlaceBlockAt(var1, var2, var3 + 1, var4);
|
||||
}
|
||||
|
||||
public static boolean func_27036_e(int var0) {
|
||||
return (var0 & 4) != 0;
|
||||
}
|
||||
|
||||
public int getMobilityFlag() {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
93
src/net/minecraft/src/BlockFarmland.java
Normal file
93
src/net/minecraft/src/BlockFarmland.java
Normal file
@@ -0,0 +1,93 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockFarmland extends Block {
|
||||
protected BlockFarmland(int var1) {
|
||||
super(var1, Material.ground);
|
||||
this.blockIndexInTexture = 87;
|
||||
this.setTickOnLoad(true);
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 15.0F / 16.0F, 1.0F);
|
||||
this.setLightOpacity(255);
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
return AxisAlignedBB.getBoundingBoxFromPool((double)(var2 + 0), (double)(var3 + 0), (double)(var4 + 0), (double)(var2 + 1), (double)(var3 + 1), (double)(var4 + 1));
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
return var1 == 1 && var2 > 0 ? this.blockIndexInTexture - 1 : (var1 == 1 ? this.blockIndexInTexture : 2);
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
if(var5.nextInt(5) == 0) {
|
||||
if(!this.isWaterNearby(var1, var2, var3, var4) && !var1.canLightningStrikeAt(var2, var3 + 1, var4)) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if(var6 > 0) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6 - 1);
|
||||
} else if(!this.isCropsNearby(var1, var2, var3, var4)) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, Block.dirt.blockID);
|
||||
}
|
||||
} else {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 7);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onEntityWalking(World var1, int var2, int var3, int var4, Entity var5) {
|
||||
if(var1.rand.nextInt(4) == 0) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, Block.dirt.blockID);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private boolean isCropsNearby(World var1, int var2, int var3, int var4) {
|
||||
byte var5 = 0;
|
||||
|
||||
for(int var6 = var2 - var5; var6 <= var2 + var5; ++var6) {
|
||||
for(int var7 = var4 - var5; var7 <= var4 + var5; ++var7) {
|
||||
if(var1.getBlockId(var6, var3 + 1, var7) == Block.crops.blockID) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean isWaterNearby(World var1, int var2, int var3, int var4) {
|
||||
for(int var5 = var2 - 4; var5 <= var2 + 4; ++var5) {
|
||||
for(int var6 = var3; var6 <= var3 + 1; ++var6) {
|
||||
for(int var7 = var4 - 4; var7 <= var4 + 4; ++var7) {
|
||||
if(var1.getBlockMaterial(var5, var6, var7) == Material.water) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
super.onNeighborBlockChange(var1, var2, var3, var4, var5);
|
||||
Material var6 = var1.getBlockMaterial(var2, var3 + 1, var4);
|
||||
if(var6.isSolid()) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, Block.dirt.blockID);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Block.dirt.idDropped(0, var2);
|
||||
}
|
||||
}
|
||||
23
src/net/minecraft/src/BlockFence.java
Normal file
23
src/net/minecraft/src/BlockFence.java
Normal file
@@ -0,0 +1,23 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BlockFence extends Block {
|
||||
public BlockFence(int var1, int var2) {
|
||||
super(var1, var2, Material.wood);
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return var1.getBlockId(var2, var3 - 1, var4) == this.blockID ? true : (!var1.getBlockMaterial(var2, var3 - 1, var4).isSolid() ? false : super.canPlaceBlockAt(var1, var2, var3, var4));
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
return AxisAlignedBB.getBoundingBoxFromPool((double)var2, (double)var3, (double)var4, (double)(var2 + 1), (double)((float)var3 + 1.5F), (double)(var4 + 1));
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
184
src/net/minecraft/src/BlockFire.java
Normal file
184
src/net/minecraft/src/BlockFire.java
Normal file
@@ -0,0 +1,184 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockFire extends Block {
|
||||
private int[] chanceToEncourageFire = new int[256];
|
||||
private int[] abilityToCatchFire = new int[256];
|
||||
|
||||
protected BlockFire(int var1, int var2) {
|
||||
super(var1, var2, Material.fire);
|
||||
this.setTickOnLoad(true);
|
||||
}
|
||||
|
||||
public void setFireBurnRates() {
|
||||
this.setBurnRate(Block.planks.blockID, 5, 20);
|
||||
this.setBurnRate(Block.fence.blockID, 5, 20);
|
||||
this.setBurnRate(Block.stairCompactPlanks.blockID, 5, 20);
|
||||
this.setBurnRate(Block.wood.blockID, 5, 5);
|
||||
this.setBurnRate(Block.leaves.blockID, 30, 60);
|
||||
this.setBurnRate(Block.bookShelf.blockID, 30, 20);
|
||||
this.setBurnRate(Block.tnt.blockID, 15, 100);
|
||||
this.setBurnRate(Block.tallGrass.blockID, 60, 100);
|
||||
this.setBurnRate(Block.cloth.blockID, 30, 60);
|
||||
}
|
||||
|
||||
private void setBurnRate(int var1, int var2, int var3) {
|
||||
this.chanceToEncourageFire[var1] = var2;
|
||||
this.abilityToCatchFire[var1] = var3;
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public int tickRate() {
|
||||
return 40;
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
boolean var6 = var1.getBlockId(var2, var3 - 1, var4) == Block.bloodStone.blockID;
|
||||
if(!this.canPlaceBlockAt(var1, var2, var3, var4)) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
|
||||
if(var6 || !var1.func_27068_v() || !var1.canLightningStrikeAt(var2, var3, var4) && !var1.canLightningStrikeAt(var2 - 1, var3, var4) && !var1.canLightningStrikeAt(var2 + 1, var3, var4) && !var1.canLightningStrikeAt(var2, var3, var4 - 1) && !var1.canLightningStrikeAt(var2, var3, var4 + 1)) {
|
||||
int var7 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if(var7 < 15) {
|
||||
var1.setBlockMetadata(var2, var3, var4, var7 + var5.nextInt(3) / 2);
|
||||
}
|
||||
|
||||
var1.scheduleUpdateTick(var2, var3, var4, this.blockID, this.tickRate());
|
||||
if(!var6 && !this.func_268_g(var1, var2, var3, var4)) {
|
||||
if(!var1.isBlockNormalCube(var2, var3 - 1, var4) || var7 > 3) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
|
||||
} else if(!var6 && !this.canBlockCatchFire(var1, var2, var3 - 1, var4) && var7 == 15 && var5.nextInt(4) == 0) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
} else {
|
||||
this.tryToCatchBlockOnFire(var1, var2 + 1, var3, var4, 300, var5, var7);
|
||||
this.tryToCatchBlockOnFire(var1, var2 - 1, var3, var4, 300, var5, var7);
|
||||
this.tryToCatchBlockOnFire(var1, var2, var3 - 1, var4, 250, var5, var7);
|
||||
this.tryToCatchBlockOnFire(var1, var2, var3 + 1, var4, 250, var5, var7);
|
||||
this.tryToCatchBlockOnFire(var1, var2, var3, var4 - 1, 300, var5, var7);
|
||||
this.tryToCatchBlockOnFire(var1, var2, var3, var4 + 1, 300, var5, var7);
|
||||
|
||||
for(int var8 = var2 - 1; var8 <= var2 + 1; ++var8) {
|
||||
for(int var9 = var4 - 1; var9 <= var4 + 1; ++var9) {
|
||||
for(int var10 = var3 - 1; var10 <= var3 + 4; ++var10) {
|
||||
if(var8 != var2 || var10 != var3 || var9 != var4) {
|
||||
int var11 = 100;
|
||||
if(var10 > var3 + 1) {
|
||||
var11 += (var10 - (var3 + 1)) * 100;
|
||||
}
|
||||
|
||||
int var12 = this.getChanceOfNeighborsEncouragingFire(var1, var8, var10, var9);
|
||||
if(var12 > 0) {
|
||||
int var13 = (var12 + 40) / (var7 + 30);
|
||||
if(var13 > 0 && var5.nextInt(var11) <= var13 && (!var1.func_27068_v() || !var1.canLightningStrikeAt(var8, var10, var9)) && !var1.canLightningStrikeAt(var8 - 1, var10, var4) && !var1.canLightningStrikeAt(var8 + 1, var10, var9) && !var1.canLightningStrikeAt(var8, var10, var9 - 1) && !var1.canLightningStrikeAt(var8, var10, var9 + 1)) {
|
||||
int var14 = var7 + var5.nextInt(5) / 4;
|
||||
if(var14 > 15) {
|
||||
var14 = 15;
|
||||
}
|
||||
|
||||
var1.setBlockAndMetadataWithNotify(var8, var10, var9, this.blockID, var14);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
} else {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
}
|
||||
|
||||
private void tryToCatchBlockOnFire(World var1, int var2, int var3, int var4, int var5, Random var6, int var7) {
|
||||
int var8 = this.abilityToCatchFire[var1.getBlockId(var2, var3, var4)];
|
||||
if(var6.nextInt(var5) < var8) {
|
||||
boolean var9 = var1.getBlockId(var2, var3, var4) == Block.tnt.blockID;
|
||||
if(var6.nextInt(var7 + 10) < 5 && !var1.canLightningStrikeAt(var2, var3, var4)) {
|
||||
int var10 = var7 + var6.nextInt(5) / 4;
|
||||
if(var10 > 15) {
|
||||
var10 = 15;
|
||||
}
|
||||
|
||||
var1.setBlockAndMetadataWithNotify(var2, var3, var4, this.blockID, var10);
|
||||
} else {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
|
||||
if(var9) {
|
||||
Block.tnt.onBlockDestroyedByPlayer(var1, var2, var3, var4, 1);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private boolean func_268_g(World var1, int var2, int var3, int var4) {
|
||||
return this.canBlockCatchFire(var1, var2 + 1, var3, var4) ? true : (this.canBlockCatchFire(var1, var2 - 1, var3, var4) ? true : (this.canBlockCatchFire(var1, var2, var3 - 1, var4) ? true : (this.canBlockCatchFire(var1, var2, var3 + 1, var4) ? true : (this.canBlockCatchFire(var1, var2, var3, var4 - 1) ? true : this.canBlockCatchFire(var1, var2, var3, var4 + 1)))));
|
||||
}
|
||||
|
||||
private int getChanceOfNeighborsEncouragingFire(World var1, int var2, int var3, int var4) {
|
||||
byte var5 = 0;
|
||||
if(!var1.isAirBlock(var2, var3, var4)) {
|
||||
return 0;
|
||||
} else {
|
||||
int var6 = this.getChanceToEncourageFire(var1, var2 + 1, var3, var4, var5);
|
||||
var6 = this.getChanceToEncourageFire(var1, var2 - 1, var3, var4, var6);
|
||||
var6 = this.getChanceToEncourageFire(var1, var2, var3 - 1, var4, var6);
|
||||
var6 = this.getChanceToEncourageFire(var1, var2, var3 + 1, var4, var6);
|
||||
var6 = this.getChanceToEncourageFire(var1, var2, var3, var4 - 1, var6);
|
||||
var6 = this.getChanceToEncourageFire(var1, var2, var3, var4 + 1, var6);
|
||||
return var6;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isCollidable() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean canBlockCatchFire(IBlockAccess var1, int var2, int var3, int var4) {
|
||||
return this.chanceToEncourageFire[var1.getBlockId(var2, var3, var4)] > 0;
|
||||
}
|
||||
|
||||
public int getChanceToEncourageFire(World var1, int var2, int var3, int var4, int var5) {
|
||||
int var6 = this.chanceToEncourageFire[var1.getBlockId(var2, var3, var4)];
|
||||
return var6 > var5 ? var6 : var5;
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return var1.isBlockNormalCube(var2, var3 - 1, var4) || this.func_268_g(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(!var1.isBlockNormalCube(var2, var3 - 1, var4) && !this.func_268_g(var1, var2, var3, var4)) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
}
|
||||
|
||||
public void onBlockAdded(World var1, int var2, int var3, int var4) {
|
||||
if(var1.getBlockId(var2, var3 - 1, var4) != Block.obsidian.blockID || !Block.portal.tryToCreatePortal(var1, var2, var3, var4)) {
|
||||
if(!var1.isBlockNormalCube(var2, var3 - 1, var4) && !this.func_268_g(var1, var2, var3, var4)) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
} else {
|
||||
var1.scheduleUpdateTick(var2, var3, var4, this.blockID, this.tickRate());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
54
src/net/minecraft/src/BlockFlower.java
Normal file
54
src/net/minecraft/src/BlockFlower.java
Normal file
@@ -0,0 +1,54 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockFlower extends Block {
|
||||
protected BlockFlower(int var1, int var2) {
|
||||
super(var1, Material.plants);
|
||||
this.blockIndexInTexture = var2;
|
||||
this.setTickOnLoad(true);
|
||||
float var3 = 0.2F;
|
||||
this.setBlockBounds(0.5F - var3, 0.0F, 0.5F - var3, 0.5F + var3, var3 * 3.0F, 0.5F + var3);
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return super.canPlaceBlockAt(var1, var2, var3, var4) && this.canThisPlantGrowOnThisBlockID(var1.getBlockId(var2, var3 - 1, var4));
|
||||
}
|
||||
|
||||
protected boolean canThisPlantGrowOnThisBlockID(int var1) {
|
||||
return var1 == Block.grass.blockID || var1 == Block.dirt.blockID || var1 == Block.tilledField.blockID;
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
super.onNeighborBlockChange(var1, var2, var3, var4, var5);
|
||||
this.func_276_g(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
this.func_276_g(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
protected final void func_276_g(World var1, int var2, int var3, int var4) {
|
||||
if(!this.canBlockStay(var1, var2, var3, var4)) {
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4));
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public boolean canBlockStay(World var1, int var2, int var3, int var4) {
|
||||
return (var1.getBlockLightValueNoChecks(var2, var3, var4) >= 8 || var1.canBlockSeeTheSky(var2, var3, var4)) && this.canThisPlantGrowOnThisBlockID(var1.getBlockId(var2, var3 - 1, var4));
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
263
src/net/minecraft/src/BlockFlowing.java
Normal file
263
src/net/minecraft/src/BlockFlowing.java
Normal file
@@ -0,0 +1,263 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockFlowing extends BlockFluid {
|
||||
int field_659_a = 0;
|
||||
boolean[] field_658_b = new boolean[4];
|
||||
int[] field_660_c = new int[4];
|
||||
|
||||
protected BlockFlowing(int var1, Material var2) {
|
||||
super(var1, var2);
|
||||
}
|
||||
|
||||
private void func_30004_i(World var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4);
|
||||
var1.setBlockAndMetadata(var2, var3, var4, this.blockID + 1, var5);
|
||||
var1.markBlocksDirty(var2, var3, var4, var2, var3, var4);
|
||||
var1.markBlockNeedsUpdate(var2, var3, var4);
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
int var6 = this.func_301_g(var1, var2, var3, var4);
|
||||
byte var7 = 1;
|
||||
if(this.blockMaterial == Material.lava && !var1.worldProvider.isHellWorld) {
|
||||
var7 = 2;
|
||||
}
|
||||
|
||||
boolean var8 = true;
|
||||
int var10;
|
||||
if(var6 > 0) {
|
||||
byte var9 = -100;
|
||||
this.field_659_a = 0;
|
||||
int var12 = this.func_307_e(var1, var2 - 1, var3, var4, var9);
|
||||
var12 = this.func_307_e(var1, var2 + 1, var3, var4, var12);
|
||||
var12 = this.func_307_e(var1, var2, var3, var4 - 1, var12);
|
||||
var12 = this.func_307_e(var1, var2, var3, var4 + 1, var12);
|
||||
var10 = var12 + var7;
|
||||
if(var10 >= 8 || var12 < 0) {
|
||||
var10 = -1;
|
||||
}
|
||||
|
||||
if(this.func_301_g(var1, var2, var3 + 1, var4) >= 0) {
|
||||
int var11 = this.func_301_g(var1, var2, var3 + 1, var4);
|
||||
if(var11 >= 8) {
|
||||
var10 = var11;
|
||||
} else {
|
||||
var10 = var11 + 8;
|
||||
}
|
||||
}
|
||||
|
||||
if(this.field_659_a >= 2 && this.blockMaterial == Material.water) {
|
||||
if(var1.getBlockMaterial(var2, var3 - 1, var4).isSolid()) {
|
||||
var10 = 0;
|
||||
} else if(var1.getBlockMaterial(var2, var3 - 1, var4) == this.blockMaterial && var1.getBlockMetadata(var2, var3, var4) == 0) {
|
||||
var10 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(this.blockMaterial == Material.lava && var6 < 8 && var10 < 8 && var10 > var6 && var5.nextInt(4) != 0) {
|
||||
var10 = var6;
|
||||
var8 = false;
|
||||
}
|
||||
|
||||
if(var10 != var6) {
|
||||
var6 = var10;
|
||||
if(var10 < 0) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
} else {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var10);
|
||||
var1.scheduleUpdateTick(var2, var3, var4, this.blockID, this.tickRate());
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4, this.blockID);
|
||||
}
|
||||
} else if(var8) {
|
||||
this.func_30004_i(var1, var2, var3, var4);
|
||||
}
|
||||
} else {
|
||||
this.func_30004_i(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
if(this.func_312_l(var1, var2, var3 - 1, var4)) {
|
||||
if(var6 >= 8) {
|
||||
var1.setBlockAndMetadataWithNotify(var2, var3 - 1, var4, this.blockID, var6);
|
||||
} else {
|
||||
var1.setBlockAndMetadataWithNotify(var2, var3 - 1, var4, this.blockID, var6 + 8);
|
||||
}
|
||||
} else if(var6 >= 0 && (var6 == 0 || this.func_309_k(var1, var2, var3 - 1, var4))) {
|
||||
boolean[] var13 = this.func_4035_j(var1, var2, var3, var4);
|
||||
var10 = var6 + var7;
|
||||
if(var6 >= 8) {
|
||||
var10 = 1;
|
||||
}
|
||||
|
||||
if(var10 >= 8) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(var13[0]) {
|
||||
this.func_311_f(var1, var2 - 1, var3, var4, var10);
|
||||
}
|
||||
|
||||
if(var13[1]) {
|
||||
this.func_311_f(var1, var2 + 1, var3, var4, var10);
|
||||
}
|
||||
|
||||
if(var13[2]) {
|
||||
this.func_311_f(var1, var2, var3, var4 - 1, var10);
|
||||
}
|
||||
|
||||
if(var13[3]) {
|
||||
this.func_311_f(var1, var2, var3, var4 + 1, var10);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void func_311_f(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(this.func_312_l(var1, var2, var3, var4)) {
|
||||
int var6 = var1.getBlockId(var2, var3, var4);
|
||||
if(var6 > 0) {
|
||||
if(this.blockMaterial == Material.lava) {
|
||||
this.func_300_h(var1, var2, var3, var4);
|
||||
} else {
|
||||
Block.blocksList[var6].dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4));
|
||||
}
|
||||
}
|
||||
|
||||
var1.setBlockAndMetadataWithNotify(var2, var3, var4, this.blockID, var5);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private int func_4034_a(World var1, int var2, int var3, int var4, int var5, int var6) {
|
||||
int var7 = 1000;
|
||||
|
||||
for(int var8 = 0; var8 < 4; ++var8) {
|
||||
if((var8 != 0 || var6 != 1) && (var8 != 1 || var6 != 0) && (var8 != 2 || var6 != 3) && (var8 != 3 || var6 != 2)) {
|
||||
int var9 = var2;
|
||||
int var11 = var4;
|
||||
if(var8 == 0) {
|
||||
var9 = var2 - 1;
|
||||
}
|
||||
|
||||
if(var8 == 1) {
|
||||
++var9;
|
||||
}
|
||||
|
||||
if(var8 == 2) {
|
||||
var11 = var4 - 1;
|
||||
}
|
||||
|
||||
if(var8 == 3) {
|
||||
++var11;
|
||||
}
|
||||
|
||||
if(!this.func_309_k(var1, var9, var3, var11) && (var1.getBlockMaterial(var9, var3, var11) != this.blockMaterial || var1.getBlockMetadata(var9, var3, var11) != 0)) {
|
||||
if(!this.func_309_k(var1, var9, var3 - 1, var11)) {
|
||||
return var5;
|
||||
}
|
||||
|
||||
if(var5 < 4) {
|
||||
int var12 = this.func_4034_a(var1, var9, var3, var11, var5 + 1, var8);
|
||||
if(var12 < var7) {
|
||||
var7 = var12;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return var7;
|
||||
}
|
||||
|
||||
private boolean[] func_4035_j(World var1, int var2, int var3, int var4) {
|
||||
int var5;
|
||||
int var6;
|
||||
for(var5 = 0; var5 < 4; ++var5) {
|
||||
this.field_660_c[var5] = 1000;
|
||||
var6 = var2;
|
||||
int var8 = var4;
|
||||
if(var5 == 0) {
|
||||
var6 = var2 - 1;
|
||||
}
|
||||
|
||||
if(var5 == 1) {
|
||||
++var6;
|
||||
}
|
||||
|
||||
if(var5 == 2) {
|
||||
var8 = var4 - 1;
|
||||
}
|
||||
|
||||
if(var5 == 3) {
|
||||
++var8;
|
||||
}
|
||||
|
||||
if(!this.func_309_k(var1, var6, var3, var8) && (var1.getBlockMaterial(var6, var3, var8) != this.blockMaterial || var1.getBlockMetadata(var6, var3, var8) != 0)) {
|
||||
if(!this.func_309_k(var1, var6, var3 - 1, var8)) {
|
||||
this.field_660_c[var5] = 0;
|
||||
} else {
|
||||
this.field_660_c[var5] = this.func_4034_a(var1, var6, var3, var8, 1, var5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var5 = this.field_660_c[0];
|
||||
|
||||
for(var6 = 1; var6 < 4; ++var6) {
|
||||
if(this.field_660_c[var6] < var5) {
|
||||
var5 = this.field_660_c[var6];
|
||||
}
|
||||
}
|
||||
|
||||
for(var6 = 0; var6 < 4; ++var6) {
|
||||
this.field_658_b[var6] = this.field_660_c[var6] == var5;
|
||||
}
|
||||
|
||||
return this.field_658_b;
|
||||
}
|
||||
|
||||
private boolean func_309_k(World var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockId(var2, var3, var4);
|
||||
if(var5 != Block.doorWood.blockID && var5 != Block.doorSteel.blockID && var5 != Block.signPost.blockID && var5 != Block.ladder.blockID && var5 != Block.reed.blockID) {
|
||||
if(var5 == 0) {
|
||||
return false;
|
||||
} else {
|
||||
Material var6 = Block.blocksList[var5].blockMaterial;
|
||||
return var6.getIsSolid();
|
||||
}
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
protected int func_307_e(World var1, int var2, int var3, int var4, int var5) {
|
||||
int var6 = this.func_301_g(var1, var2, var3, var4);
|
||||
if(var6 < 0) {
|
||||
return var5;
|
||||
} else {
|
||||
if(var6 == 0) {
|
||||
++this.field_659_a;
|
||||
}
|
||||
|
||||
if(var6 >= 8) {
|
||||
var6 = 0;
|
||||
}
|
||||
|
||||
return var5 >= 0 && var6 >= var5 ? var5 : var6;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean func_312_l(World var1, int var2, int var3, int var4) {
|
||||
Material var5 = var1.getBlockMaterial(var2, var3, var4);
|
||||
return var5 == this.blockMaterial ? false : (var5 == Material.lava ? false : !this.func_309_k(var1, var2, var3, var4));
|
||||
}
|
||||
|
||||
public void onBlockAdded(World var1, int var2, int var3, int var4) {
|
||||
super.onBlockAdded(var1, var2, var3, var4);
|
||||
if(var1.getBlockId(var2, var3, var4) == this.blockID) {
|
||||
var1.scheduleUpdateTick(var2, var3, var4, this.blockID, this.tickRate());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
225
src/net/minecraft/src/BlockFluid.java
Normal file
225
src/net/minecraft/src/BlockFluid.java
Normal file
@@ -0,0 +1,225 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public abstract class BlockFluid extends Block {
|
||||
protected BlockFluid(int var1, Material var2) {
|
||||
super(var1, (var2 == Material.lava ? 14 : 12) * 16 + 13, var2);
|
||||
float var3 = 0.0F;
|
||||
float var4 = 0.0F;
|
||||
this.setBlockBounds(0.0F + var4, 0.0F + var3, 0.0F + var4, 1.0F + var4, 1.0F + var3, 1.0F + var4);
|
||||
this.setTickOnLoad(true);
|
||||
}
|
||||
|
||||
public static float setFluidHeight(int var0) {
|
||||
if(var0 >= 8) {
|
||||
var0 = 0;
|
||||
}
|
||||
|
||||
float var1 = (float)(var0 + 1) / 9.0F;
|
||||
return var1;
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSide(int var1) {
|
||||
return var1 != 0 && var1 != 1 ? this.blockIndexInTexture + 1 : this.blockIndexInTexture;
|
||||
}
|
||||
|
||||
protected int func_301_g(World var1, int var2, int var3, int var4) {
|
||||
return var1.getBlockMaterial(var2, var3, var4) != this.blockMaterial ? -1 : var1.getBlockMetadata(var2, var3, var4);
|
||||
}
|
||||
|
||||
protected int func_303_b(IBlockAccess var1, int var2, int var3, int var4) {
|
||||
if(var1.getBlockMaterial(var2, var3, var4) != this.blockMaterial) {
|
||||
return -1;
|
||||
} else {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if(var5 >= 8) {
|
||||
var5 = 0;
|
||||
}
|
||||
|
||||
return var5;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean canCollideCheck(int var1, boolean var2) {
|
||||
return var2 && var1 == 0;
|
||||
}
|
||||
|
||||
public boolean shouldSideBeRendered(IBlockAccess var1, int var2, int var3, int var4, int var5) {
|
||||
Material var6 = var1.getBlockMaterial(var2, var3, var4);
|
||||
return var6 == this.blockMaterial ? false : (var6 == Material.ice ? false : (var5 == 1 ? true : super.shouldSideBeRendered(var1, var2, var3, var4, var5)));
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
private Vec3D func_298_c(IBlockAccess var1, int var2, int var3, int var4) {
|
||||
Vec3D var5 = Vec3D.createVector(0.0D, 0.0D, 0.0D);
|
||||
int var6 = this.func_303_b(var1, var2, var3, var4);
|
||||
|
||||
for(int var7 = 0; var7 < 4; ++var7) {
|
||||
int var8 = var2;
|
||||
int var10 = var4;
|
||||
if(var7 == 0) {
|
||||
var8 = var2 - 1;
|
||||
}
|
||||
|
||||
if(var7 == 1) {
|
||||
var10 = var4 - 1;
|
||||
}
|
||||
|
||||
if(var7 == 2) {
|
||||
++var8;
|
||||
}
|
||||
|
||||
if(var7 == 3) {
|
||||
++var10;
|
||||
}
|
||||
|
||||
int var11 = this.func_303_b(var1, var8, var3, var10);
|
||||
int var12;
|
||||
if(var11 < 0) {
|
||||
if(!var1.getBlockMaterial(var8, var3, var10).getIsSolid()) {
|
||||
var11 = this.func_303_b(var1, var8, var3 - 1, var10);
|
||||
if(var11 >= 0) {
|
||||
var12 = var11 - (var6 - 8);
|
||||
var5 = var5.addVector((double)((var8 - var2) * var12), (double)((var3 - var3) * var12), (double)((var10 - var4) * var12));
|
||||
}
|
||||
}
|
||||
} else if(var11 >= 0) {
|
||||
var12 = var11 - var6;
|
||||
var5 = var5.addVector((double)((var8 - var2) * var12), (double)((var3 - var3) * var12), (double)((var10 - var4) * var12));
|
||||
}
|
||||
}
|
||||
|
||||
if(var1.getBlockMetadata(var2, var3, var4) >= 8) {
|
||||
boolean var13 = false;
|
||||
if(var13 || this.shouldSideBeRendered(var1, var2, var3, var4 - 1, 2)) {
|
||||
var13 = true;
|
||||
}
|
||||
|
||||
if(var13 || this.shouldSideBeRendered(var1, var2, var3, var4 + 1, 3)) {
|
||||
var13 = true;
|
||||
}
|
||||
|
||||
if(var13 || this.shouldSideBeRendered(var1, var2 - 1, var3, var4, 4)) {
|
||||
var13 = true;
|
||||
}
|
||||
|
||||
if(var13 || this.shouldSideBeRendered(var1, var2 + 1, var3, var4, 5)) {
|
||||
var13 = true;
|
||||
}
|
||||
|
||||
if(var13 || this.shouldSideBeRendered(var1, var2, var3 + 1, var4 - 1, 2)) {
|
||||
var13 = true;
|
||||
}
|
||||
|
||||
if(var13 || this.shouldSideBeRendered(var1, var2, var3 + 1, var4 + 1, 3)) {
|
||||
var13 = true;
|
||||
}
|
||||
|
||||
if(var13 || this.shouldSideBeRendered(var1, var2 - 1, var3 + 1, var4, 4)) {
|
||||
var13 = true;
|
||||
}
|
||||
|
||||
if(var13 || this.shouldSideBeRendered(var1, var2 + 1, var3 + 1, var4, 5)) {
|
||||
var13 = true;
|
||||
}
|
||||
|
||||
if(var13) {
|
||||
var5 = var5.normalize().addVector(0.0D, -6.0D, 0.0D);
|
||||
}
|
||||
}
|
||||
|
||||
var5 = var5.normalize();
|
||||
return var5;
|
||||
}
|
||||
|
||||
public void velocityToAddToEntity(World var1, int var2, int var3, int var4, Entity var5, Vec3D var6) {
|
||||
Vec3D var7 = this.func_298_c(var1, var2, var3, var4);
|
||||
var6.xCoord += var7.xCoord;
|
||||
var6.yCoord += var7.yCoord;
|
||||
var6.zCoord += var7.zCoord;
|
||||
}
|
||||
|
||||
public int tickRate() {
|
||||
return this.blockMaterial == Material.water ? 5 : (this.blockMaterial == Material.lava ? 30 : 0);
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
super.updateTick(var1, var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
public void onBlockAdded(World var1, int var2, int var3, int var4) {
|
||||
this.checkForHarden(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
this.checkForHarden(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
private void checkForHarden(World var1, int var2, int var3, int var4) {
|
||||
if(var1.getBlockId(var2, var3, var4) == this.blockID) {
|
||||
if(this.blockMaterial == Material.lava) {
|
||||
boolean var5 = false;
|
||||
if(var5 || var1.getBlockMaterial(var2, var3, var4 - 1) == Material.water) {
|
||||
var5 = true;
|
||||
}
|
||||
|
||||
if(var5 || var1.getBlockMaterial(var2, var3, var4 + 1) == Material.water) {
|
||||
var5 = true;
|
||||
}
|
||||
|
||||
if(var5 || var1.getBlockMaterial(var2 - 1, var3, var4) == Material.water) {
|
||||
var5 = true;
|
||||
}
|
||||
|
||||
if(var5 || var1.getBlockMaterial(var2 + 1, var3, var4) == Material.water) {
|
||||
var5 = true;
|
||||
}
|
||||
|
||||
if(var5 || var1.getBlockMaterial(var2, var3 + 1, var4) == Material.water) {
|
||||
var5 = true;
|
||||
}
|
||||
|
||||
if(var5) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if(var6 == 0) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, Block.obsidian.blockID);
|
||||
} else if(var6 <= 4) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, Block.cobblestone.blockID);
|
||||
}
|
||||
|
||||
this.func_300_h(var1, var2, var3, var4);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
protected void func_300_h(World var1, int var2, int var3, int var4) {
|
||||
var1.playSoundEffect((double)((float)var2 + 0.5F), (double)((float)var3 + 0.5F), (double)((float)var4 + 0.5F), "random.fizz", 0.5F, 2.6F + (var1.rand.nextFloat() - var1.rand.nextFloat()) * 0.8F);
|
||||
|
||||
for(int var5 = 0; var5 < 8; ++var5) {
|
||||
var1.spawnParticle("largesmoke", (double)var2 + Math.random(), (double)var3 + 1.2D, (double)var4 + Math.random(), 0.0D, 0.0D, 0.0D);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
137
src/net/minecraft/src/BlockFurnace.java
Normal file
137
src/net/minecraft/src/BlockFurnace.java
Normal file
@@ -0,0 +1,137 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockFurnace extends BlockContainer {
|
||||
private Random field_28033_a = new Random();
|
||||
private final boolean isActive;
|
||||
private static boolean field_28034_c = false;
|
||||
|
||||
protected BlockFurnace(int var1, boolean var2) {
|
||||
super(var1, Material.rock);
|
||||
this.isActive = var2;
|
||||
this.blockIndexInTexture = 45;
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Block.stoneOvenIdle.blockID;
|
||||
}
|
||||
|
||||
public void onBlockAdded(World var1, int var2, int var3, int var4) {
|
||||
super.onBlockAdded(var1, var2, var3, var4);
|
||||
this.setDefaultDirection(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
private void setDefaultDirection(World var1, int var2, int var3, int var4) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
int var5 = var1.getBlockId(var2, var3, var4 - 1);
|
||||
int var6 = var1.getBlockId(var2, var3, var4 + 1);
|
||||
int var7 = var1.getBlockId(var2 - 1, var3, var4);
|
||||
int var8 = var1.getBlockId(var2 + 1, var3, var4);
|
||||
byte var9 = 3;
|
||||
if(Block.opaqueCubeLookup[var5] && !Block.opaqueCubeLookup[var6]) {
|
||||
var9 = 3;
|
||||
}
|
||||
|
||||
if(Block.opaqueCubeLookup[var6] && !Block.opaqueCubeLookup[var5]) {
|
||||
var9 = 2;
|
||||
}
|
||||
|
||||
if(Block.opaqueCubeLookup[var7] && !Block.opaqueCubeLookup[var8]) {
|
||||
var9 = 5;
|
||||
}
|
||||
|
||||
if(Block.opaqueCubeLookup[var8] && !Block.opaqueCubeLookup[var7]) {
|
||||
var9 = 4;
|
||||
}
|
||||
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var9);
|
||||
}
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSide(int var1) {
|
||||
return var1 == 1 ? this.blockIndexInTexture + 17 : (var1 == 0 ? this.blockIndexInTexture + 17 : (var1 == 3 ? this.blockIndexInTexture - 1 : this.blockIndexInTexture));
|
||||
}
|
||||
|
||||
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
if(var1.singleplayerWorld) {
|
||||
return true;
|
||||
} else {
|
||||
TileEntityFurnace var6 = (TileEntityFurnace)var1.getBlockTileEntity(var2, var3, var4);
|
||||
var5.displayGUIFurnace(var6);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public static void updateFurnaceBlockState(boolean var0, World var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4);
|
||||
TileEntity var6 = var1.getBlockTileEntity(var2, var3, var4);
|
||||
field_28034_c = true;
|
||||
if(var0) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, Block.stoneOvenActive.blockID);
|
||||
} else {
|
||||
var1.setBlockWithNotify(var2, var3, var4, Block.stoneOvenIdle.blockID);
|
||||
}
|
||||
|
||||
field_28034_c = false;
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var5);
|
||||
var6.validate();
|
||||
var1.setBlockTileEntity(var2, var3, var4, var6);
|
||||
}
|
||||
|
||||
protected TileEntity getBlockEntity() {
|
||||
return new TileEntityFurnace();
|
||||
}
|
||||
|
||||
public void onBlockPlacedBy(World var1, int var2, int var3, int var4, EntityLiving var5) {
|
||||
int var6 = MathHelper.floor_double((double)(var5.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
|
||||
if(var6 == 0) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 2);
|
||||
}
|
||||
|
||||
if(var6 == 1) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 5);
|
||||
}
|
||||
|
||||
if(var6 == 2) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 3);
|
||||
}
|
||||
|
||||
if(var6 == 3) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 4);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onBlockRemoval(World var1, int var2, int var3, int var4) {
|
||||
if(!field_28034_c) {
|
||||
TileEntityFurnace var5 = (TileEntityFurnace)var1.getBlockTileEntity(var2, var3, var4);
|
||||
|
||||
for(int var6 = 0; var6 < var5.getSizeInventory(); ++var6) {
|
||||
ItemStack var7 = var5.getStackInSlot(var6);
|
||||
if(var7 != null) {
|
||||
float var8 = this.field_28033_a.nextFloat() * 0.8F + 0.1F;
|
||||
float var9 = this.field_28033_a.nextFloat() * 0.8F + 0.1F;
|
||||
float var10 = this.field_28033_a.nextFloat() * 0.8F + 0.1F;
|
||||
|
||||
while(var7.stackSize > 0) {
|
||||
int var11 = this.field_28033_a.nextInt(21) + 10;
|
||||
if(var11 > var7.stackSize) {
|
||||
var11 = var7.stackSize;
|
||||
}
|
||||
|
||||
var7.stackSize -= var11;
|
||||
EntityItem var12 = new EntityItem(var1, (double)((float)var2 + var8), (double)((float)var3 + var9), (double)((float)var4 + var10), new ItemStack(var7.itemID, var11, var7.getItemDamage()));
|
||||
float var13 = 0.05F;
|
||||
var12.motionX = (double)((float)this.field_28033_a.nextGaussian() * var13);
|
||||
var12.motionY = (double)((float)this.field_28033_a.nextGaussian() * var13 + 0.2F);
|
||||
var12.motionZ = (double)((float)this.field_28033_a.nextGaussian() * var13);
|
||||
var1.entityJoinedWorld(var12);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
super.onBlockRemoval(var1, var2, var3, var4);
|
||||
}
|
||||
}
|
||||
13
src/net/minecraft/src/BlockGlass.java
Normal file
13
src/net/minecraft/src/BlockGlass.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockGlass extends BlockBreakable {
|
||||
public BlockGlass(int var1, int var2, Material var3, boolean var4) {
|
||||
super(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
17
src/net/minecraft/src/BlockGlowStone.java
Normal file
17
src/net/minecraft/src/BlockGlowStone.java
Normal file
@@ -0,0 +1,17 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockGlowStone extends Block {
|
||||
public BlockGlowStone(int var1, int var2, Material var3) {
|
||||
super(var1, var2, var3);
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return 2 + var1.nextInt(3);
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Item.lightStoneDust.shiftedIndex;
|
||||
}
|
||||
}
|
||||
36
src/net/minecraft/src/BlockGrass.java
Normal file
36
src/net/minecraft/src/BlockGrass.java
Normal file
@@ -0,0 +1,36 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockGrass extends Block {
|
||||
protected BlockGrass(int var1) {
|
||||
super(var1, Material.grass);
|
||||
this.blockIndexInTexture = 3;
|
||||
this.setTickOnLoad(true);
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
if(var1.getBlockLightValue(var2, var3 + 1, var4) < 4 && Block.lightOpacity[var1.getBlockId(var2, var3 + 1, var4)] > 2) {
|
||||
if(var5.nextInt(4) != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
var1.setBlockWithNotify(var2, var3, var4, Block.dirt.blockID);
|
||||
} else if(var1.getBlockLightValue(var2, var3 + 1, var4) >= 9) {
|
||||
int var6 = var2 + var5.nextInt(3) - 1;
|
||||
int var7 = var3 + var5.nextInt(5) - 3;
|
||||
int var8 = var4 + var5.nextInt(3) - 1;
|
||||
int var9 = var1.getBlockId(var6, var7 + 1, var8);
|
||||
if(var1.getBlockId(var6, var7, var8) == Block.dirt.blockID && var1.getBlockLightValue(var6, var7 + 1, var8) >= 4 && Block.lightOpacity[var9] <= 2) {
|
||||
var1.setBlockWithNotify(var6, var7, var8, Block.grass.blockID);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Block.dirt.idDropped(0, var2);
|
||||
}
|
||||
}
|
||||
13
src/net/minecraft/src/BlockGravel.java
Normal file
13
src/net/minecraft/src/BlockGravel.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockGravel extends BlockSand {
|
||||
public BlockGravel(int var1, int var2) {
|
||||
super(var1, var2);
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return var2.nextInt(10) == 0 ? Item.flint.shiftedIndex : this.blockID;
|
||||
}
|
||||
}
|
||||
36
src/net/minecraft/src/BlockIce.java
Normal file
36
src/net/minecraft/src/BlockIce.java
Normal file
@@ -0,0 +1,36 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockIce extends BlockBreakable {
|
||||
public BlockIce(int var1, int var2) {
|
||||
super(var1, var2, Material.ice, false);
|
||||
this.slipperiness = 0.98F;
|
||||
this.setTickOnLoad(true);
|
||||
}
|
||||
|
||||
public void harvestBlock(World var1, EntityPlayer var2, int var3, int var4, int var5, int var6) {
|
||||
super.harvestBlock(var1, var2, var3, var4, var5, var6);
|
||||
Material var7 = var1.getBlockMaterial(var3, var4 - 1, var5);
|
||||
if(var7.getIsSolid() || var7.getIsLiquid()) {
|
||||
var1.setBlockWithNotify(var3, var4, var5, Block.waterMoving.blockID);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
if(var1.getSavedLightValue(EnumSkyBlock.Block, var2, var3, var4) > 11 - Block.lightOpacity[this.blockID]) {
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4));
|
||||
var1.setBlockWithNotify(var2, var3, var4, Block.waterStill.blockID);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int getMobilityFlag() {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
65
src/net/minecraft/src/BlockJukeBox.java
Normal file
65
src/net/minecraft/src/BlockJukeBox.java
Normal file
@@ -0,0 +1,65 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BlockJukeBox extends BlockContainer {
|
||||
protected BlockJukeBox(int var1, int var2) {
|
||||
super(var1, var2, Material.wood);
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSide(int var1) {
|
||||
return this.blockIndexInTexture + (var1 == 1 ? 1 : 0);
|
||||
}
|
||||
|
||||
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
if(var1.getBlockMetadata(var2, var3, var4) == 0) {
|
||||
return false;
|
||||
} else {
|
||||
this.func_28035_b_(var1, var2, var3, var4);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public void ejectRecord(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
TileEntityRecordPlayer var6 = (TileEntityRecordPlayer)var1.getBlockTileEntity(var2, var3, var4);
|
||||
var6.field_28009_a = var5;
|
||||
var6.onInventoryChanged();
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 1);
|
||||
}
|
||||
}
|
||||
|
||||
public void func_28035_b_(World var1, int var2, int var3, int var4) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
TileEntityRecordPlayer var5 = (TileEntityRecordPlayer)var1.getBlockTileEntity(var2, var3, var4);
|
||||
int var6 = var5.field_28009_a;
|
||||
if(var6 != 0) {
|
||||
var1.func_28097_e(1005, var2, var3, var4, 0);
|
||||
var1.playRecord((String)null, var2, var3, var4);
|
||||
var5.field_28009_a = 0;
|
||||
var5.onInventoryChanged();
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 0);
|
||||
float var8 = 0.7F;
|
||||
double var9 = (double)(var1.rand.nextFloat() * var8) + (double)(1.0F - var8) * 0.5D;
|
||||
double var11 = (double)(var1.rand.nextFloat() * var8) + (double)(1.0F - var8) * 0.2D + 0.6D;
|
||||
double var13 = (double)(var1.rand.nextFloat() * var8) + (double)(1.0F - var8) * 0.5D;
|
||||
EntityItem var15 = new EntityItem(var1, (double)var2 + var9, (double)var3 + var11, (double)var4 + var13, new ItemStack(var6, 1, 0));
|
||||
var15.delayBeforeCanPickup = 10;
|
||||
var1.entityJoinedWorld(var15);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void onBlockRemoval(World var1, int var2, int var3, int var4) {
|
||||
this.func_28035_b_(var1, var2, var3, var4);
|
||||
super.onBlockRemoval(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public void dropBlockAsItemWithChance(World var1, int var2, int var3, int var4, int var5, float var6) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
super.dropBlockAsItemWithChance(var1, var2, var3, var4, var5, var6);
|
||||
}
|
||||
}
|
||||
|
||||
protected TileEntity getBlockEntity() {
|
||||
return new TileEntityRecordPlayer();
|
||||
}
|
||||
}
|
||||
95
src/net/minecraft/src/BlockLadder.java
Normal file
95
src/net/minecraft/src/BlockLadder.java
Normal file
@@ -0,0 +1,95 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockLadder extends Block {
|
||||
protected BlockLadder(int var1, int var2) {
|
||||
super(var1, var2, Material.circuits);
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4);
|
||||
float var6 = 2.0F / 16.0F;
|
||||
if(var5 == 2) {
|
||||
this.setBlockBounds(0.0F, 0.0F, 1.0F - var6, 1.0F, 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
if(var5 == 3) {
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, var6);
|
||||
}
|
||||
|
||||
if(var5 == 4) {
|
||||
this.setBlockBounds(1.0F - var6, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
if(var5 == 5) {
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, var6, 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
return super.getCollisionBoundingBoxFromPool(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return var1.isBlockNormalCube(var2 - 1, var3, var4) ? true : (var1.isBlockNormalCube(var2 + 1, var3, var4) ? true : (var1.isBlockNormalCube(var2, var3, var4 - 1) ? true : var1.isBlockNormalCube(var2, var3, var4 + 1)));
|
||||
}
|
||||
|
||||
public void onBlockPlaced(World var1, int var2, int var3, int var4, int var5) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if((var6 == 0 || var5 == 2) && var1.isBlockNormalCube(var2, var3, var4 + 1)) {
|
||||
var6 = 2;
|
||||
}
|
||||
|
||||
if((var6 == 0 || var5 == 3) && var1.isBlockNormalCube(var2, var3, var4 - 1)) {
|
||||
var6 = 3;
|
||||
}
|
||||
|
||||
if((var6 == 0 || var5 == 4) && var1.isBlockNormalCube(var2 + 1, var3, var4)) {
|
||||
var6 = 4;
|
||||
}
|
||||
|
||||
if((var6 == 0 || var5 == 5) && var1.isBlockNormalCube(var2 - 1, var3, var4)) {
|
||||
var6 = 5;
|
||||
}
|
||||
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6);
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
boolean var7 = false;
|
||||
if(var6 == 2 && var1.isBlockNormalCube(var2, var3, var4 + 1)) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(var6 == 3 && var1.isBlockNormalCube(var2, var3, var4 - 1)) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(var6 == 4 && var1.isBlockNormalCube(var2 + 1, var3, var4)) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(var6 == 5 && var1.isBlockNormalCube(var2 - 1, var3, var4)) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(!var7) {
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var6);
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
|
||||
super.onNeighborBlockChange(var1, var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
166
src/net/minecraft/src/BlockLeaves.java
Normal file
166
src/net/minecraft/src/BlockLeaves.java
Normal file
@@ -0,0 +1,166 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockLeaves extends BlockLeavesBase {
|
||||
private int baseIndexInPNG;
|
||||
int[] adjacentTreeBlocks;
|
||||
|
||||
protected BlockLeaves(int var1, int var2) {
|
||||
super(var1, var2, Material.leaves, false);
|
||||
this.baseIndexInPNG = var2;
|
||||
this.setTickOnLoad(true);
|
||||
}
|
||||
|
||||
public void onBlockRemoval(World var1, int var2, int var3, int var4) {
|
||||
byte var5 = 1;
|
||||
int var6 = var5 + 1;
|
||||
if(var1.checkChunksExist(var2 - var6, var3 - var6, var4 - var6, var2 + var6, var3 + var6, var4 + var6)) {
|
||||
for(int var7 = -var5; var7 <= var5; ++var7) {
|
||||
for(int var8 = -var5; var8 <= var5; ++var8) {
|
||||
for(int var9 = -var5; var9 <= var5; ++var9) {
|
||||
int var10 = var1.getBlockId(var2 + var7, var3 + var8, var4 + var9);
|
||||
if(var10 == Block.leaves.blockID) {
|
||||
int var11 = var1.getBlockMetadata(var2 + var7, var3 + var8, var4 + var9);
|
||||
var1.setBlockMetadata(var2 + var7, var3 + var8, var4 + var9, var11 | 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if((var6 & 8) != 0) {
|
||||
byte var7 = 4;
|
||||
int var8 = var7 + 1;
|
||||
byte var9 = 32;
|
||||
int var10 = var9 * var9;
|
||||
int var11 = var9 / 2;
|
||||
if(this.adjacentTreeBlocks == null) {
|
||||
this.adjacentTreeBlocks = new int[var9 * var9 * var9];
|
||||
}
|
||||
|
||||
int var12;
|
||||
if(var1.checkChunksExist(var2 - var8, var3 - var8, var4 - var8, var2 + var8, var3 + var8, var4 + var8)) {
|
||||
var12 = -var7;
|
||||
|
||||
label111:
|
||||
while(true) {
|
||||
int var13;
|
||||
int var14;
|
||||
int var15;
|
||||
if(var12 > var7) {
|
||||
var12 = 1;
|
||||
|
||||
while(true) {
|
||||
if(var12 > 4) {
|
||||
break label111;
|
||||
}
|
||||
|
||||
for(var13 = -var7; var13 <= var7; ++var13) {
|
||||
for(var14 = -var7; var14 <= var7; ++var14) {
|
||||
for(var15 = -var7; var15 <= var7; ++var15) {
|
||||
if(this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + var15 + var11] == var12 - 1) {
|
||||
if(this.adjacentTreeBlocks[(var13 + var11 - 1) * var10 + (var14 + var11) * var9 + var15 + var11] == -2) {
|
||||
this.adjacentTreeBlocks[(var13 + var11 - 1) * var10 + (var14 + var11) * var9 + var15 + var11] = var12;
|
||||
}
|
||||
|
||||
if(this.adjacentTreeBlocks[(var13 + var11 + 1) * var10 + (var14 + var11) * var9 + var15 + var11] == -2) {
|
||||
this.adjacentTreeBlocks[(var13 + var11 + 1) * var10 + (var14 + var11) * var9 + var15 + var11] = var12;
|
||||
}
|
||||
|
||||
if(this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 - 1) * var9 + var15 + var11] == -2) {
|
||||
this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 - 1) * var9 + var15 + var11] = var12;
|
||||
}
|
||||
|
||||
if(this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 + 1) * var9 + var15 + var11] == -2) {
|
||||
this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 + 1) * var9 + var15 + var11] = var12;
|
||||
}
|
||||
|
||||
if(this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + (var15 + var11 - 1)] == -2) {
|
||||
this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + (var15 + var11 - 1)] = var12;
|
||||
}
|
||||
|
||||
if(this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + var15 + var11 + 1] == -2) {
|
||||
this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + var15 + var11 + 1] = var12;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
++var12;
|
||||
}
|
||||
}
|
||||
|
||||
for(var13 = -var7; var13 <= var7; ++var13) {
|
||||
for(var14 = -var7; var14 <= var7; ++var14) {
|
||||
var15 = var1.getBlockId(var2 + var12, var3 + var13, var4 + var14);
|
||||
if(var15 == Block.wood.blockID) {
|
||||
this.adjacentTreeBlocks[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = 0;
|
||||
} else if(var15 == Block.leaves.blockID) {
|
||||
this.adjacentTreeBlocks[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = -2;
|
||||
} else {
|
||||
this.adjacentTreeBlocks[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
++var12;
|
||||
}
|
||||
}
|
||||
|
||||
var12 = this.adjacentTreeBlocks[var11 * var10 + var11 * var9 + var11];
|
||||
if(var12 >= 0) {
|
||||
var1.setBlockMetadata(var2, var3, var4, var6 & -9);
|
||||
} else {
|
||||
this.removeLeaves(var1, var2, var3, var4);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void removeLeaves(World var1, int var2, int var3, int var4) {
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4));
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return var1.nextInt(20) == 0 ? 1 : 0;
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Block.sapling.blockID;
|
||||
}
|
||||
|
||||
public void harvestBlock(World var1, EntityPlayer var2, int var3, int var4, int var5, int var6) {
|
||||
if(!var1.singleplayerWorld && var2.getCurrentEquippedItem() != null && var2.getCurrentEquippedItem().itemID == Item.field_31022_bc.shiftedIndex) {
|
||||
var2.addStat(StatList.mineBlockStatArray[this.blockID], 1);
|
||||
this.dropBlockAsItem_do(var1, var3, var4, var5, new ItemStack(Block.leaves.blockID, 1, var6 & 3));
|
||||
} else {
|
||||
super.harvestBlock(var1, var2, var3, var4, var5, var6);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected int damageDropped(int var1) {
|
||||
return var1 & 3;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return !this.graphicsLevel;
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
return (var2 & 3) == 1 ? this.blockIndexInTexture + 80 : this.blockIndexInTexture;
|
||||
}
|
||||
|
||||
public void onEntityWalking(World var1, int var2, int var3, int var4, Entity var5) {
|
||||
super.onEntityWalking(var1, var2, var3, var4, var5);
|
||||
}
|
||||
}
|
||||
14
src/net/minecraft/src/BlockLeavesBase.java
Normal file
14
src/net/minecraft/src/BlockLeavesBase.java
Normal file
@@ -0,0 +1,14 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BlockLeavesBase extends Block {
|
||||
protected boolean graphicsLevel;
|
||||
|
||||
protected BlockLeavesBase(int var1, int var2, Material var3, boolean var4) {
|
||||
super(var1, var2, var3);
|
||||
this.graphicsLevel = var4;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
194
src/net/minecraft/src/BlockLever.java
Normal file
194
src/net/minecraft/src/BlockLever.java
Normal file
@@ -0,0 +1,194 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BlockLever extends Block {
|
||||
protected BlockLever(int var1, int var2) {
|
||||
super(var1, var2, Material.circuits);
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockOnSide(World var1, int var2, int var3, int var4, int var5) {
|
||||
return var5 == 1 && var1.isBlockNormalCube(var2, var3 - 1, var4) ? true : (var5 == 2 && var1.isBlockNormalCube(var2, var3, var4 + 1) ? true : (var5 == 3 && var1.isBlockNormalCube(var2, var3, var4 - 1) ? true : (var5 == 4 && var1.isBlockNormalCube(var2 + 1, var3, var4) ? true : var5 == 5 && var1.isBlockNormalCube(var2 - 1, var3, var4))));
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return var1.isBlockNormalCube(var2 - 1, var3, var4) ? true : (var1.isBlockNormalCube(var2 + 1, var3, var4) ? true : (var1.isBlockNormalCube(var2, var3, var4 - 1) ? true : (var1.isBlockNormalCube(var2, var3, var4 + 1) ? true : var1.isBlockNormalCube(var2, var3 - 1, var4))));
|
||||
}
|
||||
|
||||
public void onBlockPlaced(World var1, int var2, int var3, int var4, int var5) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
int var7 = var6 & 8;
|
||||
var6 &= 7;
|
||||
var6 = -1;
|
||||
if(var5 == 1 && var1.isBlockNormalCube(var2, var3 - 1, var4)) {
|
||||
var6 = 5 + var1.rand.nextInt(2);
|
||||
}
|
||||
|
||||
if(var5 == 2 && var1.isBlockNormalCube(var2, var3, var4 + 1)) {
|
||||
var6 = 4;
|
||||
}
|
||||
|
||||
if(var5 == 3 && var1.isBlockNormalCube(var2, var3, var4 - 1)) {
|
||||
var6 = 3;
|
||||
}
|
||||
|
||||
if(var5 == 4 && var1.isBlockNormalCube(var2 + 1, var3, var4)) {
|
||||
var6 = 2;
|
||||
}
|
||||
|
||||
if(var5 == 5 && var1.isBlockNormalCube(var2 - 1, var3, var4)) {
|
||||
var6 = 1;
|
||||
}
|
||||
|
||||
if(var6 == -1) {
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4));
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
} else {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6 + var7);
|
||||
}
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(this.checkIfAttachedToBlock(var1, var2, var3, var4)) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4) & 7;
|
||||
boolean var7 = false;
|
||||
if(!var1.isBlockNormalCube(var2 - 1, var3, var4) && var6 == 1) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(!var1.isBlockNormalCube(var2 + 1, var3, var4) && var6 == 2) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(!var1.isBlockNormalCube(var2, var3, var4 - 1) && var6 == 3) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(!var1.isBlockNormalCube(var2, var3, var4 + 1) && var6 == 4) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(!var1.isBlockNormalCube(var2, var3 - 1, var4) && var6 == 5) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(!var1.isBlockNormalCube(var2, var3 - 1, var4) && var6 == 6) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(var7) {
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4));
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private boolean checkIfAttachedToBlock(World var1, int var2, int var3, int var4) {
|
||||
if(!this.canPlaceBlockAt(var1, var2, var3, var4)) {
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4));
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4) & 7;
|
||||
float var6 = 3.0F / 16.0F;
|
||||
if(var5 == 1) {
|
||||
this.setBlockBounds(0.0F, 0.2F, 0.5F - var6, var6 * 2.0F, 0.8F, 0.5F + var6);
|
||||
} else if(var5 == 2) {
|
||||
this.setBlockBounds(1.0F - var6 * 2.0F, 0.2F, 0.5F - var6, 1.0F, 0.8F, 0.5F + var6);
|
||||
} else if(var5 == 3) {
|
||||
this.setBlockBounds(0.5F - var6, 0.2F, 0.0F, 0.5F + var6, 0.8F, var6 * 2.0F);
|
||||
} else if(var5 == 4) {
|
||||
this.setBlockBounds(0.5F - var6, 0.2F, 1.0F - var6 * 2.0F, 0.5F + var6, 0.8F, 1.0F);
|
||||
} else {
|
||||
var6 = 0.25F;
|
||||
this.setBlockBounds(0.5F - var6, 0.0F, 0.5F - var6, 0.5F + var6, 0.6F, 0.5F + var6);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onBlockClicked(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
this.blockActivated(var1, var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
if(var1.singleplayerWorld) {
|
||||
return true;
|
||||
} else {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
int var7 = var6 & 7;
|
||||
int var8 = 8 - (var6 & 8);
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var7 + var8);
|
||||
var1.markBlocksDirty(var2, var3, var4, var2, var3, var4);
|
||||
var1.playSoundEffect((double)var2 + 0.5D, (double)var3 + 0.5D, (double)var4 + 0.5D, "random.click", 0.3F, var8 > 0 ? 0.6F : 0.5F);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4, this.blockID);
|
||||
if(var7 == 1) {
|
||||
var1.notifyBlocksOfNeighborChange(var2 - 1, var3, var4, this.blockID);
|
||||
} else if(var7 == 2) {
|
||||
var1.notifyBlocksOfNeighborChange(var2 + 1, var3, var4, this.blockID);
|
||||
} else if(var7 == 3) {
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4 - 1, this.blockID);
|
||||
} else if(var7 == 4) {
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4 + 1, this.blockID);
|
||||
} else {
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public void onBlockRemoval(World var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if((var5 & 8) > 0) {
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4, this.blockID);
|
||||
int var6 = var5 & 7;
|
||||
if(var6 == 1) {
|
||||
var1.notifyBlocksOfNeighborChange(var2 - 1, var3, var4, this.blockID);
|
||||
} else if(var6 == 2) {
|
||||
var1.notifyBlocksOfNeighborChange(var2 + 1, var3, var4, this.blockID);
|
||||
} else if(var6 == 3) {
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4 - 1, this.blockID);
|
||||
} else if(var6 == 4) {
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4 + 1, this.blockID);
|
||||
} else {
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID);
|
||||
}
|
||||
}
|
||||
|
||||
super.onBlockRemoval(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public boolean isPoweringTo(IBlockAccess var1, int var2, int var3, int var4, int var5) {
|
||||
return (var1.getBlockMetadata(var2, var3, var4) & 8) > 0;
|
||||
}
|
||||
|
||||
public boolean isIndirectlyPoweringTo(World var1, int var2, int var3, int var4, int var5) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if((var6 & 8) == 0) {
|
||||
return false;
|
||||
} else {
|
||||
int var7 = var6 & 7;
|
||||
return var7 == 6 && var5 == 1 ? true : (var7 == 5 && var5 == 1 ? true : (var7 == 4 && var5 == 2 ? true : (var7 == 3 && var5 == 3 ? true : (var7 == 2 && var5 == 4 ? true : var7 == 1 && var5 == 5))));
|
||||
}
|
||||
}
|
||||
|
||||
public boolean canProvidePower() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
22
src/net/minecraft/src/BlockLockedChest.java
Normal file
22
src/net/minecraft/src/BlockLockedChest.java
Normal file
@@ -0,0 +1,22 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockLockedChest extends Block {
|
||||
protected BlockLockedChest(int var1) {
|
||||
super(var1, Material.wood);
|
||||
this.blockIndexInTexture = 26;
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSide(int var1) {
|
||||
return var1 == 1 ? this.blockIndexInTexture - 1 : (var1 == 0 ? this.blockIndexInTexture - 1 : (var1 == 3 ? this.blockIndexInTexture + 1 : this.blockIndexInTexture));
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
}
|
||||
51
src/net/minecraft/src/BlockLog.java
Normal file
51
src/net/minecraft/src/BlockLog.java
Normal file
@@ -0,0 +1,51 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockLog extends Block {
|
||||
protected BlockLog(int var1) {
|
||||
super(var1, Material.wood);
|
||||
this.blockIndexInTexture = 20;
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Block.wood.blockID;
|
||||
}
|
||||
|
||||
public void harvestBlock(World var1, EntityPlayer var2, int var3, int var4, int var5, int var6) {
|
||||
super.harvestBlock(var1, var2, var3, var4, var5, var6);
|
||||
}
|
||||
|
||||
public void onBlockRemoval(World var1, int var2, int var3, int var4) {
|
||||
byte var5 = 4;
|
||||
int var6 = var5 + 1;
|
||||
if(var1.checkChunksExist(var2 - var6, var3 - var6, var4 - var6, var2 + var6, var3 + var6, var4 + var6)) {
|
||||
for(int var7 = -var5; var7 <= var5; ++var7) {
|
||||
for(int var8 = -var5; var8 <= var5; ++var8) {
|
||||
for(int var9 = -var5; var9 <= var5; ++var9) {
|
||||
int var10 = var1.getBlockId(var2 + var7, var3 + var8, var4 + var9);
|
||||
if(var10 == Block.leaves.blockID) {
|
||||
int var11 = var1.getBlockMetadata(var2 + var7, var3 + var8, var4 + var9);
|
||||
if((var11 & 8) == 0) {
|
||||
var1.setBlockMetadata(var2 + var7, var3 + var8, var4 + var9, var11 | 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
return var1 == 1 ? 21 : (var1 == 0 ? 21 : (var2 == 1 ? 116 : (var2 == 2 ? 117 : 20)));
|
||||
}
|
||||
|
||||
protected int damageDropped(int var1) {
|
||||
return var1;
|
||||
}
|
||||
}
|
||||
25
src/net/minecraft/src/BlockMobSpawner.java
Normal file
25
src/net/minecraft/src/BlockMobSpawner.java
Normal file
@@ -0,0 +1,25 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockMobSpawner extends BlockContainer {
|
||||
protected BlockMobSpawner(int var1, int var2) {
|
||||
super(var1, var2, Material.rock);
|
||||
}
|
||||
|
||||
protected TileEntity getBlockEntity() {
|
||||
return new TileEntityMobSpawner();
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
36
src/net/minecraft/src/BlockMushroom.java
Normal file
36
src/net/minecraft/src/BlockMushroom.java
Normal file
@@ -0,0 +1,36 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockMushroom extends BlockFlower {
|
||||
protected BlockMushroom(int var1, int var2) {
|
||||
super(var1, var2);
|
||||
float var3 = 0.2F;
|
||||
this.setBlockBounds(0.5F - var3, 0.0F, 0.5F - var3, 0.5F + var3, var3 * 2.0F, 0.5F + var3);
|
||||
this.setTickOnLoad(true);
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
if(var5.nextInt(100) == 0) {
|
||||
int var6 = var2 + var5.nextInt(3) - 1;
|
||||
int var7 = var3 + var5.nextInt(2) - var5.nextInt(2);
|
||||
int var8 = var4 + var5.nextInt(3) - 1;
|
||||
if(var1.isAirBlock(var6, var7, var8) && this.canBlockStay(var1, var6, var7, var8)) {
|
||||
int var10000 = var2 + (var5.nextInt(3) - 1);
|
||||
var10000 = var4 + (var5.nextInt(3) - 1);
|
||||
if(var1.isAirBlock(var6, var7, var8) && this.canBlockStay(var1, var6, var7, var8)) {
|
||||
var1.setBlockWithNotify(var6, var7, var8, this.blockID);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected boolean canThisPlantGrowOnThisBlockID(int var1) {
|
||||
return Block.opaqueCubeLookup[var1];
|
||||
}
|
||||
|
||||
public boolean canBlockStay(World var1, int var2, int var3, int var4) {
|
||||
return var3 >= 0 && var3 < 128 ? var1.getBlockLightValueNoChecks(var2, var3, var4) < 13 && this.canThisPlantGrowOnThisBlockID(var1.getBlockId(var2, var3 - 1, var4)) : false;
|
||||
}
|
||||
}
|
||||
7
src/net/minecraft/src/BlockNetherrack.java
Normal file
7
src/net/minecraft/src/BlockNetherrack.java
Normal file
@@ -0,0 +1,7 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BlockNetherrack extends Block {
|
||||
public BlockNetherrack(int var1, int var2) {
|
||||
super(var1, var2, Material.rock);
|
||||
}
|
||||
}
|
||||
71
src/net/minecraft/src/BlockNote.java
Normal file
71
src/net/minecraft/src/BlockNote.java
Normal file
@@ -0,0 +1,71 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BlockNote extends BlockContainer {
|
||||
public BlockNote(int var1) {
|
||||
super(var1, 74, Material.wood);
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSide(int var1) {
|
||||
return this.blockIndexInTexture;
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(var5 > 0 && Block.blocksList[var5].canProvidePower()) {
|
||||
boolean var6 = var1.isBlockGettingPowered(var2, var3, var4);
|
||||
TileEntityNote var7 = (TileEntityNote)var1.getBlockTileEntity(var2, var3, var4);
|
||||
if(var7.previousRedstoneState != var6) {
|
||||
if(var6) {
|
||||
var7.triggerNote(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
var7.previousRedstoneState = var6;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
if(var1.singleplayerWorld) {
|
||||
return true;
|
||||
} else {
|
||||
TileEntityNote var6 = (TileEntityNote)var1.getBlockTileEntity(var2, var3, var4);
|
||||
var6.changePitch();
|
||||
var6.triggerNote(var1, var2, var3, var4);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public void onBlockClicked(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
TileEntityNote var6 = (TileEntityNote)var1.getBlockTileEntity(var2, var3, var4);
|
||||
var6.triggerNote(var1, var2, var3, var4);
|
||||
}
|
||||
}
|
||||
|
||||
protected TileEntity getBlockEntity() {
|
||||
return new TileEntityNote();
|
||||
}
|
||||
|
||||
public void playBlock(World var1, int var2, int var3, int var4, int var5, int var6) {
|
||||
float var7 = (float)Math.pow(2.0D, (double)(var6 - 12) / 12.0D);
|
||||
String var8 = "harp";
|
||||
if(var5 == 1) {
|
||||
var8 = "bd";
|
||||
}
|
||||
|
||||
if(var5 == 2) {
|
||||
var8 = "snare";
|
||||
}
|
||||
|
||||
if(var5 == 3) {
|
||||
var8 = "hat";
|
||||
}
|
||||
|
||||
if(var5 == 4) {
|
||||
var8 = "bassattack";
|
||||
}
|
||||
|
||||
var1.playSoundEffect((double)var2 + 0.5D, (double)var3 + 0.5D, (double)var4 + 0.5D, "note." + var8, 3.0F, var7);
|
||||
var1.spawnParticle("note", (double)var2 + 0.5D, (double)var3 + 1.2D, (double)var4 + 0.5D, (double)var6 / 24.0D, 0.0D, 0.0D);
|
||||
}
|
||||
}
|
||||
17
src/net/minecraft/src/BlockObsidian.java
Normal file
17
src/net/minecraft/src/BlockObsidian.java
Normal file
@@ -0,0 +1,17 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockObsidian extends BlockStone {
|
||||
public BlockObsidian(int var1, int var2) {
|
||||
super(var1, var2);
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Block.obsidian.blockID;
|
||||
}
|
||||
}
|
||||
21
src/net/minecraft/src/BlockOre.java
Normal file
21
src/net/minecraft/src/BlockOre.java
Normal file
@@ -0,0 +1,21 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockOre extends Block {
|
||||
public BlockOre(int var1, int var2) {
|
||||
super(var1, var2, Material.rock);
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return this.blockID == Block.oreCoal.blockID ? Item.coal.shiftedIndex : (this.blockID == Block.oreDiamond.blockID ? Item.diamond.shiftedIndex : (this.blockID == Block.oreLapis.blockID ? Item.dyePowder.shiftedIndex : this.blockID));
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return this.blockID == Block.oreLapis.blockID ? 4 + var1.nextInt(5) : 1;
|
||||
}
|
||||
|
||||
protected int damageDropped(int var1) {
|
||||
return this.blockID == Block.oreLapis.blockID ? 4 : 0;
|
||||
}
|
||||
}
|
||||
12
src/net/minecraft/src/BlockOreStorage.java
Normal file
12
src/net/minecraft/src/BlockOreStorage.java
Normal file
@@ -0,0 +1,12 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BlockOreStorage extends Block {
|
||||
public BlockOreStorage(int var1, int var2) {
|
||||
super(var1, Material.iron);
|
||||
this.blockIndexInTexture = var2;
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSide(int var1) {
|
||||
return this.blockIndexInTexture;
|
||||
}
|
||||
}
|
||||
317
src/net/minecraft/src/BlockPistonBase.java
Normal file
317
src/net/minecraft/src/BlockPistonBase.java
Normal file
@@ -0,0 +1,317 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class BlockPistonBase extends Block {
|
||||
private boolean isSticky;
|
||||
private boolean ignoreUpdates;
|
||||
|
||||
public BlockPistonBase(int var1, int var2, boolean var3) {
|
||||
super(var1, var2, Material.piston);
|
||||
this.isSticky = var3;
|
||||
this.setStepSound(soundStoneFootstep);
|
||||
this.setHardness(0.5F);
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
int var3 = getOrientation(var2);
|
||||
return var3 > 5 ? this.blockIndexInTexture : (var1 == var3 ? (!isExtended(var2) && this.minX <= 0.0D && this.minY <= 0.0D && this.minZ <= 0.0D && this.maxX >= 1.0D && this.maxY >= 1.0D && this.maxZ >= 1.0D ? this.blockIndexInTexture : 110) : (var1 == PistonBlockTextures.field_31052_a[var3] ? 109 : 108));
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void onBlockPlacedBy(World var1, int var2, int var3, int var4, EntityLiving var5) {
|
||||
int var6 = determineOrientation(var1, var2, var3, var4, (EntityPlayer)var5);
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6);
|
||||
if(!var1.singleplayerWorld) {
|
||||
this.updatePistonState(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(!var1.singleplayerWorld && !this.ignoreUpdates) {
|
||||
this.updatePistonState(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onBlockAdded(World var1, int var2, int var3, int var4) {
|
||||
if(!var1.singleplayerWorld && var1.getBlockTileEntity(var2, var3, var4) == null) {
|
||||
this.updatePistonState(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void updatePistonState(World var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4);
|
||||
int var6 = getOrientation(var5);
|
||||
boolean var7 = this.isPowered(var1, var2, var3, var4, var6);
|
||||
if(var5 != 7) {
|
||||
if(var7 && !isExtended(var5)) {
|
||||
if(canExtend(var1, var2, var3, var4, var6)) {
|
||||
var1.setBlockMetadata(var2, var3, var4, var6 | 8);
|
||||
var1.playNoteAt(var2, var3, var4, 0, var6);
|
||||
}
|
||||
} else if(!var7 && isExtended(var5)) {
|
||||
var1.setBlockMetadata(var2, var3, var4, var6);
|
||||
var1.playNoteAt(var2, var3, var4, 1, var6);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isPowered(World var1, int var2, int var3, int var4, int var5) {
|
||||
return var5 != 0 && var1.isBlockIndirectlyProvidingPowerTo(var2, var3 - 1, var4, 0) ? true : (var5 != 1 && var1.isBlockIndirectlyProvidingPowerTo(var2, var3 + 1, var4, 1) ? true : (var5 != 2 && var1.isBlockIndirectlyProvidingPowerTo(var2, var3, var4 - 1, 2) ? true : (var5 != 3 && var1.isBlockIndirectlyProvidingPowerTo(var2, var3, var4 + 1, 3) ? true : (var5 != 5 && var1.isBlockIndirectlyProvidingPowerTo(var2 + 1, var3, var4, 5) ? true : (var5 != 4 && var1.isBlockIndirectlyProvidingPowerTo(var2 - 1, var3, var4, 4) ? true : (var1.isBlockIndirectlyProvidingPowerTo(var2, var3, var4, 0) ? true : (var1.isBlockIndirectlyProvidingPowerTo(var2, var3 + 2, var4, 1) ? true : (var1.isBlockIndirectlyProvidingPowerTo(var2, var3 + 1, var4 - 1, 2) ? true : (var1.isBlockIndirectlyProvidingPowerTo(var2, var3 + 1, var4 + 1, 3) ? true : (var1.isBlockIndirectlyProvidingPowerTo(var2 - 1, var3 + 1, var4, 4) ? true : var1.isBlockIndirectlyProvidingPowerTo(var2 + 1, var3 + 1, var4, 5)))))))))));
|
||||
}
|
||||
|
||||
public void playBlock(World var1, int var2, int var3, int var4, int var5, int var6) {
|
||||
this.ignoreUpdates = true;
|
||||
if(var5 == 0) {
|
||||
if(this.tryExtend(var1, var2, var3, var4, var6)) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6 | 8);
|
||||
var1.playSoundEffect((double)var2 + 0.5D, (double)var3 + 0.5D, (double)var4 + 0.5D, "tile.piston.out", 0.5F, var1.rand.nextFloat() * 0.25F + 0.6F);
|
||||
}
|
||||
} else if(var5 == 1) {
|
||||
TileEntity var8 = var1.getBlockTileEntity(var2 + PistonBlockTextures.field_31051_b[var6], var3 + PistonBlockTextures.field_31054_c[var6], var4 + PistonBlockTextures.field_31053_d[var6]);
|
||||
if(var8 != null && var8 instanceof TileEntityPiston) {
|
||||
((TileEntityPiston)var8).clearPistonTileEntity();
|
||||
}
|
||||
|
||||
var1.setBlockAndMetadata(var2, var3, var4, Block.pistonMoving.blockID, var6);
|
||||
var1.setBlockTileEntity(var2, var3, var4, BlockPistonMoving.getTileEntity(this.blockID, var6, var6, false, true));
|
||||
if(this.isSticky) {
|
||||
int var9 = var2 + PistonBlockTextures.field_31051_b[var6] * 2;
|
||||
int var10 = var3 + PistonBlockTextures.field_31054_c[var6] * 2;
|
||||
int var11 = var4 + PistonBlockTextures.field_31053_d[var6] * 2;
|
||||
int var12 = var1.getBlockId(var9, var10, var11);
|
||||
int var13 = var1.getBlockMetadata(var9, var10, var11);
|
||||
boolean var14 = false;
|
||||
if(var12 == Block.pistonMoving.blockID) {
|
||||
TileEntity var15 = var1.getBlockTileEntity(var9, var10, var11);
|
||||
if(var15 != null && var15 instanceof TileEntityPiston) {
|
||||
TileEntityPiston var16 = (TileEntityPiston)var15;
|
||||
if(var16.func_31008_d() == var6 && var16.func_31010_c()) {
|
||||
var16.clearPistonTileEntity();
|
||||
var12 = var16.getStoredBlockID();
|
||||
var13 = var16.func_31005_e();
|
||||
var14 = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(var14 || var12 <= 0 || !canPushBlock(var12, var1, var9, var10, var11, false) || Block.blocksList[var12].getMobilityFlag() != 0 && var12 != Block.pistonBase.blockID && var12 != Block.pistonStickyBase.blockID) {
|
||||
if(!var14) {
|
||||
this.ignoreUpdates = false;
|
||||
var1.setBlockWithNotify(var2 + PistonBlockTextures.field_31051_b[var6], var3 + PistonBlockTextures.field_31054_c[var6], var4 + PistonBlockTextures.field_31053_d[var6], 0);
|
||||
this.ignoreUpdates = true;
|
||||
}
|
||||
} else {
|
||||
this.ignoreUpdates = false;
|
||||
var1.setBlockWithNotify(var9, var10, var11, 0);
|
||||
this.ignoreUpdates = true;
|
||||
var2 += PistonBlockTextures.field_31051_b[var6];
|
||||
var3 += PistonBlockTextures.field_31054_c[var6];
|
||||
var4 += PistonBlockTextures.field_31053_d[var6];
|
||||
var1.setBlockAndMetadata(var2, var3, var4, Block.pistonMoving.blockID, var13);
|
||||
var1.setBlockTileEntity(var2, var3, var4, BlockPistonMoving.getTileEntity(var12, var13, var6, false, false));
|
||||
}
|
||||
} else {
|
||||
this.ignoreUpdates = false;
|
||||
var1.setBlockWithNotify(var2 + PistonBlockTextures.field_31051_b[var6], var3 + PistonBlockTextures.field_31054_c[var6], var4 + PistonBlockTextures.field_31053_d[var6], 0);
|
||||
this.ignoreUpdates = true;
|
||||
}
|
||||
|
||||
var1.playSoundEffect((double)var2 + 0.5D, (double)var3 + 0.5D, (double)var4 + 0.5D, "tile.piston.in", 0.5F, var1.rand.nextFloat() * 0.15F + 0.6F);
|
||||
}
|
||||
|
||||
this.ignoreUpdates = false;
|
||||
}
|
||||
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if(isExtended(var5)) {
|
||||
switch(getOrientation(var5)) {
|
||||
case 0:
|
||||
this.setBlockBounds(0.0F, 0.25F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
break;
|
||||
case 1:
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 12.0F / 16.0F, 1.0F);
|
||||
break;
|
||||
case 2:
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.25F, 1.0F, 1.0F, 1.0F);
|
||||
break;
|
||||
case 3:
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 12.0F / 16.0F);
|
||||
break;
|
||||
case 4:
|
||||
this.setBlockBounds(0.25F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
break;
|
||||
case 5:
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 12.0F / 16.0F, 1.0F, 1.0F);
|
||||
}
|
||||
} else {
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void getCollidingBoundingBoxes(World var1, int var2, int var3, int var4, AxisAlignedBB var5, ArrayList var6) {
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public static int getOrientation(int var0) {
|
||||
return var0 & 7;
|
||||
}
|
||||
|
||||
public static boolean isExtended(int var0) {
|
||||
return (var0 & 8) != 0;
|
||||
}
|
||||
|
||||
private static int determineOrientation(World var0, int var1, int var2, int var3, EntityPlayer var4) {
|
||||
if(MathHelper.abs((float)var4.posX - (float)var1) < 2.0F && MathHelper.abs((float)var4.posZ - (float)var3) < 2.0F) {
|
||||
double var5 = var4.posY + 1.82D - (double)var4.yOffset;
|
||||
if(var5 - (double)var2 > 2.0D) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if((double)var2 - var5 > 0.0D) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int var7 = MathHelper.floor_double((double)(var4.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
|
||||
return var7 == 0 ? 2 : (var7 == 1 ? 5 : (var7 == 2 ? 3 : (var7 == 3 ? 4 : 0)));
|
||||
}
|
||||
|
||||
private static boolean canPushBlock(int var0, World var1, int var2, int var3, int var4, boolean var5) {
|
||||
if(var0 == Block.obsidian.blockID) {
|
||||
return false;
|
||||
} else {
|
||||
if(var0 != Block.pistonBase.blockID && var0 != Block.pistonStickyBase.blockID) {
|
||||
if(Block.blocksList[var0].getHardness() == -1.0F) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(Block.blocksList[var0].getMobilityFlag() == 2) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!var5 && Block.blocksList[var0].getMobilityFlag() == 1) {
|
||||
return false;
|
||||
}
|
||||
} else if(isExtended(var1.getBlockMetadata(var2, var3, var4))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
TileEntity var6 = var1.getBlockTileEntity(var2, var3, var4);
|
||||
return var6 == null;
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean canExtend(World var0, int var1, int var2, int var3, int var4) {
|
||||
int var5 = var1 + PistonBlockTextures.field_31051_b[var4];
|
||||
int var6 = var2 + PistonBlockTextures.field_31054_c[var4];
|
||||
int var7 = var3 + PistonBlockTextures.field_31053_d[var4];
|
||||
int var8 = 0;
|
||||
|
||||
while(true) {
|
||||
if(var8 < 13) {
|
||||
if(var6 <= 0 || var6 >= 127) {
|
||||
return false;
|
||||
}
|
||||
|
||||
int var9 = var0.getBlockId(var5, var6, var7);
|
||||
if(var9 != 0) {
|
||||
if(!canPushBlock(var9, var0, var5, var6, var7, true)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(Block.blocksList[var9].getMobilityFlag() != 1) {
|
||||
if(var8 == 12) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var5 += PistonBlockTextures.field_31051_b[var4];
|
||||
var6 += PistonBlockTextures.field_31054_c[var4];
|
||||
var7 += PistonBlockTextures.field_31053_d[var4];
|
||||
++var8;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean tryExtend(World var1, int var2, int var3, int var4, int var5) {
|
||||
int var6 = var2 + PistonBlockTextures.field_31051_b[var5];
|
||||
int var7 = var3 + PistonBlockTextures.field_31054_c[var5];
|
||||
int var8 = var4 + PistonBlockTextures.field_31053_d[var5];
|
||||
int var9 = 0;
|
||||
|
||||
while(true) {
|
||||
int var10;
|
||||
if(var9 < 13) {
|
||||
if(var7 <= 0 || var7 >= 127) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var10 = var1.getBlockId(var6, var7, var8);
|
||||
if(var10 != 0) {
|
||||
if(!canPushBlock(var10, var1, var6, var7, var8, true)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(Block.blocksList[var10].getMobilityFlag() != 1) {
|
||||
if(var9 == 12) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var6 += PistonBlockTextures.field_31051_b[var5];
|
||||
var7 += PistonBlockTextures.field_31054_c[var5];
|
||||
var8 += PistonBlockTextures.field_31053_d[var5];
|
||||
++var9;
|
||||
continue;
|
||||
}
|
||||
|
||||
Block.blocksList[var10].dropBlockAsItem(var1, var6, var7, var8, var1.getBlockMetadata(var6, var7, var8));
|
||||
var1.setBlockWithNotify(var6, var7, var8, 0);
|
||||
}
|
||||
}
|
||||
|
||||
while(var6 != var2 || var7 != var3 || var8 != var4) {
|
||||
var9 = var6 - PistonBlockTextures.field_31051_b[var5];
|
||||
var10 = var7 - PistonBlockTextures.field_31054_c[var5];
|
||||
int var11 = var8 - PistonBlockTextures.field_31053_d[var5];
|
||||
int var12 = var1.getBlockId(var9, var10, var11);
|
||||
int var13 = var1.getBlockMetadata(var9, var10, var11);
|
||||
if(var12 == this.blockID && var9 == var2 && var10 == var3 && var11 == var4) {
|
||||
var1.setBlockAndMetadata(var6, var7, var8, Block.pistonMoving.blockID, var5 | (this.isSticky ? 8 : 0));
|
||||
var1.setBlockTileEntity(var6, var7, var8, BlockPistonMoving.getTileEntity(Block.pistonExtension.blockID, var5 | (this.isSticky ? 8 : 0), var5, true, false));
|
||||
} else {
|
||||
var1.setBlockAndMetadata(var6, var7, var8, Block.pistonMoving.blockID, var13);
|
||||
var1.setBlockTileEntity(var6, var7, var8, BlockPistonMoving.getTileEntity(var12, var13, var5, true, false));
|
||||
}
|
||||
|
||||
var6 = var9;
|
||||
var7 = var10;
|
||||
var8 = var11;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
139
src/net/minecraft/src/BlockPistonExtension.java
Normal file
139
src/net/minecraft/src/BlockPistonExtension.java
Normal file
@@ -0,0 +1,139 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockPistonExtension extends Block {
|
||||
private int field_31046_a = -1;
|
||||
|
||||
public BlockPistonExtension(int var1, int var2) {
|
||||
super(var1, var2, Material.piston);
|
||||
this.setStepSound(soundStoneFootstep);
|
||||
this.setHardness(0.5F);
|
||||
}
|
||||
|
||||
public void onBlockRemoval(World var1, int var2, int var3, int var4) {
|
||||
super.onBlockRemoval(var1, var2, var3, var4);
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4);
|
||||
int var6 = PistonBlockTextures.field_31052_a[func_31045_b(var5)];
|
||||
var2 += PistonBlockTextures.field_31051_b[var6];
|
||||
var3 += PistonBlockTextures.field_31054_c[var6];
|
||||
var4 += PistonBlockTextures.field_31053_d[var6];
|
||||
int var7 = var1.getBlockId(var2, var3, var4);
|
||||
if(var7 == Block.pistonBase.blockID || var7 == Block.pistonStickyBase.blockID) {
|
||||
var5 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if(BlockPistonBase.isExtended(var5)) {
|
||||
Block.blocksList[var7].dropBlockAsItem(var1, var2, var3, var4, var5);
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
int var3 = func_31045_b(var2);
|
||||
return var1 == var3 ? (this.field_31046_a >= 0 ? this.field_31046_a : ((var2 & 8) != 0 ? this.blockIndexInTexture - 1 : this.blockIndexInTexture)) : (var1 == PistonBlockTextures.field_31052_a[var3] ? 107 : 108);
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockOnSide(World var1, int var2, int var3, int var4, int var5) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public void getCollidingBoundingBoxes(World var1, int var2, int var3, int var4, AxisAlignedBB var5, ArrayList var6) {
|
||||
int var7 = var1.getBlockMetadata(var2, var3, var4);
|
||||
switch(func_31045_b(var7)) {
|
||||
case 0:
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.25F, 1.0F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
this.setBlockBounds(6.0F / 16.0F, 0.25F, 6.0F / 16.0F, 10.0F / 16.0F, 1.0F, 10.0F / 16.0F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
break;
|
||||
case 1:
|
||||
this.setBlockBounds(0.0F, 12.0F / 16.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
this.setBlockBounds(6.0F / 16.0F, 0.0F, 6.0F / 16.0F, 10.0F / 16.0F, 12.0F / 16.0F, 10.0F / 16.0F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
break;
|
||||
case 2:
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 0.25F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
this.setBlockBounds(0.25F, 6.0F / 16.0F, 0.25F, 12.0F / 16.0F, 10.0F / 16.0F, 1.0F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
break;
|
||||
case 3:
|
||||
this.setBlockBounds(0.0F, 0.0F, 12.0F / 16.0F, 1.0F, 1.0F, 1.0F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
this.setBlockBounds(0.25F, 6.0F / 16.0F, 0.0F, 12.0F / 16.0F, 10.0F / 16.0F, 12.0F / 16.0F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
break;
|
||||
case 4:
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 0.25F, 1.0F, 1.0F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
this.setBlockBounds(6.0F / 16.0F, 0.25F, 0.25F, 10.0F / 16.0F, 12.0F / 16.0F, 1.0F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
break;
|
||||
case 5:
|
||||
this.setBlockBounds(12.0F / 16.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
this.setBlockBounds(0.0F, 6.0F / 16.0F, 0.25F, 12.0F / 16.0F, 10.0F / 16.0F, 12.0F / 16.0F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
}
|
||||
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4);
|
||||
switch(func_31045_b(var5)) {
|
||||
case 0:
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.25F, 1.0F);
|
||||
break;
|
||||
case 1:
|
||||
this.setBlockBounds(0.0F, 12.0F / 16.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
break;
|
||||
case 2:
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 0.25F);
|
||||
break;
|
||||
case 3:
|
||||
this.setBlockBounds(0.0F, 0.0F, 12.0F / 16.0F, 1.0F, 1.0F, 1.0F);
|
||||
break;
|
||||
case 4:
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 0.25F, 1.0F, 1.0F);
|
||||
break;
|
||||
case 5:
|
||||
this.setBlockBounds(12.0F / 16.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
int var6 = func_31045_b(var1.getBlockMetadata(var2, var3, var4));
|
||||
int var7 = var1.getBlockId(var2 - PistonBlockTextures.field_31051_b[var6], var3 - PistonBlockTextures.field_31054_c[var6], var4 - PistonBlockTextures.field_31053_d[var6]);
|
||||
if(var7 != Block.pistonBase.blockID && var7 != Block.pistonStickyBase.blockID) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
} else {
|
||||
Block.blocksList[var7].onNeighborBlockChange(var1, var2 - PistonBlockTextures.field_31051_b[var6], var3 - PistonBlockTextures.field_31054_c[var6], var4 - PistonBlockTextures.field_31053_d[var6], var5);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static int func_31045_b(int var0) {
|
||||
return var0 & 7;
|
||||
}
|
||||
}
|
||||
138
src/net/minecraft/src/BlockPistonMoving.java
Normal file
138
src/net/minecraft/src/BlockPistonMoving.java
Normal file
@@ -0,0 +1,138 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockPistonMoving extends BlockContainer {
|
||||
public BlockPistonMoving(int var1) {
|
||||
super(var1, Material.piston);
|
||||
this.setHardness(-1.0F);
|
||||
}
|
||||
|
||||
protected TileEntity getBlockEntity() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void onBlockAdded(World var1, int var2, int var3, int var4) {
|
||||
}
|
||||
|
||||
public void onBlockRemoval(World var1, int var2, int var3, int var4) {
|
||||
TileEntity var5 = var1.getBlockTileEntity(var2, var3, var4);
|
||||
if(var5 != null && var5 instanceof TileEntityPiston) {
|
||||
((TileEntityPiston)var5).clearPistonTileEntity();
|
||||
} else {
|
||||
super.onBlockRemoval(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockOnSide(World var1, int var2, int var3, int var4, int var5) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
if(!var1.singleplayerWorld && var1.getBlockTileEntity(var2, var3, var4) == null) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public void dropBlockAsItemWithChance(World var1, int var2, int var3, int var4, int var5, float var6) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
TileEntityPiston var7 = this.getTileEntityAtLocation(var1, var2, var3, var4);
|
||||
if(var7 != null) {
|
||||
Block.blocksList[var7.getStoredBlockID()].dropBlockAsItem(var1, var2, var3, var4, var7.func_31005_e());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(!var1.singleplayerWorld && var1.getBlockTileEntity(var2, var3, var4) == null) {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static TileEntity getTileEntity(int var0, int var1, int var2, boolean var3, boolean var4) {
|
||||
return new TileEntityPiston(var0, var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
TileEntityPiston var5 = this.getTileEntityAtLocation(var1, var2, var3, var4);
|
||||
if(var5 == null) {
|
||||
return null;
|
||||
} else {
|
||||
float var6 = var5.func_31007_a(0.0F);
|
||||
if(var5.func_31010_c()) {
|
||||
var6 = 1.0F - var6;
|
||||
}
|
||||
|
||||
return this.func_31032_a(var1, var2, var3, var4, var5.getStoredBlockID(), var6, var5.func_31008_d());
|
||||
}
|
||||
}
|
||||
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) {
|
||||
TileEntityPiston var5 = this.getTileEntityAtLocation(var1, var2, var3, var4);
|
||||
if(var5 != null) {
|
||||
Block var6 = Block.blocksList[var5.getStoredBlockID()];
|
||||
if(var6 == null || var6 == this) {
|
||||
return;
|
||||
}
|
||||
|
||||
var6.setBlockBoundsBasedOnState(var1, var2, var3, var4);
|
||||
float var7 = var5.func_31007_a(0.0F);
|
||||
if(var5.func_31010_c()) {
|
||||
var7 = 1.0F - var7;
|
||||
}
|
||||
|
||||
int var8 = var5.func_31008_d();
|
||||
this.minX = var6.minX - (double)((float)PistonBlockTextures.field_31051_b[var8] * var7);
|
||||
this.minY = var6.minY - (double)((float)PistonBlockTextures.field_31054_c[var8] * var7);
|
||||
this.minZ = var6.minZ - (double)((float)PistonBlockTextures.field_31053_d[var8] * var7);
|
||||
this.maxX = var6.maxX - (double)((float)PistonBlockTextures.field_31051_b[var8] * var7);
|
||||
this.maxY = var6.maxY - (double)((float)PistonBlockTextures.field_31054_c[var8] * var7);
|
||||
this.maxZ = var6.maxZ - (double)((float)PistonBlockTextures.field_31053_d[var8] * var7);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public AxisAlignedBB func_31032_a(World var1, int var2, int var3, int var4, int var5, float var6, int var7) {
|
||||
if(var5 != 0 && var5 != this.blockID) {
|
||||
AxisAlignedBB var8 = Block.blocksList[var5].getCollisionBoundingBoxFromPool(var1, var2, var3, var4);
|
||||
if(var8 == null) {
|
||||
return null;
|
||||
} else {
|
||||
var8.minX -= (double)((float)PistonBlockTextures.field_31051_b[var7] * var6);
|
||||
var8.maxX -= (double)((float)PistonBlockTextures.field_31051_b[var7] * var6);
|
||||
var8.minY -= (double)((float)PistonBlockTextures.field_31054_c[var7] * var6);
|
||||
var8.maxY -= (double)((float)PistonBlockTextures.field_31054_c[var7] * var6);
|
||||
var8.minZ -= (double)((float)PistonBlockTextures.field_31053_d[var7] * var6);
|
||||
var8.maxZ -= (double)((float)PistonBlockTextures.field_31053_d[var7] * var6);
|
||||
return var8;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private TileEntityPiston getTileEntityAtLocation(IBlockAccess var1, int var2, int var3, int var4) {
|
||||
TileEntity var5 = var1.getBlockTileEntity(var2, var3, var4);
|
||||
return var5 != null && var5 instanceof TileEntityPiston ? (TileEntityPiston)var5 : null;
|
||||
}
|
||||
}
|
||||
130
src/net/minecraft/src/BlockPortal.java
Normal file
130
src/net/minecraft/src/BlockPortal.java
Normal file
@@ -0,0 +1,130 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockPortal extends BlockBreakable {
|
||||
public BlockPortal(int var1, int var2) {
|
||||
super(var1, var2, Material.portal, false);
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) {
|
||||
float var5;
|
||||
float var6;
|
||||
if(var1.getBlockId(var2 - 1, var3, var4) != this.blockID && var1.getBlockId(var2 + 1, var3, var4) != this.blockID) {
|
||||
var5 = 2.0F / 16.0F;
|
||||
var6 = 0.5F;
|
||||
this.setBlockBounds(0.5F - var5, 0.0F, 0.5F - var6, 0.5F + var5, 1.0F, 0.5F + var6);
|
||||
} else {
|
||||
var5 = 0.5F;
|
||||
var6 = 2.0F / 16.0F;
|
||||
this.setBlockBounds(0.5F - var5, 0.0F, 0.5F - var6, 0.5F + var5, 1.0F, 0.5F + var6);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean tryToCreatePortal(World var1, int var2, int var3, int var4) {
|
||||
byte var5 = 0;
|
||||
byte var6 = 0;
|
||||
if(var1.getBlockId(var2 - 1, var3, var4) == Block.obsidian.blockID || var1.getBlockId(var2 + 1, var3, var4) == Block.obsidian.blockID) {
|
||||
var5 = 1;
|
||||
}
|
||||
|
||||
if(var1.getBlockId(var2, var3, var4 - 1) == Block.obsidian.blockID || var1.getBlockId(var2, var3, var4 + 1) == Block.obsidian.blockID) {
|
||||
var6 = 1;
|
||||
}
|
||||
|
||||
if(var5 == var6) {
|
||||
return false;
|
||||
} else {
|
||||
if(var1.getBlockId(var2 - var5, var3, var4 - var6) == 0) {
|
||||
var2 -= var5;
|
||||
var4 -= var6;
|
||||
}
|
||||
|
||||
int var7;
|
||||
int var8;
|
||||
for(var7 = -1; var7 <= 2; ++var7) {
|
||||
for(var8 = -1; var8 <= 3; ++var8) {
|
||||
boolean var9 = var7 == -1 || var7 == 2 || var8 == -1 || var8 == 3;
|
||||
if(var7 != -1 && var7 != 2 || var8 != -1 && var8 != 3) {
|
||||
int var10 = var1.getBlockId(var2 + var5 * var7, var3 + var8, var4 + var6 * var7);
|
||||
if(var9) {
|
||||
if(var10 != Block.obsidian.blockID) {
|
||||
return false;
|
||||
}
|
||||
} else if(var10 != 0 && var10 != Block.fire.blockID) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var1.editingBlocks = true;
|
||||
|
||||
for(var7 = 0; var7 < 2; ++var7) {
|
||||
for(var8 = 0; var8 < 3; ++var8) {
|
||||
var1.setBlockWithNotify(var2 + var5 * var7, var3 + var8, var4 + var6 * var7, Block.portal.blockID);
|
||||
}
|
||||
}
|
||||
|
||||
var1.editingBlocks = false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
byte var6 = 0;
|
||||
byte var7 = 1;
|
||||
if(var1.getBlockId(var2 - 1, var3, var4) == this.blockID || var1.getBlockId(var2 + 1, var3, var4) == this.blockID) {
|
||||
var6 = 1;
|
||||
var7 = 0;
|
||||
}
|
||||
|
||||
int var8;
|
||||
for(var8 = var3; var1.getBlockId(var2, var8 - 1, var4) == this.blockID; --var8) {
|
||||
}
|
||||
|
||||
if(var1.getBlockId(var2, var8 - 1, var4) != Block.obsidian.blockID) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
} else {
|
||||
int var9;
|
||||
for(var9 = 1; var9 < 4 && var1.getBlockId(var2, var8 + var9, var4) == this.blockID; ++var9) {
|
||||
}
|
||||
|
||||
if(var9 == 3 && var1.getBlockId(var2, var8 + var9, var4) == Block.obsidian.blockID) {
|
||||
boolean var10 = var1.getBlockId(var2 - 1, var3, var4) == this.blockID || var1.getBlockId(var2 + 1, var3, var4) == this.blockID;
|
||||
boolean var11 = var1.getBlockId(var2, var3, var4 - 1) == this.blockID || var1.getBlockId(var2, var3, var4 + 1) == this.blockID;
|
||||
if(var10 && var11) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
} else if((var1.getBlockId(var2 + var6, var3, var4 + var7) != Block.obsidian.blockID || var1.getBlockId(var2 - var6, var3, var4 - var7) != this.blockID) && (var1.getBlockId(var2 - var6, var3, var4 - var7) != Block.obsidian.blockID || var1.getBlockId(var2 + var6, var3, var4 + var7) != this.blockID)) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
} else {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public void onEntityCollidedWithBlock(World var1, int var2, int var3, int var4, Entity var5) {
|
||||
if(var5.ridingEntity == null && var5.riddenByEntity == null) {
|
||||
var5.setInPortal();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
148
src/net/minecraft/src/BlockPressurePlate.java
Normal file
148
src/net/minecraft/src/BlockPressurePlate.java
Normal file
@@ -0,0 +1,148 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockPressurePlate extends Block {
|
||||
private EnumMobType triggerMobType;
|
||||
|
||||
protected BlockPressurePlate(int var1, int var2, EnumMobType var3, Material var4) {
|
||||
super(var1, var2, var4);
|
||||
this.triggerMobType = var3;
|
||||
this.setTickOnLoad(true);
|
||||
float var5 = 1.0F / 16.0F;
|
||||
this.setBlockBounds(var5, 0.0F, var5, 1.0F - var5, 0.03125F, 1.0F - var5);
|
||||
}
|
||||
|
||||
public int tickRate() {
|
||||
return 20;
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return var1.isBlockNormalCube(var2, var3 - 1, var4);
|
||||
}
|
||||
|
||||
public void onBlockAdded(World var1, int var2, int var3, int var4) {
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
boolean var6 = false;
|
||||
if(!var1.isBlockNormalCube(var2, var3 - 1, var4)) {
|
||||
var6 = true;
|
||||
}
|
||||
|
||||
if(var6) {
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4));
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
if(var1.getBlockMetadata(var2, var3, var4) != 0) {
|
||||
this.setStateIfMobInteractsWithPlate(var1, var2, var3, var4);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void onEntityCollidedWithBlock(World var1, int var2, int var3, int var4, Entity var5) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
if(var1.getBlockMetadata(var2, var3, var4) != 1) {
|
||||
this.setStateIfMobInteractsWithPlate(var1, var2, var3, var4);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setStateIfMobInteractsWithPlate(World var1, int var2, int var3, int var4) {
|
||||
boolean var5 = var1.getBlockMetadata(var2, var3, var4) == 1;
|
||||
boolean var6 = false;
|
||||
float var7 = 2.0F / 16.0F;
|
||||
List var8 = null;
|
||||
if(this.triggerMobType == EnumMobType.everything) {
|
||||
var8 = var1.getEntitiesWithinAABBExcludingEntity((Entity)null, AxisAlignedBB.getBoundingBoxFromPool((double)((float)var2 + var7), (double)var3, (double)((float)var4 + var7), (double)((float)(var2 + 1) - var7), (double)var3 + 0.25D, (double)((float)(var4 + 1) - var7)));
|
||||
}
|
||||
|
||||
if(this.triggerMobType == EnumMobType.mobs) {
|
||||
var8 = var1.getEntitiesWithinAABB(EntityLiving.class, AxisAlignedBB.getBoundingBoxFromPool((double)((float)var2 + var7), (double)var3, (double)((float)var4 + var7), (double)((float)(var2 + 1) - var7), (double)var3 + 0.25D, (double)((float)(var4 + 1) - var7)));
|
||||
}
|
||||
|
||||
if(this.triggerMobType == EnumMobType.players) {
|
||||
var8 = var1.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBoxFromPool((double)((float)var2 + var7), (double)var3, (double)((float)var4 + var7), (double)((float)(var2 + 1) - var7), (double)var3 + 0.25D, (double)((float)(var4 + 1) - var7)));
|
||||
}
|
||||
|
||||
if(var8.size() > 0) {
|
||||
var6 = true;
|
||||
}
|
||||
|
||||
if(var6 && !var5) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 1);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID);
|
||||
var1.markBlocksDirty(var2, var3, var4, var2, var3, var4);
|
||||
var1.playSoundEffect((double)var2 + 0.5D, (double)var3 + 0.1D, (double)var4 + 0.5D, "random.click", 0.3F, 0.6F);
|
||||
}
|
||||
|
||||
if(!var6 && var5) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 0);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID);
|
||||
var1.markBlocksDirty(var2, var3, var4, var2, var3, var4);
|
||||
var1.playSoundEffect((double)var2 + 0.5D, (double)var3 + 0.1D, (double)var4 + 0.5D, "random.click", 0.3F, 0.5F);
|
||||
}
|
||||
|
||||
if(var6) {
|
||||
var1.scheduleUpdateTick(var2, var3, var4, this.blockID, this.tickRate());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onBlockRemoval(World var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if(var5 > 0) {
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID);
|
||||
}
|
||||
|
||||
super.onBlockRemoval(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) {
|
||||
boolean var5 = var1.getBlockMetadata(var2, var3, var4) == 1;
|
||||
float var6 = 1.0F / 16.0F;
|
||||
if(var5) {
|
||||
this.setBlockBounds(var6, 0.0F, var6, 1.0F - var6, 0.03125F, 1.0F - var6);
|
||||
} else {
|
||||
this.setBlockBounds(var6, 0.0F, var6, 1.0F - var6, 1.0F / 16.0F, 1.0F - var6);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public boolean isPoweringTo(IBlockAccess var1, int var2, int var3, int var4, int var5) {
|
||||
return var1.getBlockMetadata(var2, var3, var4) > 0;
|
||||
}
|
||||
|
||||
public boolean isIndirectlyPoweringTo(World var1, int var2, int var3, int var4, int var5) {
|
||||
return var1.getBlockMetadata(var2, var3, var4) == 0 ? false : var5 == 1;
|
||||
}
|
||||
|
||||
public boolean canProvidePower() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public int getMobilityFlag() {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
45
src/net/minecraft/src/BlockPumpkin.java
Normal file
45
src/net/minecraft/src/BlockPumpkin.java
Normal file
@@ -0,0 +1,45 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BlockPumpkin extends Block {
|
||||
private boolean blockType;
|
||||
|
||||
protected BlockPumpkin(int var1, int var2, boolean var3) {
|
||||
super(var1, Material.pumpkin);
|
||||
this.blockIndexInTexture = var2;
|
||||
this.setTickOnLoad(true);
|
||||
this.blockType = var3;
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
if(var1 == 1) {
|
||||
return this.blockIndexInTexture;
|
||||
} else if(var1 == 0) {
|
||||
return this.blockIndexInTexture;
|
||||
} else {
|
||||
int var3 = this.blockIndexInTexture + 1 + 16;
|
||||
if(this.blockType) {
|
||||
++var3;
|
||||
}
|
||||
|
||||
return var2 == 2 && var1 == 2 ? var3 : (var2 == 3 && var1 == 5 ? var3 : (var2 == 0 && var1 == 3 ? var3 : (var2 == 1 && var1 == 4 ? var3 : this.blockIndexInTexture + 16)));
|
||||
}
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSide(int var1) {
|
||||
return var1 == 1 ? this.blockIndexInTexture : (var1 == 0 ? this.blockIndexInTexture : (var1 == 3 ? this.blockIndexInTexture + 1 + 16 : this.blockIndexInTexture + 16));
|
||||
}
|
||||
|
||||
public void onBlockAdded(World var1, int var2, int var3, int var4) {
|
||||
super.onBlockAdded(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockId(var2, var3, var4);
|
||||
return (var5 == 0 || Block.blocksList[var5].blockMaterial.func_27090_g()) && var1.isBlockNormalCube(var2, var3 - 1, var4);
|
||||
}
|
||||
|
||||
public void onBlockPlacedBy(World var1, int var2, int var3, int var4, EntityLiving var5) {
|
||||
int var6 = MathHelper.floor_double((double)(var5.rotationYaw * 4.0F / 360.0F) + 2.5D) & 3;
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6);
|
||||
}
|
||||
}
|
||||
246
src/net/minecraft/src/BlockRail.java
Normal file
246
src/net/minecraft/src/BlockRail.java
Normal file
@@ -0,0 +1,246 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockRail extends Block {
|
||||
private final boolean field_27034_a;
|
||||
|
||||
public static final boolean func_27029_g(World var0, int var1, int var2, int var3) {
|
||||
int var4 = var0.getBlockId(var1, var2, var3);
|
||||
return var4 == Block.minecartTrack.blockID || var4 == Block.railPowered.blockID || var4 == Block.railDetector.blockID;
|
||||
}
|
||||
|
||||
public static final boolean func_27030_c(int var0) {
|
||||
return var0 == Block.minecartTrack.blockID || var0 == Block.railPowered.blockID || var0 == Block.railDetector.blockID;
|
||||
}
|
||||
|
||||
protected BlockRail(int var1, int var2, boolean var3) {
|
||||
super(var1, var2, Material.circuits);
|
||||
this.field_27034_a = var3;
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 2.0F / 16.0F, 1.0F);
|
||||
}
|
||||
|
||||
public boolean func_27028_d() {
|
||||
return this.field_27034_a;
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public MovingObjectPosition collisionRayTrace(World var1, int var2, int var3, int var4, Vec3D var5, Vec3D var6) {
|
||||
this.setBlockBoundsBasedOnState(var1, var2, var3, var4);
|
||||
return super.collisionRayTrace(var1, var2, var3, var4, var5, var6);
|
||||
}
|
||||
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if(var5 >= 2 && var5 <= 5) {
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 10.0F / 16.0F, 1.0F);
|
||||
} else {
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 2.0F / 16.0F, 1.0F);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
if(this.field_27034_a) {
|
||||
if(this.blockID == Block.railPowered.blockID && (var2 & 8) == 0) {
|
||||
return this.blockIndexInTexture - 16;
|
||||
}
|
||||
} else if(var2 >= 6) {
|
||||
return this.blockIndexInTexture - 16;
|
||||
}
|
||||
|
||||
return this.blockIndexInTexture;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return var1.isBlockNormalCube(var2, var3 - 1, var4);
|
||||
}
|
||||
|
||||
public void onBlockAdded(World var1, int var2, int var3, int var4) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
this.func_4038_g(var1, var2, var3, var4, true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
int var7 = var6;
|
||||
if(this.field_27034_a) {
|
||||
var7 = var6 & 7;
|
||||
}
|
||||
|
||||
boolean var8 = false;
|
||||
if(!var1.isBlockNormalCube(var2, var3 - 1, var4)) {
|
||||
var8 = true;
|
||||
}
|
||||
|
||||
if(var7 == 2 && !var1.isBlockNormalCube(var2 + 1, var3, var4)) {
|
||||
var8 = true;
|
||||
}
|
||||
|
||||
if(var7 == 3 && !var1.isBlockNormalCube(var2 - 1, var3, var4)) {
|
||||
var8 = true;
|
||||
}
|
||||
|
||||
if(var7 == 4 && !var1.isBlockNormalCube(var2, var3, var4 - 1)) {
|
||||
var8 = true;
|
||||
}
|
||||
|
||||
if(var7 == 5 && !var1.isBlockNormalCube(var2, var3, var4 + 1)) {
|
||||
var8 = true;
|
||||
}
|
||||
|
||||
if(var8) {
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4));
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
} else if(this.blockID == Block.railPowered.blockID) {
|
||||
boolean var9 = var1.isBlockIndirectlyGettingPowered(var2, var3, var4) || var1.isBlockIndirectlyGettingPowered(var2, var3 + 1, var4);
|
||||
var9 = var9 || this.func_27032_a(var1, var2, var3, var4, var6, true, 0) || this.func_27032_a(var1, var2, var3, var4, var6, false, 0);
|
||||
boolean var10 = false;
|
||||
if(var9 && (var6 & 8) == 0) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var7 | 8);
|
||||
var10 = true;
|
||||
} else if(!var9 && (var6 & 8) != 0) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var7);
|
||||
var10 = true;
|
||||
}
|
||||
|
||||
if(var10) {
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID);
|
||||
if(var7 == 2 || var7 == 3 || var7 == 4 || var7 == 5) {
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 + 1, var4, this.blockID);
|
||||
}
|
||||
}
|
||||
} else if(var5 > 0 && Block.blocksList[var5].canProvidePower() && !this.field_27034_a && RailLogic.getNAdjacentTracks(new RailLogic(this, var1, var2, var3, var4)) == 3) {
|
||||
this.func_4038_g(var1, var2, var3, var4, false);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void func_4038_g(World var1, int var2, int var3, int var4, boolean var5) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
(new RailLogic(this, var1, var2, var3, var4)).func_596_a(var1.isBlockIndirectlyGettingPowered(var2, var3, var4), var5);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean func_27032_a(World var1, int var2, int var3, int var4, int var5, boolean var6, int var7) {
|
||||
if(var7 >= 8) {
|
||||
return false;
|
||||
} else {
|
||||
int var8 = var5 & 7;
|
||||
boolean var9 = true;
|
||||
switch(var8) {
|
||||
case 0:
|
||||
if(var6) {
|
||||
++var4;
|
||||
} else {
|
||||
--var4;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if(var6) {
|
||||
--var2;
|
||||
} else {
|
||||
++var2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if(var6) {
|
||||
--var2;
|
||||
} else {
|
||||
++var2;
|
||||
++var3;
|
||||
var9 = false;
|
||||
}
|
||||
|
||||
var8 = 1;
|
||||
break;
|
||||
case 3:
|
||||
if(var6) {
|
||||
--var2;
|
||||
++var3;
|
||||
var9 = false;
|
||||
} else {
|
||||
++var2;
|
||||
}
|
||||
|
||||
var8 = 1;
|
||||
break;
|
||||
case 4:
|
||||
if(var6) {
|
||||
++var4;
|
||||
} else {
|
||||
--var4;
|
||||
++var3;
|
||||
var9 = false;
|
||||
}
|
||||
|
||||
var8 = 0;
|
||||
break;
|
||||
case 5:
|
||||
if(var6) {
|
||||
++var4;
|
||||
++var3;
|
||||
var9 = false;
|
||||
} else {
|
||||
--var4;
|
||||
}
|
||||
|
||||
var8 = 0;
|
||||
}
|
||||
|
||||
return this.func_27031_a(var1, var2, var3, var4, var6, var7, var8) ? true : var9 && this.func_27031_a(var1, var2, var3 - 1, var4, var6, var7, var8);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean func_27031_a(World var1, int var2, int var3, int var4, boolean var5, int var6, int var7) {
|
||||
int var8 = var1.getBlockId(var2, var3, var4);
|
||||
if(var8 == Block.railPowered.blockID) {
|
||||
int var9 = var1.getBlockMetadata(var2, var3, var4);
|
||||
int var10 = var9 & 7;
|
||||
if(var7 == 1 && (var10 == 0 || var10 == 4 || var10 == 5)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(var7 == 0 && (var10 == 1 || var10 == 2 || var10 == 3)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if((var9 & 8) != 0) {
|
||||
if(!var1.isBlockIndirectlyGettingPowered(var2, var3, var4) && !var1.isBlockIndirectlyGettingPowered(var2, var3 + 1, var4)) {
|
||||
return this.func_27032_a(var1, var2, var3, var4, var9, var5, var6 + 1);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public int getMobilityFlag() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static boolean func_27033_a(BlockRail var0) {
|
||||
return var0.field_27034_a;
|
||||
}
|
||||
}
|
||||
97
src/net/minecraft/src/BlockRedstoneOre.java
Normal file
97
src/net/minecraft/src/BlockRedstoneOre.java
Normal file
@@ -0,0 +1,97 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockRedstoneOre extends Block {
|
||||
private boolean field_665_a;
|
||||
|
||||
public BlockRedstoneOre(int var1, int var2, boolean var3) {
|
||||
super(var1, var2, Material.rock);
|
||||
if(var3) {
|
||||
this.setTickOnLoad(true);
|
||||
}
|
||||
|
||||
this.field_665_a = var3;
|
||||
}
|
||||
|
||||
public int tickRate() {
|
||||
return 30;
|
||||
}
|
||||
|
||||
public void onBlockClicked(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
this.func_321_g(var1, var2, var3, var4);
|
||||
super.onBlockClicked(var1, var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
public void onEntityWalking(World var1, int var2, int var3, int var4, Entity var5) {
|
||||
this.func_321_g(var1, var2, var3, var4);
|
||||
super.onEntityWalking(var1, var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
this.func_321_g(var1, var2, var3, var4);
|
||||
return super.blockActivated(var1, var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
private void func_321_g(World var1, int var2, int var3, int var4) {
|
||||
this.func_320_h(var1, var2, var3, var4);
|
||||
if(this.blockID == Block.oreRedstone.blockID) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, Block.oreRedstoneGlowing.blockID);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
if(this.blockID == Block.oreRedstoneGlowing.blockID) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, Block.oreRedstone.blockID);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Item.redstone.shiftedIndex;
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return 4 + var1.nextInt(2);
|
||||
}
|
||||
|
||||
private void func_320_h(World var1, int var2, int var3, int var4) {
|
||||
Random var5 = var1.rand;
|
||||
double var6 = 1.0D / 16.0D;
|
||||
|
||||
for(int var8 = 0; var8 < 6; ++var8) {
|
||||
double var9 = (double)((float)var2 + var5.nextFloat());
|
||||
double var11 = (double)((float)var3 + var5.nextFloat());
|
||||
double var13 = (double)((float)var4 + var5.nextFloat());
|
||||
if(var8 == 0 && !var1.isBlockOpaqueCube(var2, var3 + 1, var4)) {
|
||||
var11 = (double)(var3 + 1) + var6;
|
||||
}
|
||||
|
||||
if(var8 == 1 && !var1.isBlockOpaqueCube(var2, var3 - 1, var4)) {
|
||||
var11 = (double)(var3 + 0) - var6;
|
||||
}
|
||||
|
||||
if(var8 == 2 && !var1.isBlockOpaqueCube(var2, var3, var4 + 1)) {
|
||||
var13 = (double)(var4 + 1) + var6;
|
||||
}
|
||||
|
||||
if(var8 == 3 && !var1.isBlockOpaqueCube(var2, var3, var4 - 1)) {
|
||||
var13 = (double)(var4 + 0) - var6;
|
||||
}
|
||||
|
||||
if(var8 == 4 && !var1.isBlockOpaqueCube(var2 + 1, var3, var4)) {
|
||||
var9 = (double)(var2 + 1) + var6;
|
||||
}
|
||||
|
||||
if(var8 == 5 && !var1.isBlockOpaqueCube(var2 - 1, var3, var4)) {
|
||||
var9 = (double)(var2 + 0) - var6;
|
||||
}
|
||||
|
||||
if(var9 < (double)var2 || var9 > (double)(var2 + 1) || var11 < 0.0D || var11 > (double)(var3 + 1) || var13 < (double)var4 || var13 > (double)(var4 + 1)) {
|
||||
var1.spawnParticle("reddust", var9, var11, var13, 0.0D, 0.0D, 0.0D);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
135
src/net/minecraft/src/BlockRedstoneRepeater.java
Normal file
135
src/net/minecraft/src/BlockRedstoneRepeater.java
Normal file
@@ -0,0 +1,135 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockRedstoneRepeater extends Block {
|
||||
public static final double[] field_22014_a = new double[]{-0.0625D, 1.0D / 16.0D, 0.1875D, 0.3125D};
|
||||
private static final int[] field_22013_b = new int[]{1, 2, 3, 4};
|
||||
private final boolean field_22015_c;
|
||||
|
||||
protected BlockRedstoneRepeater(int var1, boolean var2) {
|
||||
super(var1, 6, Material.circuits);
|
||||
this.field_22015_c = var2;
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 2.0F / 16.0F, 1.0F);
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return !var1.isBlockNormalCube(var2, var3 - 1, var4) ? false : super.canPlaceBlockAt(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public boolean canBlockStay(World var1, int var2, int var3, int var4) {
|
||||
return !var1.isBlockNormalCube(var2, var3 - 1, var4) ? false : super.canBlockStay(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
boolean var7 = this.func_22012_g(var1, var2, var3, var4, var6);
|
||||
if(this.field_22015_c && !var7) {
|
||||
var1.setBlockAndMetadataWithNotify(var2, var3, var4, Block.redstoneRepeaterIdle.blockID, var6);
|
||||
} else if(!this.field_22015_c) {
|
||||
var1.setBlockAndMetadataWithNotify(var2, var3, var4, Block.redstoneRepeaterActive.blockID, var6);
|
||||
if(!var7) {
|
||||
int var8 = (var6 & 12) >> 2;
|
||||
var1.scheduleUpdateTick(var2, var3, var4, Block.redstoneRepeaterActive.blockID, field_22013_b[var8] * 2);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
return var1 == 0 ? (this.field_22015_c ? 99 : 115) : (var1 == 1 ? (this.field_22015_c ? 147 : 131) : 5);
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSide(int var1) {
|
||||
return this.getBlockTextureFromSideAndMetadata(var1, 0);
|
||||
}
|
||||
|
||||
public boolean isIndirectlyPoweringTo(World var1, int var2, int var3, int var4, int var5) {
|
||||
return this.isPoweringTo(var1, var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
public boolean isPoweringTo(IBlockAccess var1, int var2, int var3, int var4, int var5) {
|
||||
if(!this.field_22015_c) {
|
||||
return false;
|
||||
} else {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4) & 3;
|
||||
return var6 == 0 && var5 == 3 ? true : (var6 == 1 && var5 == 4 ? true : (var6 == 2 && var5 == 2 ? true : var6 == 3 && var5 == 5));
|
||||
}
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(!this.canBlockStay(var1, var2, var3, var4)) {
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4));
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
} else {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
boolean var7 = this.func_22012_g(var1, var2, var3, var4, var6);
|
||||
int var8 = (var6 & 12) >> 2;
|
||||
if(this.field_22015_c && !var7) {
|
||||
var1.scheduleUpdateTick(var2, var3, var4, this.blockID, field_22013_b[var8] * 2);
|
||||
} else if(!this.field_22015_c && var7) {
|
||||
var1.scheduleUpdateTick(var2, var3, var4, this.blockID, field_22013_b[var8] * 2);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private boolean func_22012_g(World var1, int var2, int var3, int var4, int var5) {
|
||||
int var6 = var5 & 3;
|
||||
switch(var6) {
|
||||
case 0:
|
||||
return var1.isBlockIndirectlyProvidingPowerTo(var2, var3, var4 + 1, 3) || var1.getBlockId(var2, var3, var4 + 1) == Block.redstoneWire.blockID && var1.getBlockMetadata(var2, var3, var4 + 1) > 0;
|
||||
case 1:
|
||||
return var1.isBlockIndirectlyProvidingPowerTo(var2 - 1, var3, var4, 4) || var1.getBlockId(var2 - 1, var3, var4) == Block.redstoneWire.blockID && var1.getBlockMetadata(var2 - 1, var3, var4) > 0;
|
||||
case 2:
|
||||
return var1.isBlockIndirectlyProvidingPowerTo(var2, var3, var4 - 1, 2) || var1.getBlockId(var2, var3, var4 - 1) == Block.redstoneWire.blockID && var1.getBlockMetadata(var2, var3, var4 - 1) > 0;
|
||||
case 3:
|
||||
return var1.isBlockIndirectlyProvidingPowerTo(var2 + 1, var3, var4, 5) || var1.getBlockId(var2 + 1, var3, var4) == Block.redstoneWire.blockID && var1.getBlockMetadata(var2 + 1, var3, var4) > 0;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
int var7 = (var6 & 12) >> 2;
|
||||
var7 = var7 + 1 << 2 & 12;
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var7 | var6 & 3);
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean canProvidePower() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void onBlockPlacedBy(World var1, int var2, int var3, int var4, EntityLiving var5) {
|
||||
int var6 = ((MathHelper.floor_double((double)(var5.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3) + 2) % 4;
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6);
|
||||
boolean var7 = this.func_22012_g(var1, var2, var3, var4, var6);
|
||||
if(var7) {
|
||||
var1.scheduleUpdateTick(var2, var3, var4, this.blockID, 1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onBlockAdded(World var1, int var2, int var3, int var4) {
|
||||
var1.notifyBlocksOfNeighborChange(var2 + 1, var3, var4, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2 - 1, var3, var4, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4 + 1, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4 - 1, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 + 1, var4, this.blockID);
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Item.redstoneRepeater.shiftedIndex;
|
||||
}
|
||||
}
|
||||
130
src/net/minecraft/src/BlockRedstoneTorch.java
Normal file
130
src/net/minecraft/src/BlockRedstoneTorch.java
Normal file
@@ -0,0 +1,130 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockRedstoneTorch extends BlockTorch {
|
||||
private boolean torchActive = false;
|
||||
private static List torchUpdates = new ArrayList();
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
return var1 == 1 ? Block.redstoneWire.getBlockTextureFromSideAndMetadata(var1, var2) : super.getBlockTextureFromSideAndMetadata(var1, var2);
|
||||
}
|
||||
|
||||
private boolean checkForBurnout(World var1, int var2, int var3, int var4, boolean var5) {
|
||||
if(var5) {
|
||||
torchUpdates.add(new RedstoneUpdateInfo(var2, var3, var4, var1.getWorldTime()));
|
||||
}
|
||||
|
||||
int var6 = 0;
|
||||
|
||||
for(int var7 = 0; var7 < torchUpdates.size(); ++var7) {
|
||||
RedstoneUpdateInfo var8 = (RedstoneUpdateInfo)torchUpdates.get(var7);
|
||||
if(var8.x == var2 && var8.y == var3 && var8.z == var4) {
|
||||
++var6;
|
||||
if(var6 >= 8) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
protected BlockRedstoneTorch(int var1, int var2, boolean var3) {
|
||||
super(var1, var2);
|
||||
this.torchActive = var3;
|
||||
this.setTickOnLoad(true);
|
||||
}
|
||||
|
||||
public int tickRate() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
public void onBlockAdded(World var1, int var2, int var3, int var4) {
|
||||
if(var1.getBlockMetadata(var2, var3, var4) == 0) {
|
||||
super.onBlockAdded(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
if(this.torchActive) {
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 + 1, var4, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2 - 1, var3, var4, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2 + 1, var3, var4, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4 - 1, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4 + 1, this.blockID);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onBlockRemoval(World var1, int var2, int var3, int var4) {
|
||||
if(this.torchActive) {
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 + 1, var4, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2 - 1, var3, var4, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2 + 1, var3, var4, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4 - 1, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4 + 1, this.blockID);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public boolean isPoweringTo(IBlockAccess var1, int var2, int var3, int var4, int var5) {
|
||||
if(!this.torchActive) {
|
||||
return false;
|
||||
} else {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
return var6 == 5 && var5 == 1 ? false : (var6 == 3 && var5 == 3 ? false : (var6 == 4 && var5 == 2 ? false : (var6 == 1 && var5 == 5 ? false : var6 != 2 || var5 != 4)));
|
||||
}
|
||||
}
|
||||
|
||||
private boolean func_30003_g(World var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4);
|
||||
return var5 == 5 && var1.isBlockIndirectlyProvidingPowerTo(var2, var3 - 1, var4, 0) ? true : (var5 == 3 && var1.isBlockIndirectlyProvidingPowerTo(var2, var3, var4 - 1, 2) ? true : (var5 == 4 && var1.isBlockIndirectlyProvidingPowerTo(var2, var3, var4 + 1, 3) ? true : (var5 == 1 && var1.isBlockIndirectlyProvidingPowerTo(var2 - 1, var3, var4, 4) ? true : var5 == 2 && var1.isBlockIndirectlyProvidingPowerTo(var2 + 1, var3, var4, 5))));
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
boolean var6 = this.func_30003_g(var1, var2, var3, var4);
|
||||
|
||||
while(torchUpdates.size() > 0 && var1.getWorldTime() - ((RedstoneUpdateInfo)torchUpdates.get(0)).updateTime > 100L) {
|
||||
torchUpdates.remove(0);
|
||||
}
|
||||
|
||||
if(this.torchActive) {
|
||||
if(var6) {
|
||||
var1.setBlockAndMetadataWithNotify(var2, var3, var4, Block.torchRedstoneIdle.blockID, var1.getBlockMetadata(var2, var3, var4));
|
||||
if(this.checkForBurnout(var1, var2, var3, var4, true)) {
|
||||
var1.playSoundEffect((double)((float)var2 + 0.5F), (double)((float)var3 + 0.5F), (double)((float)var4 + 0.5F), "random.fizz", 0.5F, 2.6F + (var1.rand.nextFloat() - var1.rand.nextFloat()) * 0.8F);
|
||||
|
||||
for(int var7 = 0; var7 < 5; ++var7) {
|
||||
double var8 = (double)var2 + var5.nextDouble() * 0.6D + 0.2D;
|
||||
double var10 = (double)var3 + var5.nextDouble() * 0.6D + 0.2D;
|
||||
double var12 = (double)var4 + var5.nextDouble() * 0.6D + 0.2D;
|
||||
var1.spawnParticle("smoke", var8, var10, var12, 0.0D, 0.0D, 0.0D);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if(!var6 && !this.checkForBurnout(var1, var2, var3, var4, false)) {
|
||||
var1.setBlockAndMetadataWithNotify(var2, var3, var4, Block.torchRedstoneActive.blockID, var1.getBlockMetadata(var2, var3, var4));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
super.onNeighborBlockChange(var1, var2, var3, var4, var5);
|
||||
var1.scheduleUpdateTick(var2, var3, var4, this.blockID, this.tickRate());
|
||||
}
|
||||
|
||||
public boolean isIndirectlyPoweringTo(World var1, int var2, int var3, int var4, int var5) {
|
||||
return var5 == 0 ? this.isPoweringTo(var1, var2, var3, var4, var5) : false;
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Block.torchRedstoneActive.blockID;
|
||||
}
|
||||
|
||||
public boolean canProvidePower() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
336
src/net/minecraft/src/BlockRedstoneWire.java
Normal file
336
src/net/minecraft/src/BlockRedstoneWire.java
Normal file
@@ -0,0 +1,336 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
|
||||
public class BlockRedstoneWire extends Block {
|
||||
private boolean wiresProvidePower = true;
|
||||
private Set field_21032_b = new HashSet();
|
||||
|
||||
public BlockRedstoneWire(int var1, int var2) {
|
||||
super(var1, var2, Material.circuits);
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F / 16.0F, 1.0F);
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
return this.blockIndexInTexture;
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return var1.isBlockNormalCube(var2, var3 - 1, var4);
|
||||
}
|
||||
|
||||
private void updateAndPropagateCurrentStrength(World var1, int var2, int var3, int var4) {
|
||||
this.func_21031_a(var1, var2, var3, var4, var2, var3, var4);
|
||||
ArrayList var5 = new ArrayList(this.field_21032_b);
|
||||
this.field_21032_b.clear();
|
||||
|
||||
for(int var6 = 0; var6 < var5.size(); ++var6) {
|
||||
ChunkPosition var7 = (ChunkPosition)var5.get(var6);
|
||||
var1.notifyBlocksOfNeighborChange(var7.x, var7.y, var7.z, this.blockID);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void func_21031_a(World var1, int var2, int var3, int var4, int var5, int var6, int var7) {
|
||||
int var8 = var1.getBlockMetadata(var2, var3, var4);
|
||||
int var9 = 0;
|
||||
this.wiresProvidePower = false;
|
||||
boolean var10 = var1.isBlockIndirectlyGettingPowered(var2, var3, var4);
|
||||
this.wiresProvidePower = true;
|
||||
int var11;
|
||||
int var12;
|
||||
int var13;
|
||||
if(var10) {
|
||||
var9 = 15;
|
||||
} else {
|
||||
for(var11 = 0; var11 < 4; ++var11) {
|
||||
var12 = var2;
|
||||
var13 = var4;
|
||||
if(var11 == 0) {
|
||||
var12 = var2 - 1;
|
||||
}
|
||||
|
||||
if(var11 == 1) {
|
||||
++var12;
|
||||
}
|
||||
|
||||
if(var11 == 2) {
|
||||
var13 = var4 - 1;
|
||||
}
|
||||
|
||||
if(var11 == 3) {
|
||||
++var13;
|
||||
}
|
||||
|
||||
if(var12 != var5 || var3 != var6 || var13 != var7) {
|
||||
var9 = this.getMaxCurrentStrength(var1, var12, var3, var13, var9);
|
||||
}
|
||||
|
||||
if(var1.isBlockNormalCube(var12, var3, var13) && !var1.isBlockNormalCube(var2, var3 + 1, var4)) {
|
||||
if(var12 != var5 || var3 + 1 != var6 || var13 != var7) {
|
||||
var9 = this.getMaxCurrentStrength(var1, var12, var3 + 1, var13, var9);
|
||||
}
|
||||
} else if(!var1.isBlockNormalCube(var12, var3, var13) && (var12 != var5 || var3 - 1 != var6 || var13 != var7)) {
|
||||
var9 = this.getMaxCurrentStrength(var1, var12, var3 - 1, var13, var9);
|
||||
}
|
||||
}
|
||||
|
||||
if(var9 > 0) {
|
||||
--var9;
|
||||
} else {
|
||||
var9 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(var8 != var9) {
|
||||
var1.editingBlocks = true;
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var9);
|
||||
var1.markBlocksDirty(var2, var3, var4, var2, var3, var4);
|
||||
var1.editingBlocks = false;
|
||||
|
||||
for(var11 = 0; var11 < 4; ++var11) {
|
||||
var12 = var2;
|
||||
var13 = var4;
|
||||
int var14 = var3 - 1;
|
||||
if(var11 == 0) {
|
||||
var12 = var2 - 1;
|
||||
}
|
||||
|
||||
if(var11 == 1) {
|
||||
++var12;
|
||||
}
|
||||
|
||||
if(var11 == 2) {
|
||||
var13 = var4 - 1;
|
||||
}
|
||||
|
||||
if(var11 == 3) {
|
||||
++var13;
|
||||
}
|
||||
|
||||
if(var1.isBlockNormalCube(var12, var3, var13)) {
|
||||
var14 += 2;
|
||||
}
|
||||
|
||||
boolean var15 = false;
|
||||
int var16 = this.getMaxCurrentStrength(var1, var12, var3, var13, -1);
|
||||
var9 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if(var9 > 0) {
|
||||
--var9;
|
||||
}
|
||||
|
||||
if(var16 >= 0 && var16 != var9) {
|
||||
this.func_21031_a(var1, var12, var3, var13, var2, var3, var4);
|
||||
}
|
||||
|
||||
var16 = this.getMaxCurrentStrength(var1, var12, var14, var13, -1);
|
||||
var9 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if(var9 > 0) {
|
||||
--var9;
|
||||
}
|
||||
|
||||
if(var16 >= 0 && var16 != var9) {
|
||||
this.func_21031_a(var1, var12, var14, var13, var2, var3, var4);
|
||||
}
|
||||
}
|
||||
|
||||
if(var8 == 0 || var9 == 0) {
|
||||
this.field_21032_b.add(new ChunkPosition(var2, var3, var4));
|
||||
this.field_21032_b.add(new ChunkPosition(var2 - 1, var3, var4));
|
||||
this.field_21032_b.add(new ChunkPosition(var2 + 1, var3, var4));
|
||||
this.field_21032_b.add(new ChunkPosition(var2, var3 - 1, var4));
|
||||
this.field_21032_b.add(new ChunkPosition(var2, var3 + 1, var4));
|
||||
this.field_21032_b.add(new ChunkPosition(var2, var3, var4 - 1));
|
||||
this.field_21032_b.add(new ChunkPosition(var2, var3, var4 + 1));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void notifyWireNeighborsOfNeighborChange(World var1, int var2, int var3, int var4) {
|
||||
if(var1.getBlockId(var2, var3, var4) == this.blockID) {
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2 - 1, var3, var4, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2 + 1, var3, var4, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4 - 1, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3, var4 + 1, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 + 1, var4, this.blockID);
|
||||
}
|
||||
}
|
||||
|
||||
public void onBlockAdded(World var1, int var2, int var3, int var4) {
|
||||
super.onBlockAdded(var1, var2, var3, var4);
|
||||
if(!var1.singleplayerWorld) {
|
||||
this.updateAndPropagateCurrentStrength(var1, var2, var3, var4);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 + 1, var4, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID);
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2 - 1, var3, var4);
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2 + 1, var3, var4);
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2, var3, var4 - 1);
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2, var3, var4 + 1);
|
||||
if(var1.isBlockNormalCube(var2 - 1, var3, var4)) {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2 - 1, var3 + 1, var4);
|
||||
} else {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2 - 1, var3 - 1, var4);
|
||||
}
|
||||
|
||||
if(var1.isBlockNormalCube(var2 + 1, var3, var4)) {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2 + 1, var3 + 1, var4);
|
||||
} else {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2 + 1, var3 - 1, var4);
|
||||
}
|
||||
|
||||
if(var1.isBlockNormalCube(var2, var3, var4 - 1)) {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2, var3 + 1, var4 - 1);
|
||||
} else {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2, var3 - 1, var4 - 1);
|
||||
}
|
||||
|
||||
if(var1.isBlockNormalCube(var2, var3, var4 + 1)) {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2, var3 + 1, var4 + 1);
|
||||
} else {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2, var3 - 1, var4 + 1);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void onBlockRemoval(World var1, int var2, int var3, int var4) {
|
||||
super.onBlockRemoval(var1, var2, var3, var4);
|
||||
if(!var1.singleplayerWorld) {
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 + 1, var4, this.blockID);
|
||||
var1.notifyBlocksOfNeighborChange(var2, var3 - 1, var4, this.blockID);
|
||||
this.updateAndPropagateCurrentStrength(var1, var2, var3, var4);
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2 - 1, var3, var4);
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2 + 1, var3, var4);
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2, var3, var4 - 1);
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2, var3, var4 + 1);
|
||||
if(var1.isBlockNormalCube(var2 - 1, var3, var4)) {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2 - 1, var3 + 1, var4);
|
||||
} else {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2 - 1, var3 - 1, var4);
|
||||
}
|
||||
|
||||
if(var1.isBlockNormalCube(var2 + 1, var3, var4)) {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2 + 1, var3 + 1, var4);
|
||||
} else {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2 + 1, var3 - 1, var4);
|
||||
}
|
||||
|
||||
if(var1.isBlockNormalCube(var2, var3, var4 - 1)) {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2, var3 + 1, var4 - 1);
|
||||
} else {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2, var3 - 1, var4 - 1);
|
||||
}
|
||||
|
||||
if(var1.isBlockNormalCube(var2, var3, var4 + 1)) {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2, var3 + 1, var4 + 1);
|
||||
} else {
|
||||
this.notifyWireNeighborsOfNeighborChange(var1, var2, var3 - 1, var4 + 1);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private int getMaxCurrentStrength(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(var1.getBlockId(var2, var3, var4) != this.blockID) {
|
||||
return var5;
|
||||
} else {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
return var6 > var5 ? var6 : var5;
|
||||
}
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
boolean var7 = this.canPlaceBlockAt(var1, var2, var3, var4);
|
||||
if(!var7) {
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var6);
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
} else {
|
||||
this.updateAndPropagateCurrentStrength(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
super.onNeighborBlockChange(var1, var2, var3, var4, var5);
|
||||
}
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Item.redstone.shiftedIndex;
|
||||
}
|
||||
|
||||
public boolean isIndirectlyPoweringTo(World var1, int var2, int var3, int var4, int var5) {
|
||||
return !this.wiresProvidePower ? false : this.isPoweringTo(var1, var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
public boolean isPoweringTo(IBlockAccess var1, int var2, int var3, int var4, int var5) {
|
||||
if(!this.wiresProvidePower) {
|
||||
return false;
|
||||
} else if(var1.getBlockMetadata(var2, var3, var4) == 0) {
|
||||
return false;
|
||||
} else if(var5 == 1) {
|
||||
return true;
|
||||
} else {
|
||||
boolean var6 = isPowerProviderOrWire(var1, var2 - 1, var3, var4, 1) || !var1.isBlockNormalCube(var2 - 1, var3, var4) && isPowerProviderOrWire(var1, var2 - 1, var3 - 1, var4, -1);
|
||||
boolean var7 = isPowerProviderOrWire(var1, var2 + 1, var3, var4, 3) || !var1.isBlockNormalCube(var2 + 1, var3, var4) && isPowerProviderOrWire(var1, var2 + 1, var3 - 1, var4, -1);
|
||||
boolean var8 = isPowerProviderOrWire(var1, var2, var3, var4 - 1, 2) || !var1.isBlockNormalCube(var2, var3, var4 - 1) && isPowerProviderOrWire(var1, var2, var3 - 1, var4 - 1, -1);
|
||||
boolean var9 = isPowerProviderOrWire(var1, var2, var3, var4 + 1, 0) || !var1.isBlockNormalCube(var2, var3, var4 + 1) && isPowerProviderOrWire(var1, var2, var3 - 1, var4 + 1, -1);
|
||||
if(!var1.isBlockNormalCube(var2, var3 + 1, var4)) {
|
||||
if(var1.isBlockNormalCube(var2 - 1, var3, var4) && isPowerProviderOrWire(var1, var2 - 1, var3 + 1, var4, -1)) {
|
||||
var6 = true;
|
||||
}
|
||||
|
||||
if(var1.isBlockNormalCube(var2 + 1, var3, var4) && isPowerProviderOrWire(var1, var2 + 1, var3 + 1, var4, -1)) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(var1.isBlockNormalCube(var2, var3, var4 - 1) && isPowerProviderOrWire(var1, var2, var3 + 1, var4 - 1, -1)) {
|
||||
var8 = true;
|
||||
}
|
||||
|
||||
if(var1.isBlockNormalCube(var2, var3, var4 + 1) && isPowerProviderOrWire(var1, var2, var3 + 1, var4 + 1, -1)) {
|
||||
var9 = true;
|
||||
}
|
||||
}
|
||||
|
||||
return !var8 && !var7 && !var6 && !var9 && var5 >= 2 && var5 <= 5 ? true : (var5 == 2 && var8 && !var6 && !var7 ? true : (var5 == 3 && var9 && !var6 && !var7 ? true : (var5 == 4 && var6 && !var8 && !var9 ? true : var5 == 5 && var7 && !var8 && !var9)));
|
||||
}
|
||||
}
|
||||
|
||||
public boolean canProvidePower() {
|
||||
return this.wiresProvidePower;
|
||||
}
|
||||
|
||||
public static boolean isPowerProviderOrWire(IBlockAccess var0, int var1, int var2, int var3, int var4) {
|
||||
int var5 = var0.getBlockId(var1, var2, var3);
|
||||
if(var5 == Block.redstoneWire.blockID) {
|
||||
return true;
|
||||
} else if(var5 == 0) {
|
||||
return false;
|
||||
} else if(Block.blocksList[var5].canProvidePower()) {
|
||||
return true;
|
||||
} else if(var5 != Block.redstoneRepeaterIdle.blockID && var5 != Block.redstoneRepeaterActive.blockID) {
|
||||
return false;
|
||||
} else {
|
||||
int var6 = var0.getBlockMetadata(var1, var2, var3);
|
||||
return var4 == ModelBed.field_22153_b[var6 & 3];
|
||||
}
|
||||
}
|
||||
}
|
||||
69
src/net/minecraft/src/BlockReed.java
Normal file
69
src/net/minecraft/src/BlockReed.java
Normal file
@@ -0,0 +1,69 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockReed extends Block {
|
||||
protected BlockReed(int var1, int var2) {
|
||||
super(var1, Material.plants);
|
||||
this.blockIndexInTexture = var2;
|
||||
float var3 = 6.0F / 16.0F;
|
||||
this.setBlockBounds(0.5F - var3, 0.0F, 0.5F - var3, 0.5F + var3, 1.0F, 0.5F + var3);
|
||||
this.setTickOnLoad(true);
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
if(var1.isAirBlock(var2, var3 + 1, var4)) {
|
||||
int var6;
|
||||
for(var6 = 1; var1.getBlockId(var2, var3 - var6, var4) == this.blockID; ++var6) {
|
||||
}
|
||||
|
||||
if(var6 < 3) {
|
||||
int var7 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if(var7 == 15) {
|
||||
var1.setBlockWithNotify(var2, var3 + 1, var4, this.blockID);
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 0);
|
||||
} else {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var7 + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockId(var2, var3 - 1, var4);
|
||||
return var5 == this.blockID ? true : (var5 != Block.grass.blockID && var5 != Block.dirt.blockID ? false : (var1.getBlockMaterial(var2 - 1, var3 - 1, var4) == Material.water ? true : (var1.getBlockMaterial(var2 + 1, var3 - 1, var4) == Material.water ? true : (var1.getBlockMaterial(var2, var3 - 1, var4 - 1) == Material.water ? true : var1.getBlockMaterial(var2, var3 - 1, var4 + 1) == Material.water))));
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
this.checkBlockCoordValid(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
protected final void checkBlockCoordValid(World var1, int var2, int var3, int var4) {
|
||||
if(!this.canBlockStay(var1, var2, var3, var4)) {
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4));
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public boolean canBlockStay(World var1, int var2, int var3, int var4) {
|
||||
return this.canPlaceBlockAt(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Item.reed.shiftedIndex;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
60
src/net/minecraft/src/BlockSand.java
Normal file
60
src/net/minecraft/src/BlockSand.java
Normal file
@@ -0,0 +1,60 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockSand extends Block {
|
||||
public static boolean fallInstantly = false;
|
||||
|
||||
public BlockSand(int var1, int var2) {
|
||||
super(var1, var2, Material.sand);
|
||||
}
|
||||
|
||||
public void onBlockAdded(World var1, int var2, int var3, int var4) {
|
||||
var1.scheduleUpdateTick(var2, var3, var4, this.blockID, this.tickRate());
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
var1.scheduleUpdateTick(var2, var3, var4, this.blockID, this.tickRate());
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
this.tryToFall(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
private void tryToFall(World var1, int var2, int var3, int var4) {
|
||||
if(canFallBelow(var1, var2, var3 - 1, var4) && var3 >= 0) {
|
||||
byte var8 = 32;
|
||||
if(!fallInstantly && var1.checkChunksExist(var2 - var8, var3 - var8, var4 - var8, var2 + var8, var3 + var8, var4 + var8)) {
|
||||
EntityFallingSand var9 = new EntityFallingSand(var1, (double)((float)var2 + 0.5F), (double)((float)var3 + 0.5F), (double)((float)var4 + 0.5F), this.blockID);
|
||||
var1.entityJoinedWorld(var9);
|
||||
} else {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
|
||||
while(canFallBelow(var1, var2, var3 - 1, var4) && var3 > 0) {
|
||||
--var3;
|
||||
}
|
||||
|
||||
if(var3 > 0) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, this.blockID);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int tickRate() {
|
||||
return 3;
|
||||
}
|
||||
|
||||
public static boolean canFallBelow(World var0, int var1, int var2, int var3) {
|
||||
int var4 = var0.getBlockId(var1, var2, var3);
|
||||
if(var4 == 0) {
|
||||
return true;
|
||||
} else if(var4 == Block.fire.blockID) {
|
||||
return true;
|
||||
} else {
|
||||
Material var5 = Block.blocksList[var4].blockMaterial;
|
||||
return var5 == Material.water ? true : var5 == Material.lava;
|
||||
}
|
||||
}
|
||||
}
|
||||
11
src/net/minecraft/src/BlockSandStone.java
Normal file
11
src/net/minecraft/src/BlockSandStone.java
Normal file
@@ -0,0 +1,11 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BlockSandStone extends Block {
|
||||
public BlockSandStone(int var1) {
|
||||
super(var1, 192, Material.rock);
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSide(int var1) {
|
||||
return var1 == 1 ? this.blockIndexInTexture - 16 : (var1 == 0 ? this.blockIndexInTexture + 16 : this.blockIndexInTexture);
|
||||
}
|
||||
}
|
||||
56
src/net/minecraft/src/BlockSapling.java
Normal file
56
src/net/minecraft/src/BlockSapling.java
Normal file
@@ -0,0 +1,56 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockSapling extends BlockFlower {
|
||||
protected BlockSapling(int var1, int var2) {
|
||||
super(var1, var2);
|
||||
float var3 = 0.4F;
|
||||
this.setBlockBounds(0.5F - var3, 0.0F, 0.5F - var3, 0.5F + var3, var3 * 2.0F, 0.5F + var3);
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
super.updateTick(var1, var2, var3, var4, var5);
|
||||
if(var1.getBlockLightValue(var2, var3 + 1, var4) >= 9 && var5.nextInt(30) == 0) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if((var6 & 8) == 0) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6 | 8);
|
||||
} else {
|
||||
this.growTree(var1, var2, var3, var4, var5);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
var2 &= 3;
|
||||
return var2 == 1 ? 63 : (var2 == 2 ? 79 : super.getBlockTextureFromSideAndMetadata(var1, var2));
|
||||
}
|
||||
|
||||
public void growTree(World var1, int var2, int var3, int var4, Random var5) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4) & 3;
|
||||
var1.setBlock(var2, var3, var4, 0);
|
||||
Object var7 = null;
|
||||
if(var6 == 1) {
|
||||
var7 = new WorldGenTaiga2();
|
||||
} else if(var6 == 2) {
|
||||
var7 = new WorldGenForest();
|
||||
} else {
|
||||
var7 = new WorldGenTrees();
|
||||
if(var5.nextInt(10) == 0) {
|
||||
var7 = new WorldGenBigTree();
|
||||
}
|
||||
}
|
||||
|
||||
if(!((WorldGenerator)var7).generate(var1, var5, var2, var3, var4)) {
|
||||
var1.setBlockAndMetadata(var2, var3, var4, this.blockID, var6);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected int damageDropped(int var1) {
|
||||
return var1 & 3;
|
||||
}
|
||||
}
|
||||
104
src/net/minecraft/src/BlockSign.java
Normal file
104
src/net/minecraft/src/BlockSign.java
Normal file
@@ -0,0 +1,104 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockSign extends BlockContainer {
|
||||
private Class signEntityClass;
|
||||
private boolean isFreestanding;
|
||||
|
||||
protected BlockSign(int var1, Class var2, boolean var3) {
|
||||
super(var1, Material.wood);
|
||||
this.isFreestanding = var3;
|
||||
this.blockIndexInTexture = 4;
|
||||
this.signEntityClass = var2;
|
||||
float var4 = 0.25F;
|
||||
float var5 = 1.0F;
|
||||
this.setBlockBounds(0.5F - var4, 0.0F, 0.5F - var4, 0.5F + var4, var5, 0.5F + var4);
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) {
|
||||
if(!this.isFreestanding) {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4);
|
||||
float var6 = 9.0F / 32.0F;
|
||||
float var7 = 25.0F / 32.0F;
|
||||
float var8 = 0.0F;
|
||||
float var9 = 1.0F;
|
||||
float var10 = 2.0F / 16.0F;
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
if(var5 == 2) {
|
||||
this.setBlockBounds(var8, var6, 1.0F - var10, var9, var7, 1.0F);
|
||||
}
|
||||
|
||||
if(var5 == 3) {
|
||||
this.setBlockBounds(var8, var6, 0.0F, var9, var7, var10);
|
||||
}
|
||||
|
||||
if(var5 == 4) {
|
||||
this.setBlockBounds(1.0F - var10, var6, var8, 1.0F, var7, var9);
|
||||
}
|
||||
|
||||
if(var5 == 5) {
|
||||
this.setBlockBounds(0.0F, var6, var8, var10, var7, var9);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
protected TileEntity getBlockEntity() {
|
||||
try {
|
||||
return (TileEntity)this.signEntityClass.newInstance();
|
||||
} catch (Exception var2) {
|
||||
throw new RuntimeException(var2);
|
||||
}
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Item.sign.shiftedIndex;
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
boolean var6 = false;
|
||||
if(this.isFreestanding) {
|
||||
if(!var1.getBlockMaterial(var2, var3 - 1, var4).isSolid()) {
|
||||
var6 = true;
|
||||
}
|
||||
} else {
|
||||
int var7 = var1.getBlockMetadata(var2, var3, var4);
|
||||
var6 = true;
|
||||
if(var7 == 2 && var1.getBlockMaterial(var2, var3, var4 + 1).isSolid()) {
|
||||
var6 = false;
|
||||
}
|
||||
|
||||
if(var7 == 3 && var1.getBlockMaterial(var2, var3, var4 - 1).isSolid()) {
|
||||
var6 = false;
|
||||
}
|
||||
|
||||
if(var7 == 4 && var1.getBlockMaterial(var2 + 1, var3, var4).isSolid()) {
|
||||
var6 = false;
|
||||
}
|
||||
|
||||
if(var7 == 5 && var1.getBlockMaterial(var2 - 1, var3, var4).isSolid()) {
|
||||
var6 = false;
|
||||
}
|
||||
}
|
||||
|
||||
if(var6) {
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4));
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
|
||||
super.onNeighborBlockChange(var1, var2, var3, var4, var5);
|
||||
}
|
||||
}
|
||||
78
src/net/minecraft/src/BlockSnow.java
Normal file
78
src/net/minecraft/src/BlockSnow.java
Normal file
@@ -0,0 +1,78 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockSnow extends Block {
|
||||
protected BlockSnow(int var1, int var2) {
|
||||
super(var1, var2, Material.snow);
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 2.0F / 16.0F, 1.0F);
|
||||
this.setTickOnLoad(true);
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4) & 7;
|
||||
return var5 >= 3 ? AxisAlignedBB.getBoundingBoxFromPool((double)var2 + this.minX, (double)var3 + this.minY, (double)var4 + this.minZ, (double)var2 + this.maxX, (double)((float)var3 + 0.5F), (double)var4 + this.maxZ) : null;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4) & 7;
|
||||
float var6 = (float)(2 * (1 + var5)) / 16.0F;
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, var6, 1.0F);
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockId(var2, var3 - 1, var4);
|
||||
return var5 != 0 && Block.blocksList[var5].isOpaqueCube() ? var1.getBlockMaterial(var2, var3 - 1, var4).getIsSolid() : false;
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
this.func_275_g(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
private boolean func_275_g(World var1, int var2, int var3, int var4) {
|
||||
if(!this.canPlaceBlockAt(var1, var2, var3, var4)) {
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4));
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public void harvestBlock(World var1, EntityPlayer var2, int var3, int var4, int var5, int var6) {
|
||||
int var7 = Item.snowball.shiftedIndex;
|
||||
float var8 = 0.7F;
|
||||
double var9 = (double)(var1.rand.nextFloat() * var8) + (double)(1.0F - var8) * 0.5D;
|
||||
double var11 = (double)(var1.rand.nextFloat() * var8) + (double)(1.0F - var8) * 0.5D;
|
||||
double var13 = (double)(var1.rand.nextFloat() * var8) + (double)(1.0F - var8) * 0.5D;
|
||||
EntityItem var15 = new EntityItem(var1, (double)var3 + var9, (double)var4 + var11, (double)var5 + var13, new ItemStack(var7, 1, 0));
|
||||
var15.delayBeforeCanPickup = 10;
|
||||
var1.entityJoinedWorld(var15);
|
||||
var1.setBlockWithNotify(var3, var4, var5, 0);
|
||||
var2.addStat(StatList.mineBlockStatArray[this.blockID], 1);
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Item.snowball.shiftedIndex;
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
if(var1.getSavedLightValue(EnumSkyBlock.Block, var2, var3, var4) > 11) {
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4));
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
26
src/net/minecraft/src/BlockSnowBlock.java
Normal file
26
src/net/minecraft/src/BlockSnowBlock.java
Normal file
@@ -0,0 +1,26 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockSnowBlock extends Block {
|
||||
protected BlockSnowBlock(int var1, int var2) {
|
||||
super(var1, var2, Material.builtSnow);
|
||||
this.setTickOnLoad(true);
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Item.snowball.shiftedIndex;
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return 4;
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
if(var1.getSavedLightValue(EnumSkyBlock.Block, var2, var3, var4) > 11) {
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4));
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
17
src/net/minecraft/src/BlockSoulSand.java
Normal file
17
src/net/minecraft/src/BlockSoulSand.java
Normal file
@@ -0,0 +1,17 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BlockSoulSand extends Block {
|
||||
public BlockSoulSand(int var1, int var2) {
|
||||
super(var1, var2, Material.sand);
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
float var5 = 2.0F / 16.0F;
|
||||
return AxisAlignedBB.getBoundingBoxFromPool((double)var2, (double)var3, (double)var4, (double)(var2 + 1), (double)((float)(var3 + 1) - var5), (double)(var4 + 1));
|
||||
}
|
||||
|
||||
public void onEntityCollidedWithBlock(World var1, int var2, int var3, int var4, Entity var5) {
|
||||
var5.motionX *= 0.4D;
|
||||
var5.motionZ *= 0.4D;
|
||||
}
|
||||
}
|
||||
35
src/net/minecraft/src/BlockSponge.java
Normal file
35
src/net/minecraft/src/BlockSponge.java
Normal file
@@ -0,0 +1,35 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BlockSponge extends Block {
|
||||
protected BlockSponge(int var1) {
|
||||
super(var1, Material.sponge);
|
||||
this.blockIndexInTexture = 48;
|
||||
}
|
||||
|
||||
public void onBlockAdded(World var1, int var2, int var3, int var4) {
|
||||
byte var5 = 2;
|
||||
|
||||
for(int var6 = var2 - var5; var6 <= var2 + var5; ++var6) {
|
||||
for(int var7 = var3 - var5; var7 <= var3 + var5; ++var7) {
|
||||
for(int var8 = var4 - var5; var8 <= var4 + var5; ++var8) {
|
||||
if(var1.getBlockMaterial(var6, var7, var8) == Material.water) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onBlockRemoval(World var1, int var2, int var3, int var4) {
|
||||
byte var5 = 2;
|
||||
|
||||
for(int var6 = var2 - var5; var6 <= var2 + var5; ++var6) {
|
||||
for(int var7 = var3 - var5; var7 <= var3 + var5; ++var7) {
|
||||
for(int var8 = var4 - var5; var8 <= var4 + var5; ++var8) {
|
||||
var1.notifyBlocksOfNeighborChange(var6, var7, var8, var1.getBlockId(var6, var7, var8));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
157
src/net/minecraft/src/BlockStairs.java
Normal file
157
src/net/minecraft/src/BlockStairs.java
Normal file
@@ -0,0 +1,157 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockStairs extends Block {
|
||||
private Block modelBlock;
|
||||
|
||||
protected BlockStairs(int var1, Block var2) {
|
||||
super(var1, var2.blockIndexInTexture, var2.blockMaterial);
|
||||
this.modelBlock = var2;
|
||||
this.setHardness(var2.blockHardness);
|
||||
this.setResistance(var2.blockResistance / 3.0F);
|
||||
this.setStepSound(var2.stepSound);
|
||||
this.setLightOpacity(255);
|
||||
}
|
||||
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) {
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
return super.getCollisionBoundingBoxFromPool(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void getCollidingBoundingBoxes(World var1, int var2, int var3, int var4, AxisAlignedBB var5, ArrayList var6) {
|
||||
int var7 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if(var7 == 0) {
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 0.5F, 0.5F, 1.0F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
this.setBlockBounds(0.5F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
} else if(var7 == 1) {
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 0.5F, 1.0F, 1.0F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
this.setBlockBounds(0.5F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
} else if(var7 == 2) {
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 0.5F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.5F, 1.0F, 1.0F, 1.0F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
} else if(var7 == 3) {
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 0.5F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.5F, 1.0F, 0.5F, 1.0F);
|
||||
super.getCollidingBoundingBoxes(var1, var2, var3, var4, var5, var6);
|
||||
}
|
||||
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
public void onBlockClicked(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
this.modelBlock.onBlockClicked(var1, var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
public void onBlockDestroyedByPlayer(World var1, int var2, int var3, int var4, int var5) {
|
||||
this.modelBlock.onBlockDestroyedByPlayer(var1, var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
public float getExplosionResistance(Entity var1) {
|
||||
return this.modelBlock.getExplosionResistance(var1);
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return this.modelBlock.idDropped(var1, var2);
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return this.modelBlock.quantityDropped(var1);
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
return this.modelBlock.getBlockTextureFromSideAndMetadata(var1, var2);
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSide(int var1) {
|
||||
return this.modelBlock.getBlockTextureFromSide(var1);
|
||||
}
|
||||
|
||||
public int tickRate() {
|
||||
return this.modelBlock.tickRate();
|
||||
}
|
||||
|
||||
public void velocityToAddToEntity(World var1, int var2, int var3, int var4, Entity var5, Vec3D var6) {
|
||||
this.modelBlock.velocityToAddToEntity(var1, var2, var3, var4, var5, var6);
|
||||
}
|
||||
|
||||
public boolean isCollidable() {
|
||||
return this.modelBlock.isCollidable();
|
||||
}
|
||||
|
||||
public boolean canCollideCheck(int var1, boolean var2) {
|
||||
return this.modelBlock.canCollideCheck(var1, var2);
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return this.modelBlock.canPlaceBlockAt(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public void onBlockAdded(World var1, int var2, int var3, int var4) {
|
||||
this.onNeighborBlockChange(var1, var2, var3, var4, 0);
|
||||
this.modelBlock.onBlockAdded(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public void onBlockRemoval(World var1, int var2, int var3, int var4) {
|
||||
this.modelBlock.onBlockRemoval(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public void dropBlockAsItemWithChance(World var1, int var2, int var3, int var4, int var5, float var6) {
|
||||
this.modelBlock.dropBlockAsItemWithChance(var1, var2, var3, var4, var5, var6);
|
||||
}
|
||||
|
||||
public void onEntityWalking(World var1, int var2, int var3, int var4, Entity var5) {
|
||||
this.modelBlock.onEntityWalking(var1, var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
this.modelBlock.updateTick(var1, var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
return this.modelBlock.blockActivated(var1, var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
public void onBlockDestroyedByExplosion(World var1, int var2, int var3, int var4) {
|
||||
this.modelBlock.onBlockDestroyedByExplosion(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public void onBlockPlacedBy(World var1, int var2, int var3, int var4, EntityLiving var5) {
|
||||
int var6 = MathHelper.floor_double((double)(var5.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
|
||||
if(var6 == 0) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 2);
|
||||
}
|
||||
|
||||
if(var6 == 1) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 1);
|
||||
}
|
||||
|
||||
if(var6 == 2) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 3);
|
||||
}
|
||||
|
||||
if(var6 == 3) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
57
src/net/minecraft/src/BlockStationary.java
Normal file
57
src/net/minecraft/src/BlockStationary.java
Normal file
@@ -0,0 +1,57 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockStationary extends BlockFluid {
|
||||
protected BlockStationary(int var1, Material var2) {
|
||||
super(var1, var2);
|
||||
this.setTickOnLoad(false);
|
||||
if(var2 == Material.lava) {
|
||||
this.setTickOnLoad(true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
super.onNeighborBlockChange(var1, var2, var3, var4, var5);
|
||||
if(var1.getBlockId(var2, var3, var4) == this.blockID) {
|
||||
this.func_30005_i(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void func_30005_i(World var1, int var2, int var3, int var4) {
|
||||
int var5 = var1.getBlockMetadata(var2, var3, var4);
|
||||
var1.editingBlocks = true;
|
||||
var1.setBlockAndMetadata(var2, var3, var4, this.blockID - 1, var5);
|
||||
var1.markBlocksDirty(var2, var3, var4, var2, var3, var4);
|
||||
var1.scheduleUpdateTick(var2, var3, var4, this.blockID - 1, this.tickRate());
|
||||
var1.editingBlocks = false;
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
if(this.blockMaterial == Material.lava) {
|
||||
int var6 = var5.nextInt(3);
|
||||
|
||||
for(int var7 = 0; var7 < var6; ++var7) {
|
||||
var2 += var5.nextInt(3) - 1;
|
||||
++var3;
|
||||
var4 += var5.nextInt(3) - 1;
|
||||
int var8 = var1.getBlockId(var2, var3, var4);
|
||||
if(var8 == 0) {
|
||||
if(this.func_4033_j(var1, var2 - 1, var3, var4) || this.func_4033_j(var1, var2 + 1, var3, var4) || this.func_4033_j(var1, var2, var3, var4 - 1) || this.func_4033_j(var1, var2, var3, var4 + 1) || this.func_4033_j(var1, var2, var3 - 1, var4) || this.func_4033_j(var1, var2, var3 + 1, var4)) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, Block.fire.blockID);
|
||||
return;
|
||||
}
|
||||
} else if(Block.blocksList[var8].blockMaterial.getIsSolid()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private boolean func_4033_j(World var1, int var2, int var3, int var4) {
|
||||
return var1.getBlockMaterial(var2, var3, var4).getBurning();
|
||||
}
|
||||
}
|
||||
63
src/net/minecraft/src/BlockStep.java
Normal file
63
src/net/minecraft/src/BlockStep.java
Normal file
@@ -0,0 +1,63 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockStep extends Block {
|
||||
public static final String[] field_22027_a = new String[]{"stone", "sand", "wood", "cobble"};
|
||||
private boolean blockType;
|
||||
|
||||
public BlockStep(int var1, boolean var2) {
|
||||
super(var1, 6, Material.rock);
|
||||
this.blockType = var2;
|
||||
if(!var2) {
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F);
|
||||
}
|
||||
|
||||
this.setLightOpacity(255);
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
return var2 == 0 ? (var1 <= 1 ? 6 : 5) : (var2 == 1 ? (var1 == 0 ? 208 : (var1 == 1 ? 176 : 192)) : (var2 == 2 ? 4 : (var2 == 3 ? 16 : 6)));
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSide(int var1) {
|
||||
return this.getBlockTextureFromSideAndMetadata(var1, 0);
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return this.blockType;
|
||||
}
|
||||
|
||||
public void onBlockAdded(World var1, int var2, int var3, int var4) {
|
||||
if(this != Block.stairSingle) {
|
||||
super.onBlockAdded(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
int var5 = var1.getBlockId(var2, var3 - 1, var4);
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
int var7 = var1.getBlockMetadata(var2, var3 - 1, var4);
|
||||
if(var6 == var7) {
|
||||
if(var5 == stairSingle.blockID) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
var1.setBlockAndMetadataWithNotify(var2, var3 - 1, var4, Block.stairDouble.blockID, var6);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Block.stairSingle.blockID;
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return this.blockType ? 2 : 1;
|
||||
}
|
||||
|
||||
protected int damageDropped(int var1) {
|
||||
return var1;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return this.blockType;
|
||||
}
|
||||
}
|
||||
13
src/net/minecraft/src/BlockStone.java
Normal file
13
src/net/minecraft/src/BlockStone.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockStone extends Block {
|
||||
public BlockStone(int var1, int var2) {
|
||||
super(var1, var2, Material.rock);
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Block.cobblestone.blockID;
|
||||
}
|
||||
}
|
||||
65
src/net/minecraft/src/BlockTNT.java
Normal file
65
src/net/minecraft/src/BlockTNT.java
Normal file
@@ -0,0 +1,65 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockTNT extends Block {
|
||||
public BlockTNT(int var1, int var2) {
|
||||
super(var1, var2, Material.tnt);
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSide(int var1) {
|
||||
return var1 == 0 ? this.blockIndexInTexture + 2 : (var1 == 1 ? this.blockIndexInTexture + 1 : this.blockIndexInTexture);
|
||||
}
|
||||
|
||||
public void onBlockAdded(World var1, int var2, int var3, int var4) {
|
||||
super.onBlockAdded(var1, var2, var3, var4);
|
||||
if(var1.isBlockIndirectlyGettingPowered(var2, var3, var4)) {
|
||||
this.onBlockDestroyedByPlayer(var1, var2, var3, var4, 1);
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(var5 > 0 && Block.blocksList[var5].canProvidePower() && var1.isBlockIndirectlyGettingPowered(var2, var3, var4)) {
|
||||
this.onBlockDestroyedByPlayer(var1, var2, var3, var4, 1);
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int quantityDropped(Random var1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public void onBlockDestroyedByExplosion(World var1, int var2, int var3, int var4) {
|
||||
EntityTNTPrimed var5 = new EntityTNTPrimed(var1, (double)((float)var2 + 0.5F), (double)((float)var3 + 0.5F), (double)((float)var4 + 0.5F));
|
||||
var5.fuse = var1.rand.nextInt(var5.fuse / 4) + var5.fuse / 8;
|
||||
var1.entityJoinedWorld(var5);
|
||||
}
|
||||
|
||||
public void onBlockDestroyedByPlayer(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
if((var5 & 1) == 0) {
|
||||
this.dropBlockAsItem_do(var1, var2, var3, var4, new ItemStack(Block.tnt.blockID, 1, 0));
|
||||
} else {
|
||||
EntityTNTPrimed var6 = new EntityTNTPrimed(var1, (double)((float)var2 + 0.5F), (double)((float)var3 + 0.5F), (double)((float)var4 + 0.5F));
|
||||
var1.entityJoinedWorld(var6);
|
||||
var1.playSoundAtEntity(var6, "random.fuse", 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void onBlockClicked(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
if(var5.getCurrentEquippedItem() != null && var5.getCurrentEquippedItem().itemID == Item.flintAndSteel.shiftedIndex) {
|
||||
var1.setBlockMetadata(var2, var3, var4, 1);
|
||||
}
|
||||
|
||||
super.onBlockClicked(var1, var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
return super.blockActivated(var1, var2, var3, var4, var5);
|
||||
}
|
||||
}
|
||||
19
src/net/minecraft/src/BlockTallGrass.java
Normal file
19
src/net/minecraft/src/BlockTallGrass.java
Normal file
@@ -0,0 +1,19 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockTallGrass extends BlockFlower {
|
||||
protected BlockTallGrass(int var1, int var2) {
|
||||
super(var1, var2);
|
||||
float var3 = 0.4F;
|
||||
this.setBlockBounds(0.5F - var3, 0.0F, 0.5F - var3, 0.5F + var3, 0.8F, 0.5F + var3);
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSideAndMetadata(int var1, int var2) {
|
||||
return var2 == 1 ? this.blockIndexInTexture : (var2 == 2 ? this.blockIndexInTexture + 16 + 1 : (var2 == 0 ? this.blockIndexInTexture + 16 : this.blockIndexInTexture));
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return var2.nextInt(8) == 0 ? Item.seeds.shiftedIndex : -1;
|
||||
}
|
||||
}
|
||||
140
src/net/minecraft/src/BlockTorch.java
Normal file
140
src/net/minecraft/src/BlockTorch.java
Normal file
@@ -0,0 +1,140 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockTorch extends Block {
|
||||
protected BlockTorch(int var1, int var2) {
|
||||
super(var1, var2, Material.circuits);
|
||||
this.setTickOnLoad(true);
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean func_31028_g(World var1, int var2, int var3, int var4) {
|
||||
return var1.isBlockNormalCube(var2, var3, var4) || var1.getBlockId(var2, var3, var4) == Block.fence.blockID;
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
|
||||
return var1.isBlockNormalCube(var2 - 1, var3, var4) ? true : (var1.isBlockNormalCube(var2 + 1, var3, var4) ? true : (var1.isBlockNormalCube(var2, var3, var4 - 1) ? true : (var1.isBlockNormalCube(var2, var3, var4 + 1) ? true : this.func_31028_g(var1, var2, var3 - 1, var4))));
|
||||
}
|
||||
|
||||
public void onBlockPlaced(World var1, int var2, int var3, int var4, int var5) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
if(var5 == 1 && this.func_31028_g(var1, var2, var3 - 1, var4)) {
|
||||
var6 = 5;
|
||||
}
|
||||
|
||||
if(var5 == 2 && var1.isBlockNormalCube(var2, var3, var4 + 1)) {
|
||||
var6 = 4;
|
||||
}
|
||||
|
||||
if(var5 == 3 && var1.isBlockNormalCube(var2, var3, var4 - 1)) {
|
||||
var6 = 3;
|
||||
}
|
||||
|
||||
if(var5 == 4 && var1.isBlockNormalCube(var2 + 1, var3, var4)) {
|
||||
var6 = 2;
|
||||
}
|
||||
|
||||
if(var5 == 5 && var1.isBlockNormalCube(var2 - 1, var3, var4)) {
|
||||
var6 = 1;
|
||||
}
|
||||
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6);
|
||||
}
|
||||
|
||||
public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
|
||||
super.updateTick(var1, var2, var3, var4, var5);
|
||||
if(var1.getBlockMetadata(var2, var3, var4) == 0) {
|
||||
this.onBlockAdded(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onBlockAdded(World var1, int var2, int var3, int var4) {
|
||||
if(var1.isBlockNormalCube(var2 - 1, var3, var4)) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 1);
|
||||
} else if(var1.isBlockNormalCube(var2 + 1, var3, var4)) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 2);
|
||||
} else if(var1.isBlockNormalCube(var2, var3, var4 - 1)) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 3);
|
||||
} else if(var1.isBlockNormalCube(var2, var3, var4 + 1)) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 4);
|
||||
} else if(this.func_31028_g(var1, var2, var3 - 1, var4)) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, 5);
|
||||
}
|
||||
|
||||
this.dropTorchIfCantStay(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(this.dropTorchIfCantStay(var1, var2, var3, var4)) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
boolean var7 = false;
|
||||
if(!var1.isBlockNormalCube(var2 - 1, var3, var4) && var6 == 1) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(!var1.isBlockNormalCube(var2 + 1, var3, var4) && var6 == 2) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(!var1.isBlockNormalCube(var2, var3, var4 - 1) && var6 == 3) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(!var1.isBlockNormalCube(var2, var3, var4 + 1) && var6 == 4) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(!this.func_31028_g(var1, var2, var3 - 1, var4) && var6 == 5) {
|
||||
var7 = true;
|
||||
}
|
||||
|
||||
if(var7) {
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4));
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private boolean dropTorchIfCantStay(World var1, int var2, int var3, int var4) {
|
||||
if(!this.canPlaceBlockAt(var1, var2, var3, var4)) {
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var1.getBlockMetadata(var2, var3, var4));
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public MovingObjectPosition collisionRayTrace(World var1, int var2, int var3, int var4, Vec3D var5, Vec3D var6) {
|
||||
int var7 = var1.getBlockMetadata(var2, var3, var4) & 7;
|
||||
float var8 = 0.15F;
|
||||
if(var7 == 1) {
|
||||
this.setBlockBounds(0.0F, 0.2F, 0.5F - var8, var8 * 2.0F, 0.8F, 0.5F + var8);
|
||||
} else if(var7 == 2) {
|
||||
this.setBlockBounds(1.0F - var8 * 2.0F, 0.2F, 0.5F - var8, 1.0F, 0.8F, 0.5F + var8);
|
||||
} else if(var7 == 3) {
|
||||
this.setBlockBounds(0.5F - var8, 0.2F, 0.0F, 0.5F + var8, 0.8F, var8 * 2.0F);
|
||||
} else if(var7 == 4) {
|
||||
this.setBlockBounds(0.5F - var8, 0.2F, 1.0F - var8 * 2.0F, 0.5F + var8, 0.8F, 1.0F);
|
||||
} else {
|
||||
var8 = 0.1F;
|
||||
this.setBlockBounds(0.5F - var8, 0.0F, 0.5F - var8, 0.5F + var8, 0.6F, 0.5F + var8);
|
||||
}
|
||||
|
||||
return super.collisionRayTrace(var1, var2, var3, var4, var5, var6);
|
||||
}
|
||||
}
|
||||
169
src/net/minecraft/src/BlockTrapDoor.java
Normal file
169
src/net/minecraft/src/BlockTrapDoor.java
Normal file
@@ -0,0 +1,169 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BlockTrapDoor extends Block {
|
||||
protected BlockTrapDoor(int var1, Material var2) {
|
||||
super(var1, var2);
|
||||
this.blockIndexInTexture = 84;
|
||||
if(var2 == Material.iron) {
|
||||
++this.blockIndexInTexture;
|
||||
}
|
||||
|
||||
float var3 = 0.5F;
|
||||
float var4 = 1.0F;
|
||||
this.setBlockBounds(0.5F - var3, 0.0F, 0.5F - var3, 0.5F + var3, var4, 0.5F + var3);
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
this.setBlockBoundsBasedOnState(var1, var2, var3, var4);
|
||||
return super.getCollisionBoundingBoxFromPool(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) {
|
||||
this.func_28039_c(var1.getBlockMetadata(var2, var3, var4));
|
||||
}
|
||||
|
||||
public void func_28039_c(int var1) {
|
||||
float var2 = 3.0F / 16.0F;
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, var2, 1.0F);
|
||||
if(func_28038_d(var1)) {
|
||||
if((var1 & 3) == 0) {
|
||||
this.setBlockBounds(0.0F, 0.0F, 1.0F - var2, 1.0F, 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
if((var1 & 3) == 1) {
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, var2);
|
||||
}
|
||||
|
||||
if((var1 & 3) == 2) {
|
||||
this.setBlockBounds(1.0F - var2, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
if((var1 & 3) == 3) {
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, var2, 1.0F, 1.0F);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onBlockClicked(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
this.blockActivated(var1, var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
if(this.blockMaterial == Material.iron) {
|
||||
return true;
|
||||
} else {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6 ^ 4);
|
||||
var1.func_28101_a(var5, 1003, var2, var3, var4, 0);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public void func_28040_a(World var1, int var2, int var3, int var4, boolean var5) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
boolean var7 = (var6 & 4) > 0;
|
||||
if(var7 != var5) {
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6 ^ 4);
|
||||
var1.func_28101_a((EntityPlayer)null, 1003, var2, var3, var4, 0);
|
||||
}
|
||||
}
|
||||
|
||||
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(!var1.singleplayerWorld) {
|
||||
int var6 = var1.getBlockMetadata(var2, var3, var4);
|
||||
int var7 = var2;
|
||||
int var8 = var4;
|
||||
if((var6 & 3) == 0) {
|
||||
var8 = var4 + 1;
|
||||
}
|
||||
|
||||
if((var6 & 3) == 1) {
|
||||
--var8;
|
||||
}
|
||||
|
||||
if((var6 & 3) == 2) {
|
||||
var7 = var2 + 1;
|
||||
}
|
||||
|
||||
if((var6 & 3) == 3) {
|
||||
--var7;
|
||||
}
|
||||
|
||||
if(!var1.isBlockNormalCube(var7, var3, var8)) {
|
||||
var1.setBlockWithNotify(var2, var3, var4, 0);
|
||||
this.dropBlockAsItem(var1, var2, var3, var4, var6);
|
||||
}
|
||||
|
||||
if(var5 > 0 && Block.blocksList[var5].canProvidePower()) {
|
||||
boolean var9 = var1.isBlockIndirectlyGettingPowered(var2, var3, var4);
|
||||
this.func_28040_a(var1, var2, var3, var4, var9);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public MovingObjectPosition collisionRayTrace(World var1, int var2, int var3, int var4, Vec3D var5, Vec3D var6) {
|
||||
this.setBlockBoundsBasedOnState(var1, var2, var3, var4);
|
||||
return super.collisionRayTrace(var1, var2, var3, var4, var5, var6);
|
||||
}
|
||||
|
||||
public void onBlockPlaced(World var1, int var2, int var3, int var4, int var5) {
|
||||
byte var6 = 0;
|
||||
if(var5 == 2) {
|
||||
var6 = 0;
|
||||
}
|
||||
|
||||
if(var5 == 3) {
|
||||
var6 = 1;
|
||||
}
|
||||
|
||||
if(var5 == 4) {
|
||||
var6 = 2;
|
||||
}
|
||||
|
||||
if(var5 == 5) {
|
||||
var6 = 3;
|
||||
}
|
||||
|
||||
var1.setBlockMetadataWithNotify(var2, var3, var4, var6);
|
||||
}
|
||||
|
||||
public boolean canPlaceBlockOnSide(World var1, int var2, int var3, int var4, int var5) {
|
||||
if(var5 == 0) {
|
||||
return false;
|
||||
} else if(var5 == 1) {
|
||||
return false;
|
||||
} else {
|
||||
if(var5 == 2) {
|
||||
++var4;
|
||||
}
|
||||
|
||||
if(var5 == 3) {
|
||||
--var4;
|
||||
}
|
||||
|
||||
if(var5 == 4) {
|
||||
++var2;
|
||||
}
|
||||
|
||||
if(var5 == 5) {
|
||||
--var2;
|
||||
}
|
||||
|
||||
return var1.isBlockNormalCube(var2, var3, var4);
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean func_28038_d(int var0) {
|
||||
return (var0 & 4) != 0;
|
||||
}
|
||||
}
|
||||
29
src/net/minecraft/src/BlockWeb.java
Normal file
29
src/net/minecraft/src/BlockWeb.java
Normal file
@@ -0,0 +1,29 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class BlockWeb extends Block {
|
||||
public BlockWeb(int var1, int var2) {
|
||||
super(var1, var2, Material.web);
|
||||
}
|
||||
|
||||
public void onEntityCollidedWithBlock(World var1, int var2, int var3, int var4, Entity var5) {
|
||||
var5.field_27012_bb = true;
|
||||
}
|
||||
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean isACube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public int idDropped(int var1, Random var2) {
|
||||
return Item.silk.shiftedIndex;
|
||||
}
|
||||
}
|
||||
21
src/net/minecraft/src/BlockWorkbench.java
Normal file
21
src/net/minecraft/src/BlockWorkbench.java
Normal file
@@ -0,0 +1,21 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class BlockWorkbench extends Block {
|
||||
protected BlockWorkbench(int var1) {
|
||||
super(var1, Material.wood);
|
||||
this.blockIndexInTexture = 59;
|
||||
}
|
||||
|
||||
public int getBlockTextureFromSide(int var1) {
|
||||
return var1 == 1 ? this.blockIndexInTexture - 16 : (var1 == 0 ? Block.planks.getBlockTextureFromSide(0) : (var1 != 2 && var1 != 4 ? this.blockIndexInTexture : this.blockIndexInTexture + 1));
|
||||
}
|
||||
|
||||
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
|
||||
if(var1.singleplayerWorld) {
|
||||
return true;
|
||||
} else {
|
||||
var5.displayWorkbenchGUI(var2, var3, var4);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
33
src/net/minecraft/src/ChatAllowedCharacters.java
Normal file
33
src/net/minecraft/src/ChatAllowedCharacters.java
Normal file
@@ -0,0 +1,33 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStreamReader;
|
||||
|
||||
public class ChatAllowedCharacters {
|
||||
public static final String allowedCharacters = getAllowedCharacters();
|
||||
public static final char[] field_22175_b = new char[]{'/', '\n', '\r', '\t', '\u0000', '\f', '`', '?', '*', '\\', '<', '>', '|', '\"', ':'};
|
||||
|
||||
private static String getAllowedCharacters() {
|
||||
String var0 = "";
|
||||
|
||||
try {
|
||||
BufferedReader var1 = new BufferedReader(new InputStreamReader(ChatAllowedCharacters.class.getResourceAsStream("/font.txt"), "UTF-8"));
|
||||
String var2 = "";
|
||||
|
||||
while(true) {
|
||||
var2 = var1.readLine();
|
||||
if(var2 == null) {
|
||||
var1.close();
|
||||
break;
|
||||
}
|
||||
|
||||
if(!var2.startsWith("#")) {
|
||||
var0 = var0 + var2;
|
||||
}
|
||||
}
|
||||
} catch (Exception var3) {
|
||||
}
|
||||
|
||||
return var0;
|
||||
}
|
||||
}
|
||||
597
src/net/minecraft/src/Chunk.java
Normal file
597
src/net/minecraft/src/Chunk.java
Normal file
@@ -0,0 +1,597 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
public class Chunk {
|
||||
public static boolean isLit;
|
||||
public byte[] blocks;
|
||||
public boolean isChunkLoaded;
|
||||
public World worldObj;
|
||||
public NibbleArray data;
|
||||
public NibbleArray skylightMap;
|
||||
public NibbleArray blocklightMap;
|
||||
public byte[] heightMap;
|
||||
public int field_686_i;
|
||||
public final int xPosition;
|
||||
public final int zPosition;
|
||||
public Map chunkTileEntityMap;
|
||||
public List[] entities;
|
||||
public boolean isTerrainPopulated;
|
||||
public boolean isModified;
|
||||
public boolean neverSave;
|
||||
public boolean hasEntities;
|
||||
public long lastSaveTime;
|
||||
|
||||
public Chunk(World var1, int var2, int var3) {
|
||||
this.chunkTileEntityMap = new HashMap();
|
||||
this.entities = new List[8];
|
||||
this.isTerrainPopulated = false;
|
||||
this.isModified = false;
|
||||
this.hasEntities = false;
|
||||
this.lastSaveTime = 0L;
|
||||
this.worldObj = var1;
|
||||
this.xPosition = var2;
|
||||
this.zPosition = var3;
|
||||
this.heightMap = new byte[256];
|
||||
|
||||
for(int var4 = 0; var4 < this.entities.length; ++var4) {
|
||||
this.entities[var4] = new ArrayList();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public Chunk(World var1, byte[] var2, int var3, int var4) {
|
||||
this(var1, var3, var4);
|
||||
this.blocks = var2;
|
||||
this.data = new NibbleArray(var2.length);
|
||||
this.skylightMap = new NibbleArray(var2.length);
|
||||
this.blocklightMap = new NibbleArray(var2.length);
|
||||
}
|
||||
|
||||
public boolean isAtLocation(int var1, int var2) {
|
||||
return var1 == this.xPosition && var2 == this.zPosition;
|
||||
}
|
||||
|
||||
public int getHeightValue(int var1, int var2) {
|
||||
return this.heightMap[var2 << 4 | var1] & 255;
|
||||
}
|
||||
|
||||
public void func_348_a() {
|
||||
}
|
||||
|
||||
public void func_353_b() {
|
||||
int var1 = 127;
|
||||
|
||||
int var2;
|
||||
int var3;
|
||||
for(var2 = 0; var2 < 16; ++var2) {
|
||||
for(var3 = 0; var3 < 16; ++var3) {
|
||||
int var4 = 127;
|
||||
|
||||
int var5;
|
||||
for(var5 = var2 << 11 | var3 << 7; var4 > 0 && Block.lightOpacity[this.blocks[var5 + var4 - 1] & 255] == 0; --var4) {
|
||||
}
|
||||
|
||||
this.heightMap[var3 << 4 | var2] = (byte)var4;
|
||||
if(var4 < var1) {
|
||||
var1 = var4;
|
||||
}
|
||||
|
||||
if(!this.worldObj.worldProvider.field_4306_c) {
|
||||
int var6 = 15;
|
||||
int var7 = 127;
|
||||
|
||||
do {
|
||||
var6 -= Block.lightOpacity[this.blocks[var5 + var7] & 255];
|
||||
if(var6 > 0) {
|
||||
this.skylightMap.setNibble(var2, var7, var3, var6);
|
||||
}
|
||||
|
||||
--var7;
|
||||
} while(var7 > 0 && var6 > 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.field_686_i = var1;
|
||||
|
||||
for(var2 = 0; var2 < 16; ++var2) {
|
||||
for(var3 = 0; var3 < 16; ++var3) {
|
||||
this.func_333_c(var2, var3);
|
||||
}
|
||||
}
|
||||
|
||||
this.isModified = true;
|
||||
}
|
||||
|
||||
public void func_4053_c() {
|
||||
}
|
||||
|
||||
private void func_333_c(int var1, int var2) {
|
||||
int var3 = this.getHeightValue(var1, var2);
|
||||
int var4 = this.xPosition * 16 + var1;
|
||||
int var5 = this.zPosition * 16 + var2;
|
||||
this.func_355_f(var4 - 1, var5, var3);
|
||||
this.func_355_f(var4 + 1, var5, var3);
|
||||
this.func_355_f(var4, var5 - 1, var3);
|
||||
this.func_355_f(var4, var5 + 1, var3);
|
||||
}
|
||||
|
||||
private void func_355_f(int var1, int var2, int var3) {
|
||||
int var4 = this.worldObj.getHeightValue(var1, var2);
|
||||
if(var4 > var3) {
|
||||
this.worldObj.scheduleLightingUpdate(EnumSkyBlock.Sky, var1, var3, var2, var1, var4, var2);
|
||||
this.isModified = true;
|
||||
} else if(var4 < var3) {
|
||||
this.worldObj.scheduleLightingUpdate(EnumSkyBlock.Sky, var1, var4, var2, var1, var3, var2);
|
||||
this.isModified = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void func_339_g(int var1, int var2, int var3) {
|
||||
int var4 = this.heightMap[var3 << 4 | var1] & 255;
|
||||
int var5 = var4;
|
||||
if(var2 > var4) {
|
||||
var5 = var2;
|
||||
}
|
||||
|
||||
for(int var6 = var1 << 11 | var3 << 7; var5 > 0 && Block.lightOpacity[this.blocks[var6 + var5 - 1] & 255] == 0; --var5) {
|
||||
}
|
||||
|
||||
if(var5 != var4) {
|
||||
this.worldObj.markBlocksDirtyVertical(var1, var3, var5, var4);
|
||||
this.heightMap[var3 << 4 | var1] = (byte)var5;
|
||||
int var7;
|
||||
int var8;
|
||||
int var9;
|
||||
if(var5 < this.field_686_i) {
|
||||
this.field_686_i = var5;
|
||||
} else {
|
||||
var7 = 127;
|
||||
|
||||
for(var8 = 0; var8 < 16; ++var8) {
|
||||
for(var9 = 0; var9 < 16; ++var9) {
|
||||
if((this.heightMap[var9 << 4 | var8] & 255) < var7) {
|
||||
var7 = this.heightMap[var9 << 4 | var8] & 255;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.field_686_i = var7;
|
||||
}
|
||||
|
||||
var7 = this.xPosition * 16 + var1;
|
||||
var8 = this.zPosition * 16 + var3;
|
||||
if(var5 < var4) {
|
||||
for(var9 = var5; var9 < var4; ++var9) {
|
||||
this.skylightMap.setNibble(var1, var9, var3, 15);
|
||||
}
|
||||
} else {
|
||||
this.worldObj.scheduleLightingUpdate(EnumSkyBlock.Sky, var7, var4, var8, var7, var5, var8);
|
||||
|
||||
for(var9 = var4; var9 < var5; ++var9) {
|
||||
this.skylightMap.setNibble(var1, var9, var3, 0);
|
||||
}
|
||||
}
|
||||
|
||||
var9 = 15;
|
||||
|
||||
int var10;
|
||||
for(var10 = var5; var5 > 0 && var9 > 0; this.skylightMap.setNibble(var1, var5, var3, var9)) {
|
||||
--var5;
|
||||
int var11 = Block.lightOpacity[this.getBlockID(var1, var5, var3)];
|
||||
if(var11 == 0) {
|
||||
var11 = 1;
|
||||
}
|
||||
|
||||
var9 -= var11;
|
||||
if(var9 < 0) {
|
||||
var9 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
while(var5 > 0 && Block.lightOpacity[this.getBlockID(var1, var5 - 1, var3)] == 0) {
|
||||
--var5;
|
||||
}
|
||||
|
||||
if(var5 != var10) {
|
||||
this.worldObj.scheduleLightingUpdate(EnumSkyBlock.Sky, var7 - 1, var5, var8 - 1, var7 + 1, var10, var8 + 1);
|
||||
}
|
||||
|
||||
this.isModified = true;
|
||||
}
|
||||
}
|
||||
|
||||
public int getBlockID(int var1, int var2, int var3) {
|
||||
return this.blocks[var1 << 11 | var3 << 7 | var2] & 255;
|
||||
}
|
||||
|
||||
public boolean setBlockIDWithMetadata(int var1, int var2, int var3, int var4, int var5) {
|
||||
byte var6 = (byte)var4;
|
||||
int var7 = this.heightMap[var3 << 4 | var1] & 255;
|
||||
int var8 = this.blocks[var1 << 11 | var3 << 7 | var2] & 255;
|
||||
if(var8 == var4 && this.data.getNibble(var1, var2, var3) == var5) {
|
||||
return false;
|
||||
} else {
|
||||
int var9 = this.xPosition * 16 + var1;
|
||||
int var10 = this.zPosition * 16 + var3;
|
||||
this.blocks[var1 << 11 | var3 << 7 | var2] = (byte)(var6 & 255);
|
||||
if(var8 != 0 && !this.worldObj.singleplayerWorld) {
|
||||
Block.blocksList[var8].onBlockRemoval(this.worldObj, var9, var2, var10);
|
||||
}
|
||||
|
||||
this.data.setNibble(var1, var2, var3, var5);
|
||||
if(!this.worldObj.worldProvider.field_4306_c) {
|
||||
if(Block.lightOpacity[var6 & 255] != 0) {
|
||||
if(var2 >= var7) {
|
||||
this.func_339_g(var1, var2 + 1, var3);
|
||||
}
|
||||
} else if(var2 == var7 - 1) {
|
||||
this.func_339_g(var1, var2, var3);
|
||||
}
|
||||
|
||||
this.worldObj.scheduleLightingUpdate(EnumSkyBlock.Sky, var9, var2, var10, var9, var2, var10);
|
||||
}
|
||||
|
||||
this.worldObj.scheduleLightingUpdate(EnumSkyBlock.Block, var9, var2, var10, var9, var2, var10);
|
||||
this.func_333_c(var1, var3);
|
||||
this.data.setNibble(var1, var2, var3, var5);
|
||||
if(var4 != 0) {
|
||||
Block.blocksList[var4].onBlockAdded(this.worldObj, var9, var2, var10);
|
||||
}
|
||||
|
||||
this.isModified = true;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean setBlockID(int var1, int var2, int var3, int var4) {
|
||||
byte var5 = (byte)var4;
|
||||
int var6 = this.heightMap[var3 << 4 | var1] & 255;
|
||||
int var7 = this.blocks[var1 << 11 | var3 << 7 | var2] & 255;
|
||||
if(var7 == var4) {
|
||||
return false;
|
||||
} else {
|
||||
int var8 = this.xPosition * 16 + var1;
|
||||
int var9 = this.zPosition * 16 + var3;
|
||||
this.blocks[var1 << 11 | var3 << 7 | var2] = (byte)(var5 & 255);
|
||||
if(var7 != 0) {
|
||||
Block.blocksList[var7].onBlockRemoval(this.worldObj, var8, var2, var9);
|
||||
}
|
||||
|
||||
this.data.setNibble(var1, var2, var3, 0);
|
||||
if(Block.lightOpacity[var5 & 255] != 0) {
|
||||
if(var2 >= var6) {
|
||||
this.func_339_g(var1, var2 + 1, var3);
|
||||
}
|
||||
} else if(var2 == var6 - 1) {
|
||||
this.func_339_g(var1, var2, var3);
|
||||
}
|
||||
|
||||
this.worldObj.scheduleLightingUpdate(EnumSkyBlock.Sky, var8, var2, var9, var8, var2, var9);
|
||||
this.worldObj.scheduleLightingUpdate(EnumSkyBlock.Block, var8, var2, var9, var8, var2, var9);
|
||||
this.func_333_c(var1, var3);
|
||||
if(var4 != 0 && !this.worldObj.singleplayerWorld) {
|
||||
Block.blocksList[var4].onBlockAdded(this.worldObj, var8, var2, var9);
|
||||
}
|
||||
|
||||
this.isModified = true;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public int getBlockMetadata(int var1, int var2, int var3) {
|
||||
return this.data.getNibble(var1, var2, var3);
|
||||
}
|
||||
|
||||
public void setBlockMetadata(int var1, int var2, int var3, int var4) {
|
||||
this.isModified = true;
|
||||
this.data.setNibble(var1, var2, var3, var4);
|
||||
}
|
||||
|
||||
public int getSavedLightValue(EnumSkyBlock var1, int var2, int var3, int var4) {
|
||||
return var1 == EnumSkyBlock.Sky ? this.skylightMap.getNibble(var2, var3, var4) : (var1 == EnumSkyBlock.Block ? this.blocklightMap.getNibble(var2, var3, var4) : 0);
|
||||
}
|
||||
|
||||
public void setLightValue(EnumSkyBlock var1, int var2, int var3, int var4, int var5) {
|
||||
this.isModified = true;
|
||||
if(var1 == EnumSkyBlock.Sky) {
|
||||
this.skylightMap.setNibble(var2, var3, var4, var5);
|
||||
} else {
|
||||
if(var1 != EnumSkyBlock.Block) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.blocklightMap.setNibble(var2, var3, var4, var5);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int getBlockLightValue(int var1, int var2, int var3, int var4) {
|
||||
int var5 = this.skylightMap.getNibble(var1, var2, var3);
|
||||
if(var5 > 0) {
|
||||
isLit = true;
|
||||
}
|
||||
|
||||
var5 -= var4;
|
||||
int var6 = this.blocklightMap.getNibble(var1, var2, var3);
|
||||
if(var6 > var5) {
|
||||
var5 = var6;
|
||||
}
|
||||
|
||||
return var5;
|
||||
}
|
||||
|
||||
public void addEntity(Entity var1) {
|
||||
this.hasEntities = true;
|
||||
int var2 = MathHelper.floor_double(var1.posX / 16.0D);
|
||||
int var3 = MathHelper.floor_double(var1.posZ / 16.0D);
|
||||
if(var2 != this.xPosition || var3 != this.zPosition) {
|
||||
System.out.println("Wrong location! " + var1);
|
||||
Thread.dumpStack();
|
||||
}
|
||||
|
||||
int var4 = MathHelper.floor_double(var1.posY / 16.0D);
|
||||
if(var4 < 0) {
|
||||
var4 = 0;
|
||||
}
|
||||
|
||||
if(var4 >= this.entities.length) {
|
||||
var4 = this.entities.length - 1;
|
||||
}
|
||||
|
||||
var1.addedToChunk = true;
|
||||
var1.chunkCoordX = this.xPosition;
|
||||
var1.chunkCoordY = var4;
|
||||
var1.chunkCoordZ = this.zPosition;
|
||||
this.entities[var4].add(var1);
|
||||
}
|
||||
|
||||
public void removeEntity(Entity var1) {
|
||||
this.removeEntityAtIndex(var1, var1.chunkCoordY);
|
||||
}
|
||||
|
||||
public void removeEntityAtIndex(Entity var1, int var2) {
|
||||
if(var2 < 0) {
|
||||
var2 = 0;
|
||||
}
|
||||
|
||||
if(var2 >= this.entities.length) {
|
||||
var2 = this.entities.length - 1;
|
||||
}
|
||||
|
||||
this.entities[var2].remove(var1);
|
||||
}
|
||||
|
||||
public boolean canBlockSeeTheSky(int var1, int var2, int var3) {
|
||||
return var2 >= (this.heightMap[var3 << 4 | var1] & 255);
|
||||
}
|
||||
|
||||
public TileEntity getChunkBlockTileEntity(int var1, int var2, int var3) {
|
||||
ChunkPosition var4 = new ChunkPosition(var1, var2, var3);
|
||||
TileEntity var5 = (TileEntity)this.chunkTileEntityMap.get(var4);
|
||||
if(var5 == null) {
|
||||
int var6 = this.getBlockID(var1, var2, var3);
|
||||
if(!Block.isBlockContainer[var6]) {
|
||||
return null;
|
||||
}
|
||||
|
||||
BlockContainer var7 = (BlockContainer)Block.blocksList[var6];
|
||||
var7.onBlockAdded(this.worldObj, this.xPosition * 16 + var1, var2, this.zPosition * 16 + var3);
|
||||
var5 = (TileEntity)this.chunkTileEntityMap.get(var4);
|
||||
}
|
||||
|
||||
if(var5 != null && var5.isInvalid()) {
|
||||
this.chunkTileEntityMap.remove(var4);
|
||||
return null;
|
||||
} else {
|
||||
return var5;
|
||||
}
|
||||
}
|
||||
|
||||
public void addTileEntity(TileEntity var1) {
|
||||
int var2 = var1.xCoord - this.xPosition * 16;
|
||||
int var3 = var1.yCoord;
|
||||
int var4 = var1.zCoord - this.zPosition * 16;
|
||||
this.setChunkBlockTileEntity(var2, var3, var4, var1);
|
||||
if(this.isChunkLoaded) {
|
||||
this.worldObj.loadedTileEntityList.add(var1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void setChunkBlockTileEntity(int var1, int var2, int var3, TileEntity var4) {
|
||||
ChunkPosition var5 = new ChunkPosition(var1, var2, var3);
|
||||
var4.worldObj = this.worldObj;
|
||||
var4.xCoord = this.xPosition * 16 + var1;
|
||||
var4.yCoord = var2;
|
||||
var4.zCoord = this.zPosition * 16 + var3;
|
||||
if(this.getBlockID(var1, var2, var3) != 0 && Block.blocksList[this.getBlockID(var1, var2, var3)] instanceof BlockContainer) {
|
||||
var4.validate();
|
||||
this.chunkTileEntityMap.put(var5, var4);
|
||||
} else {
|
||||
System.out.println("Attempted to place a tile entity where there was no entity tile!");
|
||||
}
|
||||
}
|
||||
|
||||
public void removeChunkBlockTileEntity(int var1, int var2, int var3) {
|
||||
ChunkPosition var4 = new ChunkPosition(var1, var2, var3);
|
||||
if(this.isChunkLoaded) {
|
||||
TileEntity var5 = (TileEntity)this.chunkTileEntityMap.remove(var4);
|
||||
if(var5 != null) {
|
||||
var5.invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onChunkLoad() {
|
||||
this.isChunkLoaded = true;
|
||||
this.worldObj.func_31047_a(this.chunkTileEntityMap.values());
|
||||
|
||||
for(int var1 = 0; var1 < this.entities.length; ++var1) {
|
||||
this.worldObj.addLoadedEntities(this.entities[var1]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onChunkUnload() {
|
||||
this.isChunkLoaded = false;
|
||||
Iterator var1 = this.chunkTileEntityMap.values().iterator();
|
||||
|
||||
while(var1.hasNext()) {
|
||||
TileEntity var2 = (TileEntity)var1.next();
|
||||
var2.invalidate();
|
||||
}
|
||||
|
||||
for(int var3 = 0; var3 < this.entities.length; ++var3) {
|
||||
this.worldObj.addUnloadedEntities(this.entities[var3]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void setChunkModified() {
|
||||
this.isModified = true;
|
||||
}
|
||||
|
||||
public void getEntitiesWithinAABBForEntity(Entity var1, AxisAlignedBB var2, List var3) {
|
||||
int var4 = MathHelper.floor_double((var2.minY - 2.0D) / 16.0D);
|
||||
int var5 = MathHelper.floor_double((var2.maxY + 2.0D) / 16.0D);
|
||||
if(var4 < 0) {
|
||||
var4 = 0;
|
||||
}
|
||||
|
||||
if(var5 >= this.entities.length) {
|
||||
var5 = this.entities.length - 1;
|
||||
}
|
||||
|
||||
for(int var6 = var4; var6 <= var5; ++var6) {
|
||||
List var7 = this.entities[var6];
|
||||
|
||||
for(int var8 = 0; var8 < var7.size(); ++var8) {
|
||||
Entity var9 = (Entity)var7.get(var8);
|
||||
if(var9 != var1 && var9.boundingBox.intersectsWith(var2)) {
|
||||
var3.add(var9);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void getEntitiesOfTypeWithinAAAB(Class var1, AxisAlignedBB var2, List var3) {
|
||||
int var4 = MathHelper.floor_double((var2.minY - 2.0D) / 16.0D);
|
||||
int var5 = MathHelper.floor_double((var2.maxY + 2.0D) / 16.0D);
|
||||
if(var4 < 0) {
|
||||
var4 = 0;
|
||||
}
|
||||
|
||||
if(var5 >= this.entities.length) {
|
||||
var5 = this.entities.length - 1;
|
||||
}
|
||||
|
||||
for(int var6 = var4; var6 <= var5; ++var6) {
|
||||
List var7 = this.entities[var6];
|
||||
|
||||
for(int var8 = 0; var8 < var7.size(); ++var8) {
|
||||
Entity var9 = (Entity)var7.get(var8);
|
||||
if(var1.isAssignableFrom(var9.getClass()) && var9.boundingBox.intersectsWith(var2)) {
|
||||
var3.add(var9);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public boolean needsSaving(boolean var1) {
|
||||
if(this.neverSave) {
|
||||
return false;
|
||||
} else {
|
||||
if(var1) {
|
||||
if(this.hasEntities && this.worldObj.getWorldTime() != this.lastSaveTime) {
|
||||
return true;
|
||||
}
|
||||
} else if(this.hasEntities && this.worldObj.getWorldTime() >= this.lastSaveTime + 600L) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return this.isModified;
|
||||
}
|
||||
}
|
||||
|
||||
public int getChunkData(byte[] var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) {
|
||||
int var9 = var5 - var2;
|
||||
int var10 = var6 - var3;
|
||||
int var11 = var7 - var4;
|
||||
if(var9 * var10 * var11 == this.blocks.length) {
|
||||
System.arraycopy(this.blocks, 0, var1, var8, this.blocks.length);
|
||||
var8 += this.blocks.length;
|
||||
System.arraycopy(this.data.data, 0, var1, var8, this.data.data.length);
|
||||
var8 += this.data.data.length;
|
||||
System.arraycopy(this.blocklightMap.data, 0, var1, var8, this.blocklightMap.data.length);
|
||||
var8 += this.blocklightMap.data.length;
|
||||
System.arraycopy(this.skylightMap.data, 0, var1, var8, this.skylightMap.data.length);
|
||||
var8 += this.skylightMap.data.length;
|
||||
return var8;
|
||||
} else {
|
||||
int var12;
|
||||
int var13;
|
||||
int var14;
|
||||
int var15;
|
||||
for(var12 = var2; var12 < var5; ++var12) {
|
||||
for(var13 = var4; var13 < var7; ++var13) {
|
||||
var14 = var12 << 11 | var13 << 7 | var3;
|
||||
var15 = var6 - var3;
|
||||
System.arraycopy(this.blocks, var14, var1, var8, var15);
|
||||
var8 += var15;
|
||||
}
|
||||
}
|
||||
|
||||
for(var12 = var2; var12 < var5; ++var12) {
|
||||
for(var13 = var4; var13 < var7; ++var13) {
|
||||
var14 = (var12 << 11 | var13 << 7 | var3) >> 1;
|
||||
var15 = (var6 - var3) / 2;
|
||||
System.arraycopy(this.data.data, var14, var1, var8, var15);
|
||||
var8 += var15;
|
||||
}
|
||||
}
|
||||
|
||||
for(var12 = var2; var12 < var5; ++var12) {
|
||||
for(var13 = var4; var13 < var7; ++var13) {
|
||||
var14 = (var12 << 11 | var13 << 7 | var3) >> 1;
|
||||
var15 = (var6 - var3) / 2;
|
||||
System.arraycopy(this.blocklightMap.data, var14, var1, var8, var15);
|
||||
var8 += var15;
|
||||
}
|
||||
}
|
||||
|
||||
for(var12 = var2; var12 < var5; ++var12) {
|
||||
for(var13 = var4; var13 < var7; ++var13) {
|
||||
var14 = (var12 << 11 | var13 << 7 | var3) >> 1;
|
||||
var15 = (var6 - var3) / 2;
|
||||
System.arraycopy(this.skylightMap.data, var14, var1, var8, var15);
|
||||
var8 += var15;
|
||||
}
|
||||
}
|
||||
|
||||
return var8;
|
||||
}
|
||||
}
|
||||
|
||||
public Random func_334_a(long var1) {
|
||||
return new Random(this.worldObj.getRandomSeed() + (long)(this.xPosition * this.xPosition * 4987142) + (long)(this.xPosition * 5947611) + (long)(this.zPosition * this.zPosition) * 4392871L + (long)(this.zPosition * 389711) ^ var1);
|
||||
}
|
||||
|
||||
public boolean func_21101_g() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void func_25083_h() {
|
||||
ChunkBlockMap.func_26001_a(this.blocks);
|
||||
}
|
||||
}
|
||||
28
src/net/minecraft/src/ChunkBlockMap.java
Normal file
28
src/net/minecraft/src/ChunkBlockMap.java
Normal file
@@ -0,0 +1,28 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class ChunkBlockMap {
|
||||
private static byte[] field_26002_a = new byte[256];
|
||||
|
||||
public static void func_26001_a(byte[] var0) {
|
||||
for(int var1 = 0; var1 < var0.length; ++var1) {
|
||||
var0[var1] = field_26002_a[var0[var1] & 255];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static {
|
||||
try {
|
||||
for(int var0 = 0; var0 < 256; ++var0) {
|
||||
byte var1 = (byte)var0;
|
||||
if(var1 != 0 && Block.blocksList[var1 & 255] == null) {
|
||||
var1 = 0;
|
||||
}
|
||||
|
||||
field_26002_a[var0] = var1;
|
||||
}
|
||||
} catch (Exception var2) {
|
||||
var2.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
69
src/net/minecraft/src/ChunkCache.java
Normal file
69
src/net/minecraft/src/ChunkCache.java
Normal file
@@ -0,0 +1,69 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class ChunkCache implements IBlockAccess {
|
||||
private int chunkX;
|
||||
private int chunkZ;
|
||||
private Chunk[][] chunkArray;
|
||||
private World worldObj;
|
||||
|
||||
public ChunkCache(World var1, int var2, int var3, int var4, int var5, int var6, int var7) {
|
||||
this.worldObj = var1;
|
||||
this.chunkX = var2 >> 4;
|
||||
this.chunkZ = var4 >> 4;
|
||||
int var8 = var5 >> 4;
|
||||
int var9 = var7 >> 4;
|
||||
this.chunkArray = new Chunk[var8 - this.chunkX + 1][var9 - this.chunkZ + 1];
|
||||
|
||||
for(int var10 = this.chunkX; var10 <= var8; ++var10) {
|
||||
for(int var11 = this.chunkZ; var11 <= var9; ++var11) {
|
||||
this.chunkArray[var10 - this.chunkX][var11 - this.chunkZ] = var1.getChunkFromChunkCoords(var10, var11);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int getBlockId(int var1, int var2, int var3) {
|
||||
if(var2 < 0) {
|
||||
return 0;
|
||||
} else if(var2 >= 128) {
|
||||
return 0;
|
||||
} else {
|
||||
int var4 = (var1 >> 4) - this.chunkX;
|
||||
int var5 = (var3 >> 4) - this.chunkZ;
|
||||
if(var4 >= 0 && var4 < this.chunkArray.length && var5 >= 0 && var5 < this.chunkArray[var4].length) {
|
||||
Chunk var6 = this.chunkArray[var4][var5];
|
||||
return var6 == null ? 0 : var6.getBlockID(var1 & 15, var2, var3 & 15);
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public TileEntity getBlockTileEntity(int var1, int var2, int var3) {
|
||||
int var4 = (var1 >> 4) - this.chunkX;
|
||||
int var5 = (var3 >> 4) - this.chunkZ;
|
||||
return this.chunkArray[var4][var5].getChunkBlockTileEntity(var1 & 15, var2, var3 & 15);
|
||||
}
|
||||
|
||||
public int getBlockMetadata(int var1, int var2, int var3) {
|
||||
if(var2 < 0) {
|
||||
return 0;
|
||||
} else if(var2 >= 128) {
|
||||
return 0;
|
||||
} else {
|
||||
int var4 = (var1 >> 4) - this.chunkX;
|
||||
int var5 = (var3 >> 4) - this.chunkZ;
|
||||
return this.chunkArray[var4][var5].getBlockMetadata(var1 & 15, var2, var3 & 15);
|
||||
}
|
||||
}
|
||||
|
||||
public Material getBlockMaterial(int var1, int var2, int var3) {
|
||||
int var4 = this.getBlockId(var1, var2, var3);
|
||||
return var4 == 0 ? Material.air : Block.blocksList[var4].blockMaterial;
|
||||
}
|
||||
|
||||
public boolean isBlockNormalCube(int var1, int var2, int var3) {
|
||||
Block var4 = Block.blocksList[this.getBlockId(var1, var2, var3)];
|
||||
return var4 == null ? false : var4.blockMaterial.getIsSolid() && var4.isACube();
|
||||
}
|
||||
}
|
||||
24
src/net/minecraft/src/ChunkCoordIntPair.java
Normal file
24
src/net/minecraft/src/ChunkCoordIntPair.java
Normal file
@@ -0,0 +1,24 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class ChunkCoordIntPair {
|
||||
public final int chunkXPos;
|
||||
public final int chunkZPos;
|
||||
|
||||
public ChunkCoordIntPair(int var1, int var2) {
|
||||
this.chunkXPos = var1;
|
||||
this.chunkZPos = var2;
|
||||
}
|
||||
|
||||
public static int chunkXZ2Int(int var0, int var1) {
|
||||
return (var0 < 0 ? Integer.MIN_VALUE : 0) | (var0 & Short.MAX_VALUE) << 16 | (var1 < 0 ? -Short.MIN_VALUE : 0) | var1 & Short.MAX_VALUE;
|
||||
}
|
||||
|
||||
public int hashCode() {
|
||||
return chunkXZ2Int(this.chunkXPos, this.chunkZPos);
|
||||
}
|
||||
|
||||
public boolean equals(Object var1) {
|
||||
ChunkCoordIntPair var2 = (ChunkCoordIntPair)var1;
|
||||
return var2.chunkXPos == this.chunkXPos && var2.chunkZPos == this.chunkZPos;
|
||||
}
|
||||
}
|
||||
50
src/net/minecraft/src/ChunkCoordinates.java
Normal file
50
src/net/minecraft/src/ChunkCoordinates.java
Normal file
@@ -0,0 +1,50 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
public class ChunkCoordinates implements Comparable {
|
||||
public int posX;
|
||||
public int posY;
|
||||
public int posZ;
|
||||
|
||||
public ChunkCoordinates() {
|
||||
}
|
||||
|
||||
public ChunkCoordinates(int var1, int var2, int var3) {
|
||||
this.posX = var1;
|
||||
this.posY = var2;
|
||||
this.posZ = var3;
|
||||
}
|
||||
|
||||
public ChunkCoordinates(ChunkCoordinates var1) {
|
||||
this.posX = var1.posX;
|
||||
this.posY = var1.posY;
|
||||
this.posZ = var1.posZ;
|
||||
}
|
||||
|
||||
public boolean equals(Object var1) {
|
||||
if(!(var1 instanceof ChunkCoordinates)) {
|
||||
return false;
|
||||
} else {
|
||||
ChunkCoordinates var2 = (ChunkCoordinates)var1;
|
||||
return this.posX == var2.posX && this.posY == var2.posY && this.posZ == var2.posZ;
|
||||
}
|
||||
}
|
||||
|
||||
public int hashCode() {
|
||||
return this.posX + this.posZ << 8 + this.posY << 16;
|
||||
}
|
||||
|
||||
public int compareChunkCoordinate(ChunkCoordinates var1) {
|
||||
return this.posY == var1.posY ? (this.posZ == var1.posZ ? this.posX - var1.posX : this.posZ - var1.posZ) : this.posY - var1.posY;
|
||||
}
|
||||
|
||||
public double getSqDistanceTo(int var1, int var2, int var3) {
|
||||
int var4 = this.posX - var1;
|
||||
int var5 = this.posY - var2;
|
||||
int var6 = this.posZ - var3;
|
||||
return Math.sqrt((double)(var4 * var4 + var5 * var5 + var6 * var6));
|
||||
}
|
||||
|
||||
public int compareTo(Object var1) {
|
||||
return this.compareChunkCoordinate((ChunkCoordinates)var1);
|
||||
}
|
||||
}
|
||||
51
src/net/minecraft/src/ChunkFile.java
Normal file
51
src/net/minecraft/src/ChunkFile.java
Normal file
@@ -0,0 +1,51 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
class ChunkFile implements Comparable {
|
||||
private final File field_22209_a;
|
||||
private final int field_22208_b;
|
||||
private final int field_22210_c;
|
||||
|
||||
public ChunkFile(File var1) {
|
||||
this.field_22209_a = var1;
|
||||
Matcher var2 = ChunkFilePattern.field_22119_a.matcher(var1.getName());
|
||||
if(var2.matches()) {
|
||||
this.field_22208_b = Integer.parseInt(var2.group(1), 36);
|
||||
this.field_22210_c = Integer.parseInt(var2.group(2), 36);
|
||||
} else {
|
||||
this.field_22208_b = 0;
|
||||
this.field_22210_c = 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int func_22206_a(ChunkFile var1) {
|
||||
int var2 = this.field_22208_b >> 5;
|
||||
int var3 = var1.field_22208_b >> 5;
|
||||
if(var2 == var3) {
|
||||
int var4 = this.field_22210_c >> 5;
|
||||
int var5 = var1.field_22210_c >> 5;
|
||||
return var4 - var5;
|
||||
} else {
|
||||
return var2 - var3;
|
||||
}
|
||||
}
|
||||
|
||||
public File func_22207_a() {
|
||||
return this.field_22209_a;
|
||||
}
|
||||
|
||||
public int func_22205_b() {
|
||||
return this.field_22208_b;
|
||||
}
|
||||
|
||||
public int func_22204_c() {
|
||||
return this.field_22210_c;
|
||||
}
|
||||
|
||||
public int compareTo(Object var1) {
|
||||
return this.func_22206_a((ChunkFile)var1);
|
||||
}
|
||||
}
|
||||
22
src/net/minecraft/src/ChunkFilePattern.java
Normal file
22
src/net/minecraft/src/ChunkFilePattern.java
Normal file
@@ -0,0 +1,22 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FilenameFilter;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
class ChunkFilePattern implements FilenameFilter {
|
||||
public static final Pattern field_22119_a = Pattern.compile("c\\.(-?[0-9a-z]+)\\.(-?[0-9a-z]+)\\.dat");
|
||||
|
||||
private ChunkFilePattern() {
|
||||
}
|
||||
|
||||
public boolean accept(File var1, String var2) {
|
||||
Matcher var3 = field_22119_a.matcher(var2);
|
||||
return var3.matches();
|
||||
}
|
||||
|
||||
ChunkFilePattern(Empty2 var1) {
|
||||
this();
|
||||
}
|
||||
}
|
||||
26
src/net/minecraft/src/ChunkFolderPattern.java
Normal file
26
src/net/minecraft/src/ChunkFolderPattern.java
Normal file
@@ -0,0 +1,26 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileFilter;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
class ChunkFolderPattern implements FileFilter {
|
||||
public static final Pattern field_22214_a = Pattern.compile("[0-9a-z]|([0-9a-z][0-9a-z])");
|
||||
|
||||
private ChunkFolderPattern() {
|
||||
}
|
||||
|
||||
public boolean accept(File var1) {
|
||||
if(var1.isDirectory()) {
|
||||
Matcher var2 = field_22214_a.matcher(var1.getName());
|
||||
return var2.matches();
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
ChunkFolderPattern(Empty2 var1) {
|
||||
this();
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user