From 0525ba5d56708e600bd9a8e1c4b9d58954d06f4b Mon Sep 17 00:00:00 2001 From: Sen Date: Mon, 21 Jul 2025 19:54:21 +0200 Subject: [PATCH] remove block tinting --- client/src/main/java/client/Client.java | 3 - .../client/gui/ingame/GuiCreateDimension.java | 12 +- .../main/java/client/init/RenderRegistry.java | 37 +- .../java/client/renderer/BlockRenderer.java | 83 +--- .../java/client/renderer/EffectRenderer.java | 15 +- .../java/client/renderer/ItemRenderer.java | 2 +- .../java/client/renderer/RenderBuffer.java | 30 -- .../renderer/blockmodel/BakedModel.java | 8 +- .../renderer/blockmodel/BuiltInModel.java | 4 +- .../renderer/blockmodel/IBakedModel.java | 4 +- .../renderer/blockmodel/ModelBakery.java | 14 +- .../renderer/blockmodel/ModelBlock.java | 25 +- .../renderer/blockmodel/ModelManager.java | 8 +- .../client/renderer/entity/RenderItem.java | 6 +- .../renderer/entity/RenderItemEntity.java | 2 +- .../client/renderer/layers/LayerHeldItem.java | 2 +- .../renderer/texture/ColormapLoader.java | 27 -- .../java/client/renderer/texture/Sprite.java | 10 +- .../client/renderer/texture/TextureMap.java | 11 +- .../renderer/texture/TextureTicked.java | 4 + ...extureFlamesFX1.java => TextureFlame.java} | 41 +- .../renderer/ticked/TextureFlamesFX2.java | 17 - .../renderer/ticked/TextureFlamesFXMono1.java | 7 - .../renderer/ticked/TextureFlamesFXMono2.java | 7 - .../{TextureLavaFX.java => TextureMagma.java} | 5 +- ...eLavaFlowFX.java => TextureMagmaFlow.java} | 5 +- ...{TextureWaterFX.java => TextureWater.java} | 26 +- ...WaterFlowFX.java => TextureWaterFlow.java} | 28 +- .../textures/blocks/acacia_leaves_spring.png | Bin 598 -> 6069 bytes .../textures/blocks/acacia_leaves_summer.png | Bin 6231 -> 6389 bytes .../textures/blocks/arcane_portal.png | Bin 0 -> 26910 bytes .../textures/blocks/birch_leaves_spring.png | Bin 499 -> 6171 bytes .../textures/blocks/birch_leaves_summer.png | Bin 6228 -> 6473 bytes .../textures/blocks/chaos_portal.png | Bin 0 -> 25003 bytes .../textures/blocks/crimson_portal.png | Bin 0 -> 24980 bytes .../blocks/dark_oak_leaves_spring.png | Bin 499 -> 6087 bytes .../blocks/dark_oak_leaves_summer.png | Bin 6229 -> 6392 bytes .../resources/textures/blocks/dark_portal.png | Bin 0 -> 14546 bytes .../resources/textures/blocks/deep_portal.png | Bin 0 -> 20999 bytes .../main/resources/textures/blocks/dirt.png | Bin 270 -> 5415 bytes .../textures/blocks/dirt_podzol_side.png | Bin 740 -> 0 bytes .../main/resources/textures/blocks/fern.png | Bin 157 -> 4803 bytes .../resources/textures/blocks/grass_side.png | Bin 405 -> 5115 bytes .../textures/blocks/grass_side_overlay.png | Bin 219 -> 0 bytes .../textures/blocks/grass_side_snowed.png | Bin 268 -> 0 bytes .../resources/textures/blocks/grass_top.png | Bin 6204 -> 6261 bytes .../resources/textures/blocks/iron_block.png | Bin 5005 -> 333 bytes .../textures/blocks/jungle_leaves_spring.png | Bin 341 -> 5641 bytes .../textures/blocks/jungle_leaves_summer.png | Bin 5969 -> 5997 bytes .../textures/blocks/large_fern_bottom.png | Bin 706 -> 5798 bytes .../textures/blocks/large_fern_top.png | Bin 670 -> 5718 bytes .../blocks/large_tallgrass_bottom.png | Bin 715 -> 6058 bytes .../textures/blocks/large_tallgrass_top.png | Bin 717 -> 6030 bytes .../blocks/{portal.png => light_portal.png} | Bin 30513 -> 30279 bytes .../resources/textures/blocks/melon_stem.png | Bin 189 -> 4881 bytes .../textures/blocks/melon_stem_connected.png | Bin 165 -> 0 bytes .../textures/blocks/mycelium_side.png | Bin 441 -> 5789 bytes .../textures/blocks/oak_leaves_spring.png | Bin 499 -> 6086 bytes .../textures/blocks/oak_leaves_summer.png | Bin 6229 -> 6394 bytes .../resources/textures/blocks/podzol_side.png | Bin 0 -> 5718 bytes .../{dirt_podzol_top.png => podzol_top.png} | Bin .../textures/blocks/pumpkin_stem.png | Bin 189 -> 4881 bytes .../blocks/pumpkin_stem_connected.png | Bin 165 -> 0 bytes .../textures/blocks/radiating_portal.png | Bin 0 -> 28329 bytes .../main/resources/textures/blocks/reeds.png | Bin 186 -> 5125 bytes .../textures/blocks/shining_portal.png | Bin 0 -> 28658 bytes .../resources/textures/blocks/soil_snowed.png | Bin 0 -> 5521 bytes ...ngwater_flow.png => spring_water_flow.png} | Bin ...water_still.png => spring_water_still.png} | Bin .../textures/blocks/spruce_leaves_spring.png | Bin 263 -> 5454 bytes .../textures/blocks/spruce_leaves_summer.png | Bin 5680 -> 5761 bytes .../resources/textures/blocks/swamp_grass.png | Bin 0 -> 5468 bytes .../textures/blocks/swamp_oak_door_bottom.png | Bin 0 -> 5584 bytes .../textures/blocks/swamp_oak_door_top.png | Bin 0 -> 5564 bytes .../blocks/swamp_oak_leaves_autumn.png | Bin 0 -> 6840 bytes .../blocks/swamp_oak_leaves_snowy.png | Bin 0 -> 6111 bytes .../blocks/swamp_oak_leaves_spring.png | Bin 0 -> 5961 bytes .../blocks/swamp_oak_leaves_summer.png | Bin 0 -> 6266 bytes .../blocks/swamp_oak_leaves_winter.png | Bin 0 -> 6614 bytes .../textures/blocks/swamp_oak_log_bark.png | Bin 0 -> 5780 bytes .../textures/blocks/swamp_oak_log_top.png | Bin 0 -> 5597 bytes .../textures/blocks/swamp_oak_planks.png | Bin 0 -> 5144 bytes .../textures/blocks/swamp_oak_sapling.png | Bin 0 -> 5329 bytes .../resources/textures/blocks/swamp_side.png | Bin 0 -> 5860 bytes .../resources/textures/blocks/swamp_top.png | Bin 0 -> 6070 bytes .../resources/textures/blocks/swamp_vine.png | Bin 0 -> 5324 bytes .../resources/textures/blocks/tallgrass.png | Bin 584 -> 5653 bytes .../textures/blocks/tian_soil_side.png | Bin 2733 -> 6230 bytes .../textures/blocks/tian_soil_side_snowed.png | Bin 2597 -> 0 bytes .../textures/blocks/tian_soil_snowed.png | Bin 0 -> 6090 bytes .../main/resources/textures/blocks/vine.png | Bin 235 -> 5420 bytes .../resources/textures/blocks/waterlily.png | Bin 185 -> 4971 bytes .../resources/textures/items/iron_ingot.png | Bin 4830 -> 191 bytes ...ter_bucket.png => spring_water_bucket.png} | Bin .../textures/items/swamp_water_bucket.png | Bin 0 -> 5033 bytes .../main/resources/textures/world/foliage.png | Bin 32155 -> 0 bytes .../main/resources/textures/world/grass.png | Bin 18569 -> 0 bytes common/src/main/java/common/biome/Biome.java | 201 ++++----- common/src/main/java/common/block/Block.java | 38 +- .../common/block/artificial/BlockCake.java | 10 - .../common/block/artificial/BlockCarpet.java | 10 +- .../common/block/artificial/BlockDoor.java | 6 +- .../common/block/artificial/BlockFence.java | 6 +- .../block/artificial/BlockFenceGate.java | 2 +- .../block/artificial/BlockFloorPortal.java | 3 +- .../block/artificial/BlockFlowerPot.java | 16 +- .../common/block/artificial/BlockLadder.java | 6 +- .../common/block/artificial/BlockPane.java | 14 +- .../common/block/artificial/BlockPortal.java | 69 +-- .../block/artificial/BlockPortalFrame.java | 10 +- .../common/block/artificial/BlockSkull.java | 6 +- .../common/block/artificial/BlockSlab.java | 4 - .../common/block/artificial/BlockStairs.java | 6 +- .../block/artificial/BlockTrapDoor.java | 11 +- .../block/foliage/BlockBlackenedSoil.java | 2 +- .../common/block/foliage/BlockBlueShroom.java | 6 +- .../common/block/foliage/BlockDeadBush.java | 6 +- .../block/foliage/BlockDoublePlant.java | 24 +- .../common/block/foliage/BlockFlower.java | 12 +- .../java/common/block/foliage/BlockGrass.java | 50 +-- .../common/block/foliage/BlockLeaves.java | 24 +- .../common/block/foliage/BlockLilyPad.java | 29 +- .../common/block/foliage/BlockMushroom.java | 6 +- .../common/block/foliage/BlockMycelium.java | 10 +- .../java/common/block/foliage/BlockReed.java | 15 +- .../common/block/foliage/BlockSapling.java | 13 +- .../java/common/block/foliage/BlockStem.java | 94 ++-- .../java/common/block/foliage/BlockSwamp.java | 93 ++++ .../common/block/foliage/BlockTallGrass.java | 43 +- .../common/block/foliage/BlockTianSoil.java | 10 +- .../java/common/block/foliage/BlockVine.java | 96 ++--- .../java/common/block/foliage/LeavesType.java | 18 +- .../block/liquid/BlockDynamicLiquid.java | 6 - .../java/common/block/liquid/BlockLiquid.java | 13 +- .../block/liquid/BlockStaticLiquid.java | 6 - .../common/block/natural/BlockBlackFire.java | 12 + .../block/natural/BlockBlackenedDirt.java | 2 +- .../java/common/block/natural/BlockFire.java | 400 +++++++++--------- .../common/block/natural/BlockPodzol.java | 16 +- .../java/common/block/natural/BlockSnow.java | 12 +- .../common/block/natural/BlockSoulFire.java | 14 +- .../common/block/natural/BlockSoulSand.java | 3 - .../common/block/natural/BlockTintedFire.java | 36 -- .../java/common/block/natural/BlockWeb.java | 6 +- .../java/common/block/tech/BlockAnvil.java | 10 +- .../block/tech/BlockBasePressurePlate.java | 17 +- .../common/block/tech/BlockBrewingStand.java | 10 +- .../java/common/block/tech/BlockButton.java | 17 +- .../java/common/block/tech/BlockCauldron.java | 8 - .../common/block/tech/BlockDispenser.java | 8 - .../java/common/block/tech/BlockDisplay.java | 6 +- .../java/common/block/tech/BlockFurnace.java | 8 - .../java/common/block/tech/BlockLever.java | 6 +- .../common/block/tech/BlockPistonBase.java | 16 - .../java/common/block/tech/BlockRail.java | 6 +- .../java/common/block/tech/BlockTorch.java | 6 +- .../java/common/block/tech/BlockTripWire.java | 6 +- .../common/block/tech/BlockTripWireHook.java | 6 +- .../java/common/block/tech/BlockWire.java | 6 +- .../src/main/java/common/color/Colorizer.java | 91 ---- .../src/main/java/common/entity/Entity.java | 43 +- .../common/entity/animal/EntitySheep.java | 2 +- .../java/common/entity/npc/EntitySlime.java | 2 +- .../common/entity/types/EntityThrowable.java | 7 +- .../main/java/common/init/BlockRegistry.java | 24 +- common/src/main/java/common/init/Blocks.java | 33 +- .../java/common/init/CraftingRegistry.java | 2 + common/src/main/java/common/init/Items.java | 22 +- .../java/common/init/UniverseRegistry.java | 36 +- .../src/main/java/common/init/WoodType.java | 35 +- common/src/main/java/common/item/Item.java | 6 +- .../java/common/item/consumable/ItemSoup.java | 2 +- .../java/common/item/material/ItemSeeds.java | 2 +- .../java/common/item/projectile/ItemDie.java | 6 +- .../common/item/tool/ItemCarrotOnAStick.java | 2 +- .../java/common/item/tool/ItemEditor.java | 2 +- .../java/common/item/tool/ItemFishingRod.java | 2 +- .../main/java/common/item/tool/ItemHoe.java | 2 +- .../java/common/item/tool/ItemMagnet.java | 2 +- .../main/java/common/item/tool/ItemTool.java | 2 +- .../main/java/common/item/tool/ItemWand.java | 2 +- .../main/java/common/item/weapon/ItemBow.java | 2 +- .../java/common/item/weapon/ItemGunBase.java | 2 +- .../java/common/item/weapon/ItemSword.java | 2 +- .../{Transform.java => GuiPosition.java} | 6 +- common/src/main/java/common/model/Model.java | 9 - .../main/java/common/model/ModelProvider.java | 4 - .../java/common/model/TextureAnimation.java | 2 +- .../src/main/java/common/util/PortalType.java | 29 +- common/src/main/java/common/vars/Vars.java | 4 + .../main/java/common/world/AWorldServer.java | 1 - server/src/main/java/server/Server.java | 2 +- .../server/clipboard/ReorderRegistry.java | 6 +- .../src/main/java/server/world/Spawner.java | 4 +- .../main/java/server/world/WorldServer.java | 9 +- .../java/server/worldgen/FeatureLakes.java | 2 +- .../java/server/worldgen/GeneratorPerlin.java | 2 +- .../java/server/worldgen/MobConstants.java | 2 +- .../server/worldgen/ReplacerAltBiome.java | 2 +- .../java/server/worldgen/ReplacerBiome.java | 2 +- .../{ => worldgen}/biome/BiomeBeach.java | 4 +- .../{ => worldgen}/biome/BiomeBlackened.java | 2 +- .../{ => worldgen}/biome/BiomeChaos.java | 2 +- .../{ => worldgen}/biome/BiomeDesert.java | 4 +- .../biome/BiomeExterminated.java | 2 +- .../{ => worldgen}/biome/BiomeForest.java | 4 +- .../{ => worldgen}/biome/BiomeHell.java | 2 +- .../{ => worldgen}/biome/BiomeHills.java | 2 +- .../{ => worldgen}/biome/BiomeJungle.java | 2 +- .../{ => worldgen}/biome/BiomeMesa.java | 2 +- .../{ => worldgen}/biome/BiomeMoon.java | 2 +- .../{ => worldgen}/biome/BiomeMushroom.java | 4 +- .../{ => worldgen}/biome/BiomeMutated.java | 2 +- .../{ => worldgen}/biome/BiomeNone.java | 2 +- .../{ => worldgen}/biome/BiomePlains.java | 4 +- .../{ => worldgen}/biome/BiomeSavanna.java | 4 +- .../{ => worldgen}/biome/BiomeSnow.java | 2 +- .../{ => worldgen}/biome/BiomeSnowLand.java | 4 +- .../{ => worldgen}/biome/BiomeSpace.java | 2 +- .../{ => worldgen}/biome/BiomeStoneBeach.java | 4 +- .../{ => worldgen}/biome/BiomeSwamp.java | 21 +- .../{ => worldgen}/biome/BiomeTaiga.java | 4 +- .../{ => worldgen}/biome/BiomeTian.java | 2 +- .../{ => worldgen}/biome/BiomeWater.java | 2 +- .../server/{ => worldgen}/biome/GenBiome.java | 107 ++--- .../server/{ => worldgen}/biome/RngSpawn.java | 2 +- .../server/{ => worldgen}/biome/Scaling.java | 2 +- .../{ => worldgen}/biome/Temperature.java | 2 +- .../server/worldgen/caves/MapGenCaves.java | 2 +- .../server/worldgen/caves/MapGenRavine.java | 2 +- .../java/server/worldgen/layer/GenLayer.java | 4 +- .../server/worldgen/layer/GenLayerAddSea.java | 2 +- .../worldgen/layer/GenLayerBiomeEdge.java | 20 +- .../server/worldgen/layer/GenLayerHills.java | 48 ++- .../worldgen/layer/GenLayerRiverMix.java | 6 +- .../server/worldgen/layer/GenLayerShore.java | 14 +- .../structure/MapGenScatteredFeature.java | 8 +- .../worldgen/structure/MapGenVillage.java | 2 +- .../worldgen/structure/StructureVillage.java | 2 +- .../server/worldgen/tree/WorldGenSwamp.java | 8 +- .../server/worldgen/tree/WorldGenTree.java | 3 +- 241 files changed, 1162 insertions(+), 1650 deletions(-) delete mode 100644 client/src/main/java/client/renderer/texture/ColormapLoader.java rename client/src/main/java/client/renderer/ticked/{TextureFlamesFX1.java => TextureFlame.java} (68%) delete mode 100755 client/src/main/java/client/renderer/ticked/TextureFlamesFX2.java delete mode 100644 client/src/main/java/client/renderer/ticked/TextureFlamesFXMono1.java delete mode 100644 client/src/main/java/client/renderer/ticked/TextureFlamesFXMono2.java rename client/src/main/java/client/renderer/ticked/{TextureLavaFX.java => TextureMagma.java} (94%) rename client/src/main/java/client/renderer/ticked/{TextureLavaFlowFX.java => TextureMagmaFlow.java} (94%) rename client/src/main/java/client/renderer/ticked/{TextureWaterFX.java => TextureWater.java} (80%) rename client/src/main/java/client/renderer/ticked/{TextureWaterFlowFX.java => TextureWaterFlow.java} (82%) create mode 100755 client/src/main/resources/textures/blocks/arcane_portal.png create mode 100755 client/src/main/resources/textures/blocks/chaos_portal.png create mode 100755 client/src/main/resources/textures/blocks/crimson_portal.png create mode 100755 client/src/main/resources/textures/blocks/dark_portal.png create mode 100755 client/src/main/resources/textures/blocks/deep_portal.png delete mode 100755 client/src/main/resources/textures/blocks/dirt_podzol_side.png mode change 100755 => 100644 client/src/main/resources/textures/blocks/grass_side.png delete mode 100755 client/src/main/resources/textures/blocks/grass_side_overlay.png delete mode 100755 client/src/main/resources/textures/blocks/grass_side_snowed.png mode change 100755 => 100644 client/src/main/resources/textures/blocks/iron_block.png rename client/src/main/resources/textures/blocks/{portal.png => light_portal.png} (91%) delete mode 100755 client/src/main/resources/textures/blocks/melon_stem_connected.png create mode 100755 client/src/main/resources/textures/blocks/podzol_side.png rename client/src/main/resources/textures/blocks/{dirt_podzol_top.png => podzol_top.png} (100%) delete mode 100755 client/src/main/resources/textures/blocks/pumpkin_stem_connected.png create mode 100755 client/src/main/resources/textures/blocks/radiating_portal.png create mode 100755 client/src/main/resources/textures/blocks/shining_portal.png create mode 100755 client/src/main/resources/textures/blocks/soil_snowed.png rename client/src/main/resources/textures/blocks/{springwater_flow.png => spring_water_flow.png} (100%) rename client/src/main/resources/textures/blocks/{springwater_still.png => spring_water_still.png} (100%) create mode 100755 client/src/main/resources/textures/blocks/swamp_grass.png create mode 100755 client/src/main/resources/textures/blocks/swamp_oak_door_bottom.png create mode 100755 client/src/main/resources/textures/blocks/swamp_oak_door_top.png create mode 100755 client/src/main/resources/textures/blocks/swamp_oak_leaves_autumn.png create mode 100755 client/src/main/resources/textures/blocks/swamp_oak_leaves_snowy.png create mode 100755 client/src/main/resources/textures/blocks/swamp_oak_leaves_spring.png create mode 100755 client/src/main/resources/textures/blocks/swamp_oak_leaves_summer.png create mode 100755 client/src/main/resources/textures/blocks/swamp_oak_leaves_winter.png create mode 100755 client/src/main/resources/textures/blocks/swamp_oak_log_bark.png create mode 100755 client/src/main/resources/textures/blocks/swamp_oak_log_top.png create mode 100755 client/src/main/resources/textures/blocks/swamp_oak_planks.png create mode 100755 client/src/main/resources/textures/blocks/swamp_oak_sapling.png create mode 100755 client/src/main/resources/textures/blocks/swamp_side.png create mode 100755 client/src/main/resources/textures/blocks/swamp_top.png create mode 100755 client/src/main/resources/textures/blocks/swamp_vine.png delete mode 100755 client/src/main/resources/textures/blocks/tian_soil_side_snowed.png create mode 100755 client/src/main/resources/textures/blocks/tian_soil_snowed.png mode change 100755 => 100644 client/src/main/resources/textures/items/iron_ingot.png rename client/src/main/resources/textures/items/{springwater_bucket.png => spring_water_bucket.png} (100%) create mode 100755 client/src/main/resources/textures/items/swamp_water_bucket.png delete mode 100755 client/src/main/resources/textures/world/foliage.png delete mode 100755 client/src/main/resources/textures/world/grass.png create mode 100644 common/src/main/java/common/block/foliage/BlockSwamp.java create mode 100644 common/src/main/java/common/block/natural/BlockBlackFire.java delete mode 100644 common/src/main/java/common/block/natural/BlockTintedFire.java delete mode 100755 common/src/main/java/common/color/Colorizer.java rename common/src/main/java/common/model/{Transform.java => GuiPosition.java} (89%) rename server/src/main/java/server/{ => worldgen}/biome/BiomeBeach.java (85%) rename server/src/main/java/server/{ => worldgen}/biome/BiomeBlackened.java (97%) rename server/src/main/java/server/{ => worldgen}/biome/BiomeChaos.java (97%) rename server/src/main/java/server/{ => worldgen}/biome/BiomeDesert.java (92%) rename server/src/main/java/server/{ => worldgen}/biome/BiomeExterminated.java (94%) rename server/src/main/java/server/{ => worldgen}/biome/BiomeForest.java (98%) rename server/src/main/java/server/{ => worldgen}/biome/BiomeHell.java (99%) rename server/src/main/java/server/{ => worldgen}/biome/BiomeHills.java (99%) rename server/src/main/java/server/{ => worldgen}/biome/BiomeJungle.java (98%) rename server/src/main/java/server/{ => worldgen}/biome/BiomeMesa.java (99%) rename server/src/main/java/server/{ => worldgen}/biome/BiomeMoon.java (95%) rename server/src/main/java/server/{ => worldgen}/biome/BiomeMushroom.java (90%) rename server/src/main/java/server/{ => worldgen}/biome/BiomeMutated.java (98%) rename server/src/main/java/server/{ => worldgen}/biome/BiomeNone.java (95%) rename server/src/main/java/server/{ => worldgen}/biome/BiomePlains.java (98%) rename server/src/main/java/server/{ => worldgen}/biome/BiomeSavanna.java (96%) rename server/src/main/java/server/{ => worldgen}/biome/BiomeSnow.java (98%) rename server/src/main/java/server/{ => worldgen}/biome/BiomeSnowLand.java (90%) rename server/src/main/java/server/{ => worldgen}/biome/BiomeSpace.java (97%) rename server/src/main/java/server/{ => worldgen}/biome/BiomeStoneBeach.java (88%) rename server/src/main/java/server/{ => worldgen}/biome/BiomeSwamp.java (72%) rename server/src/main/java/server/{ => worldgen}/biome/BiomeTaiga.java (95%) rename server/src/main/java/server/{ => worldgen}/biome/BiomeTian.java (99%) rename server/src/main/java/server/{ => worldgen}/biome/BiomeWater.java (94%) rename server/src/main/java/server/{ => worldgen}/biome/GenBiome.java (91%) rename server/src/main/java/server/{ => worldgen}/biome/RngSpawn.java (92%) rename server/src/main/java/server/{ => worldgen}/biome/Scaling.java (95%) rename server/src/main/java/server/{ => worldgen}/biome/Temperature.java (63%) diff --git a/client/src/main/java/client/Client.java b/client/src/main/java/client/Client.java index a71cfc8c..91a20138 100755 --- a/client/src/main/java/client/Client.java +++ b/client/src/main/java/client/Client.java @@ -65,7 +65,6 @@ import client.renderer.blockmodel.ModelManager; import client.renderer.chunk.RenderChunk; import client.renderer.entity.RenderItem; import client.renderer.entity.RenderManager; -import client.renderer.texture.ColormapLoader; import client.renderer.texture.EntityTexManager; import client.renderer.texture.TextureManager; import client.renderer.texture.TextureMap; @@ -638,7 +637,6 @@ public class Client implements IThreadListener { Font.unload(); Font.load(this.font); this.textureManager.onReload(); - ColormapLoader.reload(); this.modelManager.onReload(); this.renderItem.onReload(); this.blockRenderer.onReload(); @@ -653,7 +651,6 @@ public class Client implements IThreadListener { this.textureManager = new TextureManager(); this.textureManager.onReload(); this.soundManager = new SoundManager(this); - ColormapLoader.reload(); GlState.enableTexture2D(); GlState.shadeModel(GL11.GL_SMOOTH); GL11.glClearDepth(1.0D); diff --git a/client/src/main/java/client/gui/ingame/GuiCreateDimension.java b/client/src/main/java/client/gui/ingame/GuiCreateDimension.java index f4dab7a5..f2734c4d 100644 --- a/client/src/main/java/client/gui/ingame/GuiCreateDimension.java +++ b/client/src/main/java/client/gui/ingame/GuiCreateDimension.java @@ -111,27 +111,27 @@ public class GuiCreateDimension extends Gui { addPreset("Chaotische Höhlen", "UpperLmtScale:2.0,LowerLmtScale:64.0,SeaLevel:6"); addPreset("Viel Glück", "LiquidBlock:lava,SeaLevel:40"); - addFlatPreset("Klassisch", Biome.PLAINS, false, Blocks.dirt.getState(), Blocks.bedrock.getState(), 2, Blocks.dirt.getState(), + addFlatPreset("Klassisch", Biome.PLAIN, false, Blocks.dirt.getState(), Blocks.bedrock.getState(), 2, Blocks.dirt.getState(), Blocks.grass.getState()).enableVillages(); - addFlatPreset("Abbauwelt", Biome.EXTREMEHILLS, true, Blocks.stone.getState(), Blocks.bedrock.getState(), 230, Blocks.stone.getState(), + addFlatPreset("Abbauwelt", Biome.HILLS, true, Blocks.stone.getState(), Blocks.bedrock.getState(), 230, Blocks.stone.getState(), 5, Blocks.dirt.getState(), Blocks.grass.getState()).enableStrongholds().enableMineshafts().setDungeons(8); addFlatPreset("Wasserwelt", Biome.SEA, false, Blocks.stone.getState(), Blocks.bedrock.getState(), 5, Blocks.stone.getState(), 52, Blocks.dirt.getState(), 5, Blocks.sand.getState(), 90, Blocks.water.getState()); - addFlatPreset("Oberfläche", Biome.PLAINS, true, Blocks.stone.getState(), Blocks.bedrock.getState(), 59, Blocks.stone.getState(), + addFlatPreset("Oberfläche", Biome.PLAIN, true, Blocks.stone.getState(), Blocks.bedrock.getState(), 59, Blocks.stone.getState(), 3, Blocks.dirt.getState(), Blocks.grass.getState()).setBiomeReplacer(Blocks.gravel.getState()).enableVillages().enableStrongholds().enableMineshafts().setDungeons(8) .addLake(Blocks.water.getState(), null, Blocks.grass.getState(), 4, 0, 255, false).addLake(Blocks.lava.getState(), Blocks.stone.getState(), null, 8, 8, 255, true); - addFlatPreset("Verschneites Königreich", Biome.ICEPLAINS, false, Blocks.stone.getState(), Blocks.bedrock.getState(), 59, Blocks.stone.getState(), + addFlatPreset("Verschneites Königreich", Biome.ICE, false, Blocks.stone.getState(), Blocks.bedrock.getState(), 59, Blocks.stone.getState(), 3, Blocks.dirt.getState(), Blocks.grass.getState(), Blocks.snow_layer.getState()).enableVillages(); - addFlatPreset("Verschneites Königreich +", Biome.ICEPLAINS, true, Blocks.stone.getState(), Blocks.bedrock.getState(), 59, Blocks.stone.getState(), + addFlatPreset("Verschneites Königreich +", Biome.ICE, true, Blocks.stone.getState(), Blocks.bedrock.getState(), 59, Blocks.stone.getState(), 3, Blocks.dirt.getState(), Blocks.grass.getState(), Blocks.snow_layer.getState()).setBiomeReplacer(Blocks.gravel.getState()).enableVillages() .addLake(Blocks.water.getState(), null, Blocks.grass.getState(), 4, 0, 255, false); - addFlatPreset("Unendliche Grube", Biome.PLAINS, false, Blocks.dirt.getState(), 2, Blocks.cobblestone.getState(), 3, Blocks.dirt.getState(), Blocks.grass.getState()) + addFlatPreset("Unendliche Grube", Biome.PLAIN, false, Blocks.dirt.getState(), 2, Blocks.cobblestone.getState(), 3, Blocks.dirt.getState(), Blocks.grass.getState()) .setBiomeReplacer(Blocks.gravel.getState()).enableVillages(); addFlatPreset("Wüste", Biome.DESERT, false, Blocks.stone.getState(), Blocks.bedrock.getState(), 3, Blocks.stone.getState(), 52, Blocks.sandstone.getState()) diff --git a/client/src/main/java/client/init/RenderRegistry.java b/client/src/main/java/client/init/RenderRegistry.java index b1c085e5..973f05ad 100644 --- a/client/src/main/java/client/init/RenderRegistry.java +++ b/client/src/main/java/client/init/RenderRegistry.java @@ -54,15 +54,12 @@ import client.renderer.model.ModelPig; import client.renderer.model.ModelRabbit; import client.renderer.model.ModelSheep2; import client.renderer.model.ModelWolf; -import client.renderer.texture.TextureTicked; -import client.renderer.ticked.TextureFlamesFX1; -import client.renderer.ticked.TextureFlamesFX2; -import client.renderer.ticked.TextureFlamesFXMono1; -import client.renderer.ticked.TextureFlamesFXMono2; -import client.renderer.ticked.TextureLavaFX; -import client.renderer.ticked.TextureLavaFlowFX; -import client.renderer.ticked.TextureWaterFX; -import client.renderer.ticked.TextureWaterFlowFX; +import client.renderer.texture.TextureTicked.TextureCreator; +import client.renderer.ticked.TextureFlame; +import client.renderer.ticked.TextureMagma; +import client.renderer.ticked.TextureMagmaFlow; +import client.renderer.ticked.TextureWater; +import client.renderer.ticked.TextureWaterFlow; import common.entity.Entity; import common.entity.animal.EntityBat; import common.entity.animal.EntityChicken; @@ -161,14 +158,18 @@ public abstract class RenderRegistry { } } - public static void registerAnimations(Map> anim) { - anim.put(TextureAnimation.FIRE1, TextureFlamesFX1.class); - anim.put(TextureAnimation.FIRE2, TextureFlamesFX2.class); - anim.put(TextureAnimation.FLAME1, TextureFlamesFXMono1.class); - anim.put(TextureAnimation.FLAME2, TextureFlamesFXMono2.class); - anim.put(TextureAnimation.LAVAFLOW, TextureLavaFlowFX.class); - anim.put(TextureAnimation.LAVA, TextureLavaFX.class); - anim.put(TextureAnimation.WATERFLOW, TextureWaterFlowFX.class); - anim.put(TextureAnimation.WATER, TextureWaterFX.class); + public static void registerAnimations(Map anim) { + anim.put(TextureAnimation.FLAME_BASE, () -> new TextureFlame(0xffffffff, 0)); + anim.put(TextureAnimation.FLAME_OFFSET, () -> new TextureFlame(0xffffffff, 160)); + anim.put(TextureAnimation.BLACK_FLAME_BASE, () -> new TextureFlame(0xff202020, 0)); + anim.put(TextureAnimation.BLACK_FLAME_OFFSET, () -> new TextureFlame(0xff202020, 160)); + anim.put(TextureAnimation.BLUE_FLAME_BASE, () -> new TextureFlame(0xff4010ff, 0)); + anim.put(TextureAnimation.BLUE_FLAME_OFFSET, () -> new TextureFlame(0xff4010ff, 160)); + anim.put(TextureAnimation.MAGMA_FLOW, () -> new TextureMagmaFlow()); + anim.put(TextureAnimation.MAGMA_STILL, () -> new TextureMagma()); + anim.put(TextureAnimation.WATER_FLOW, () -> new TextureWaterFlow(0xffffffff)); + anim.put(TextureAnimation.WATER_STILL, () -> new TextureWater(0xffffffff)); + anim.put(TextureAnimation.SWAMP_WATER_FLOW, () -> new TextureWaterFlow(0xffe0ffae)); + anim.put(TextureAnimation.SWAMP_WATER_STILL, () -> new TextureWater(0xffe0ffae)); } } diff --git a/client/src/main/java/client/renderer/BlockRenderer.java b/client/src/main/java/client/renderer/BlockRenderer.java index 04d4c33b..944e220a 100755 --- a/client/src/main/java/client/renderer/BlockRenderer.java +++ b/client/src/main/java/client/renderer/BlockRenderer.java @@ -297,82 +297,42 @@ public class BlockRenderer worldRendererIn.addVertexData(bakedquad.getVertexData()); worldRendererIn.putBrightness4(brightnessIn, brightnessIn, brightnessIn, brightnessIn); - - if (bakedquad.hasTintIndex()) - { - int l = blockIn.colorMultiplier(blockAccessIn, blockPosIn, bakedquad.getTintIndex()); - -// if (EntityRenderer.anaglyphEnable) -// { -// l = TextureUtil.anaglyphColor(l); -// } - - float f = (float)(l >> 16 & 255) / 255.0F; - float f1 = (float)(l >> 8 & 255) / 255.0F; - float f2 = (float)(l & 255) / 255.0F; - worldRendererIn.putColorMultiplier(f, f1, f2, 4); - worldRendererIn.putColorMultiplier(f, f1, f2, 3); - worldRendererIn.putColorMultiplier(f, f1, f2, 2); - worldRendererIn.putColorMultiplier(f, f1, f2, 1); - } - worldRendererIn.putPosition(d0, d1, d2); } } - public void renderModelBrightnessColor(IBakedModel bakedModel, float p_178262_2_, float red, float green, float blue) + private void renderModelBrightnessColor(IBakedModel bakedModel, float brightness) { for (Facing enumfacing : Facing.values()) { - this.renderModelBrightnessColorQuads(p_178262_2_, red, green, blue, bakedModel.getFace(enumfacing)); + this.renderModelBrightnessColorQuads(brightness, bakedModel.getFace(enumfacing)); } - this.renderModelBrightnessColorQuads(p_178262_2_, red, green, blue, bakedModel.getQuads()); + this.renderModelBrightnessColorQuads(brightness, bakedModel.getQuads()); } private void renderModelBrightness(IBakedModel model, State p_178266_2_, float brightness, boolean p_178266_4_) { Block block = p_178266_2_.getBlock(); - block.setItemBounds(); GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); - int i = block.getRenderColor(block.getEntityState(p_178266_2_)); - -// if (EntityRenderer.anaglyphEnable) -// { -// i = TextureUtil.anaglyphColor(i); -// } - - float f = (float)(i >> 16 & 255) / 255.0F; - float f1 = (float)(i >> 8 & 255) / 255.0F; - float f2 = (float)(i & 255) / 255.0F; if (!p_178266_4_) { GlState.color(brightness, brightness, brightness, 1.0F); } - this.renderModelBrightnessColor(model, brightness, f, f1, f2); + this.renderModelBrightnessColor(model, brightness); } - private void renderModelBrightnessColorQuads(float brightness, float red, float green, float blue, List listQuads) + private void renderModelBrightnessColorQuads(float brightness, List listQuads) { -// Tessellator tessellator = Tessellator.getInstance(); RenderBuffer worldrenderer = Tessellator.getBuffer(); for (BakedQuad bakedquad : listQuads) { worldrenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.ITEM); worldrenderer.addVertexData(bakedquad.getVertexData()); - - if (bakedquad.hasTintIndex()) - { - worldrenderer.putColorRGB_F4(red * brightness, green * brightness, blue * brightness); - } - else - { - worldrenderer.putColorRGB_F4(brightness, brightness, brightness); - } - + worldrenderer.putColorRGB_F4(brightness, brightness, brightness); Vec3i vec3i = bakedquad.getFace().getDirectionVec(); worldrenderer.putNormal((float)vec3i.getX(), (float)vec3i.getY(), (float)vec3i.getZ()); Tessellator.draw(); @@ -395,10 +355,6 @@ public class BlockRenderer BlockLiquid blockliquid = (BlockLiquid)blockStateIn.getBlock(); blockliquid.setBlockBounds(blockAccess, blockPosIn); Sprite[] atextureatlassprite = this.fluids.get(blockliquid); - int i = blockliquid.colorMultiplier(blockAccess, blockPosIn, 0); - float f = (float)(i >> 16 & 255) / 255.0F; - float f1 = (float)(i >> 8 & 255) / 255.0F; - float f2 = (float)(i & 255) / 255.0F; boolean flag = blockliquid.canRender(blockAccess, blockPosIn.up(), Facing.UP); boolean flag1 = blockliquid.canRender(blockAccess, blockPosIn.down(), Facing.DOWN); boolean[] aboolean = new boolean[] {blockliquid.canRender(blockAccess, blockPosIn.north(), Facing.NORTH), blockliquid.canRender(blockAccess, blockPosIn.south(), Facing.SOUTH), blockliquid.canRender(blockAccess, blockPosIn.west(), Facing.WEST), blockliquid.canRender(blockAccess, blockPosIn.east(), Facing.EAST)}; @@ -414,11 +370,10 @@ public class BlockRenderer float f4 = 1.0F; float f5 = 0.8F; float f6 = 0.6F; - Material material = blockliquid.getMaterial(); - float f7 = this.getFluidHeight(blockAccess, blockPosIn, material); - float f8 = this.getFluidHeight(blockAccess, blockPosIn.south(), material); - float f9 = this.getFluidHeight(blockAccess, blockPosIn.east().south(), material); - float f10 = this.getFluidHeight(blockAccess, blockPosIn.east(), material); + float f7 = this.getFluidHeight(blockAccess, blockPosIn); + float f8 = this.getFluidHeight(blockAccess, blockPosIn.south()); + float f9 = this.getFluidHeight(blockAccess, blockPosIn.east().south()); + float f10 = this.getFluidHeight(blockAccess, blockPosIn.east()); double d0 = (double)blockPosIn.getX(); double d1 = (double)blockPosIn.getY(); double d2 = (double)blockPosIn.getZ(); @@ -477,9 +432,9 @@ public class BlockRenderer int k2 = blockliquid.getLightmapValue(blockAccess, blockPosIn); int l2 = k2 >> 16 & 65535; int i3 = k2 & 65535; - float f24 = f4 * f; - float f25 = f4 * f1; - float f26 = f4 * f2; + float f24 = f4; + float f25 = f4; + float f26 = f4; worldRendererIn.pos(d0 + 0.0D, d1 + (double)f7, d2 + 0.0D).color(f24, f25, f26, 1.0F).tex((double)f13, (double)f17).lightmap(l2, i3).endVertex(); worldRendererIn.pos(d0 + 0.0D, d1 + (double)f8, d2 + 1.0D).color(f24, f25, f26, 1.0F).tex((double)f14, (double)f18).lightmap(l2, i3).endVertex(); worldRendererIn.pos(d0 + 1.0D, d1 + (double)f9, d2 + 1.0D).color(f24, f25, f26, 1.0F).tex((double)f15, (double)f19).lightmap(l2, i3).endVertex(); @@ -594,9 +549,9 @@ public class BlockRenderer int k = j >> 16 & 65535; int l = j & 65535; float f31 = i1 < 2 ? f5 : f6; - float f32 = f4 * f31 * f; - float f33 = f4 * f31 * f1; - float f34 = f4 * f31 * f2; + float f32 = f4 * f31; + float f33 = f4 * f31; + float f34 = f4 * f31; worldRendererIn.pos(d3, d1 + (double)f39, d4).color(f32, f33, f34, 1.0F).tex((double)f41, (double)f28).lightmap(k, l).endVertex(); worldRendererIn.pos(d5, d1 + (double)f40, d6).color(f32, f33, f34, 1.0F).tex((double)f27, (double)f29).lightmap(k, l).endVertex(); worldRendererIn.pos(d5, d1 + 0.0D, d6).color(f32, f33, f34, 1.0F).tex((double)f27, (double)f30).lightmap(k, l).endVertex(); @@ -612,7 +567,7 @@ public class BlockRenderer } } - private float getFluidHeight(IBlockAccess blockAccess, BlockPos blockPosIn, Material blockMaterial) + private float getFluidHeight(IBlockAccess blockAccess, BlockPos blockPosIn) { int i = 0; float f = 0.0F; @@ -621,7 +576,7 @@ public class BlockRenderer { BlockPos blockpos = blockPosIn.add(-(j & 1), 0, -(j >> 1 & 1)); - if (blockAccess.getState(blockpos.up()).getBlock().getMaterial() == blockMaterial) + if (blockAccess.getState(blockpos.up()).getBlock().getMaterial().isLiquid()) { return 1.0F; } @@ -629,7 +584,7 @@ public class BlockRenderer State iblockstate = blockAccess.getState(blockpos); Material material = iblockstate.getBlock().getMaterial(); - if (material != blockMaterial) + if (!material.isLiquid()) { if (!material.isSolid()) { diff --git a/client/src/main/java/client/renderer/EffectRenderer.java b/client/src/main/java/client/renderer/EffectRenderer.java index fd1b4464..674e4cd7 100755 --- a/client/src/main/java/client/renderer/EffectRenderer.java +++ b/client/src/main/java/client/renderer/EffectRenderer.java @@ -708,7 +708,7 @@ public class EffectRenderer { this.offsetY = rng.floatv() * 3.0F; } - protected Icon(double x, double y, double z, State state, BlockPos pos, boolean hit) { + protected Icon(double x, double y, double z, State state, boolean hit) { this(x, y, z, hit ? 0.6f : 1.0f, Client.CLIENT.getBlockRendererDispatcher().getModelManager().getTexture(state)); this.gravity = 1.0F; this.red = this.green = this.blue = 0.6F; @@ -717,13 +717,6 @@ public class EffectRenderer { this.motionY = (this.motionY - 0.1) * 0.2 + 0.1; this.motionZ *= 0.2; } - Block block = state.getBlock(); - if(block == Blocks.grass) - return; - int color = pos == null ? block.getRenderColor(state) : block.colorMultiplier(world, pos, 0); - this.red *= (float)(color >> 16 & 255) / 255.0F; - this.green *= (float)(color >> 8 & 255) / 255.0F; - this.blue *= (float)(color & 255) / 255.0F; } protected Icon(double x, double y, double z, Item item) { @@ -971,7 +964,7 @@ public class EffectRenderer { }); this.register(ParticleType.BLOCK_CRACK, (x, y, z, id) -> { State state = BlockRegistry.byId(id); - return state == null ? null : new Icon(x, y, z, state, null, false); + return state == null ? null : new Icon(x, y, z, state, false); }); this.register(ParticleType.EXPLOSION_HUGE, (x, y, z, u) -> new ExplosionSpawner(x, y, z)); this.register(ParticleType.EXPLOSION_LARGE, @@ -1089,7 +1082,7 @@ public class EffectRenderer { double d0 = (double)pos.getX() + ((double)j + 0.5D) / (double)i; double d1 = (double)pos.getY() + ((double)k + 0.5D) / (double)i; double d2 = (double)pos.getZ() + ((double)l + 0.5D) / (double)i; - this.add(new Icon(d0, d1, d2, state, pos, false)); + this.add(new Icon(d0, d1, d2, state, false)); } } } @@ -1136,7 +1129,7 @@ public class EffectRenderer { d0 = (double)i + block.getBlockBoundsMaxX() + (double)f; } - this.add(new Icon(d0, d1, d2, iblockstate, pos, true)); + this.add(new Icon(d0, d1, d2, iblockstate, true)); } } diff --git a/client/src/main/java/client/renderer/ItemRenderer.java b/client/src/main/java/client/renderer/ItemRenderer.java index d4905345..5a3b5db8 100755 --- a/client/src/main/java/client/renderer/ItemRenderer.java +++ b/client/src/main/java/client/renderer/ItemRenderer.java @@ -21,7 +21,7 @@ import common.item.Item; import common.item.ItemAction; import common.item.ItemStack; import common.model.BlockLayer; -import common.model.Transform; +import common.model.GuiPosition; import common.util.BlockPos; import common.util.ExtMath; import common.util.Vec3; diff --git a/client/src/main/java/client/renderer/RenderBuffer.java b/client/src/main/java/client/renderer/RenderBuffer.java index 8b0e57ed..60ac2b84 100755 --- a/client/src/main/java/client/renderer/RenderBuffer.java +++ b/client/src/main/java/client/renderer/RenderBuffer.java @@ -287,36 +287,6 @@ public class RenderBuffer return ((this.vertexCount - p_78909_1_) * this.vertexFormat.getNextOffset() + this.vertexFormat.getColorOffset()) / 4; } - public void putColorMultiplier(float red, float green, float blue, int p_178978_4_) - { - int i = this.getColorIndex(p_178978_4_); - int j = -1; - - if (!this.noColor) - { - j = this.rawIntBuffer.get(i); - - if (ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN) - { - int k = (int)((float)(j & 255) * red); - int l = (int)((float)(j >> 8 & 255) * green); - int i1 = (int)((float)(j >> 16 & 255) * blue); - j = j & -16777216; - j = j | i1 << 16 | l << 8 | k; - } - else - { - int j1 = (int)((float)(j >> 24 & 255) * red); - int k1 = (int)((float)(j >> 16 & 255) * green); - int l1 = (int)((float)(j >> 8 & 255) * blue); - j = j & 255; - j = j | j1 << 24 | k1 << 16 | l1 << 8; - } - } - - this.rawIntBuffer.put(i, j); - } - private void putColor(int argb, int p_178988_2_) { int i = this.getColorIndex(p_178988_2_); diff --git a/client/src/main/java/client/renderer/blockmodel/BakedModel.java b/client/src/main/java/client/renderer/blockmodel/BakedModel.java index 66a3f299..8bdd93f8 100755 --- a/client/src/main/java/client/renderer/blockmodel/BakedModel.java +++ b/client/src/main/java/client/renderer/blockmodel/BakedModel.java @@ -5,10 +5,10 @@ import java.util.List; import client.renderer.texture.Sprite; import common.collect.Lists; -import common.model.Transform; +import common.model.GuiPosition; import common.util.Facing; -public record BakedModel(List getQuads, List> getFace, boolean isGui3d, Sprite getBaseTexture, Transform getTransforms) implements IBakedModel { +public record BakedModel(List getQuads, List> getFace, boolean isGui3d, Sprite getBaseTexture, GuiPosition getTransforms) implements IBakedModel { public List getFace(Facing face) { return this.getFace.get(face.ordinal()); } @@ -22,7 +22,7 @@ public record BakedModel(List getQuads, List> getFace private final List> faces; private Sprite texture; private boolean gui3d; - private Transform transforms; + private GuiPosition transforms; public Builder(ModelBlock model) { this(model.isGui3d(), model.getTransform()); @@ -51,7 +51,7 @@ public record BakedModel(List getQuads, List> getFace } } - private Builder(boolean gui3d, Transform transforms) { + private Builder(boolean gui3d, GuiPosition transforms) { this.quads = Lists.newArrayList(); this.faces = new ArrayList>(6); diff --git a/client/src/main/java/client/renderer/blockmodel/BuiltInModel.java b/client/src/main/java/client/renderer/blockmodel/BuiltInModel.java index 59e962a6..f5bd43cf 100755 --- a/client/src/main/java/client/renderer/blockmodel/BuiltInModel.java +++ b/client/src/main/java/client/renderer/blockmodel/BuiltInModel.java @@ -3,10 +3,10 @@ package client.renderer.blockmodel; import java.util.List; import client.renderer.texture.Sprite; -import common.model.Transform; +import common.model.GuiPosition; import common.util.Facing; -public record BuiltInModel(Transform getTransforms) implements IBakedModel { +public record BuiltInModel(GuiPosition getTransforms) implements IBakedModel { public List getFace(Facing face) { return null; } diff --git a/client/src/main/java/client/renderer/blockmodel/IBakedModel.java b/client/src/main/java/client/renderer/blockmodel/IBakedModel.java index 15a65980..7310418c 100755 --- a/client/src/main/java/client/renderer/blockmodel/IBakedModel.java +++ b/client/src/main/java/client/renderer/blockmodel/IBakedModel.java @@ -3,7 +3,7 @@ package client.renderer.blockmodel; import java.util.List; import client.renderer.texture.Sprite; -import common.model.Transform; +import common.model.GuiPosition; import common.util.Facing; public interface IBakedModel @@ -18,5 +18,5 @@ public interface IBakedModel Sprite getBaseTexture(); - Transform getTransforms(); + GuiPosition getTransforms(); } diff --git a/client/src/main/java/client/renderer/blockmodel/ModelBakery.java b/client/src/main/java/client/renderer/blockmodel/ModelBakery.java index 13813dc7..2ccb13eb 100755 --- a/client/src/main/java/client/renderer/blockmodel/ModelBakery.java +++ b/client/src/main/java/client/renderer/blockmodel/ModelBakery.java @@ -22,7 +22,7 @@ import common.item.Item; import common.model.Model; import common.model.ModelProvider; import common.model.ModelRotation; -import common.model.Transform; +import common.model.GuiPosition; import common.util.Facing; import common.util.Pair; import common.world.State; @@ -74,7 +74,7 @@ public abstract class ModelBakery if(extra != null) { for(String sprite : extra) { loc = "item/" + sprite; - models.put(loc, new ModelBlock(Transform.IDENTITY, sprite)); + models.put(loc, new ModelBlock(GuiPosition.NORMAL, sprite)); itemLocations.add(loc); } } @@ -211,16 +211,14 @@ public abstract class ModelBakery private static final ModelBlock getModel(Item item, ModelProvider provider, String name) { ModelBlock model = (ModelBlock)item.getCustomModel(provider, name); if(model != null) - return new ModelBlock(model, item.getCustomTransform()); + return new ModelBlock(model, item.getCustomPosition()); if(item.hasBuiltinModel()) - return new ModelBlock(MODEL_ENTITY, Transform.IDENTITY); + return new ModelBlock(MODEL_ENTITY, GuiPosition.NORMAL); Block block = item.getBlock(); - if(block != null && block.getRenderType() != 3) - return new ModelBlock(MODEL_ENTITY, Transform.IDENTITY); State state = block == null ? null : block.getItemState(); if(state != null) - return new ModelBlock((ModelBlock)state.getBlock().getModel(provider, BlockRegistry.getName(state.getBlock()), state), state.getBlock().getTransform()); - return new ModelBlock(Transform.IDENTITY, item.getTextures(name)); + return new ModelBlock((ModelBlock)state.getBlock().getModel(provider, BlockRegistry.getName(state.getBlock()), state), state.getBlock().getItemPosition()); + return new ModelBlock(GuiPosition.NORMAL, item.getTextures(name)); } private static IBakedModel bakeModel(Map sprites, FaceBakery faceBakery, diff --git a/client/src/main/java/client/renderer/blockmodel/ModelBlock.java b/client/src/main/java/client/renderer/blockmodel/ModelBlock.java index 76fb2635..f819e291 100755 --- a/client/src/main/java/client/renderer/blockmodel/ModelBlock.java +++ b/client/src/main/java/client/renderer/blockmodel/ModelBlock.java @@ -8,7 +8,7 @@ import common.collect.Maps; import common.model.Model; import common.model.ModelProvider; import common.model.ModelRotation; -import common.model.Transform; +import common.model.GuiPosition; import common.util.Facing; import common.util.Vector3f; @@ -27,7 +27,7 @@ public class ModelBlock extends Model { private ModelRotation rotation; private boolean uvLock; - private Transform transform; + private GuiPosition transform; private BlockPart lastPart; private BlockPartFace[] last; @@ -79,13 +79,6 @@ public class ModelBlock extends Model { return this; } - public ModelBlock tint() { - for(BlockPartFace last : this.last) { - last.tint = 0; - } - return this; - } - public ModelBlock rot(int rot) { for(BlockPartFace last : this.last) { last.uv = new BlockFaceUV(last.uv.uvs, rot); @@ -106,29 +99,29 @@ public class ModelBlock extends Model { public ModelBlock(String primary) { - this(null, Lists.newArrayList(), primary != null && primary.indexOf('/') == -1 ? "blocks/" + primary : primary, true, true, Transform.IDENTITY, null); + this(null, Lists.newArrayList(), primary != null && primary.indexOf('/') == -1 ? "blocks/" + primary : primary, true, true, GuiPosition.NORMAL, null); } - public ModelBlock(Transform transform, String ... layers) { + public ModelBlock(GuiPosition transform, String ... layers) { this(ModelBakery.MODEL_GENERATED, ModelBakery.MODEL_GENERATED.elements, layers[0].indexOf('/') == -1 ? "items/" + layers[0] : layers[0], false, false, transform, layers); } - public ModelBlock(ModelBlock parent, Transform transform) { + public ModelBlock(ModelBlock parent, GuiPosition transform) { this(parent, Lists.newArrayList(), parent.getPrimary(), false, true, transform, null); } - public ModelBlock(String primary, Transform transform, String ... layers) { + public ModelBlock(String primary, GuiPosition transform, String ... layers) { this(ModelBakery.MODEL_GENERATED, ModelBakery.MODEL_GENERATED.elements, primary.indexOf('/') == -1 ? "items/" + primary : primary, false, false, transform, layers); } - public ModelBlock(String primary, List elements, Transform transform, String ... layers) { + public ModelBlock(String primary, List elements, GuiPosition transform, String ... layers) { this(null, elements, primary, false, false, transform, layers); } private ModelBlock(ModelBlock parent, List elements, String primary, boolean occlude, boolean gui3d, - Transform transform, String[] layers) { + GuiPosition transform, String[] layers) { for(int z = 0; layers != null && z < layers.length; z++) { layers[z] = layers[z].indexOf('/') == -1 ? "items/" + layers[z] : layers[z]; } @@ -166,7 +159,7 @@ public class ModelBlock extends Model { return this.parent; } - public Transform getTransform() { + public GuiPosition getTransform() { return this.transform; } diff --git a/client/src/main/java/client/renderer/blockmodel/ModelManager.java b/client/src/main/java/client/renderer/blockmodel/ModelManager.java index 95e80ac7..0d20ab73 100755 --- a/client/src/main/java/client/renderer/blockmodel/ModelManager.java +++ b/client/src/main/java/client/renderer/blockmodel/ModelManager.java @@ -8,6 +8,8 @@ import java.util.Set; import client.renderer.texture.Sprite; import client.renderer.texture.TextureMap; import common.block.Block; +import common.block.liquid.BlockDynamicLiquid; +import common.block.liquid.BlockLiquid; import common.collect.Maps; import common.init.BlockRegistry; import common.properties.Property; @@ -74,11 +76,9 @@ public class ModelManager Block block = state.getBlock(); IBakedModel model = this.getModelForState(state); - if (model == null || model == this.defaultModel) + if ((model == null || model == this.defaultModel) && block.getMaterial().isLiquid()) { - String tex = block.getFallbackTexture(); - if(tex != null) - return this.texMap.getAtlasSprite("blocks/" + tex); + return this.texMap.getAtlasSprite("blocks/" + BlockRegistry.getName(block instanceof BlockDynamicLiquid liquid ? liquid.getStaticBlock() : block) + "_still"); } if (model == null) diff --git a/client/src/main/java/client/renderer/entity/RenderItem.java b/client/src/main/java/client/renderer/entity/RenderItem.java index d31bd898..2ec89c49 100755 --- a/client/src/main/java/client/renderer/entity/RenderItem.java +++ b/client/src/main/java/client/renderer/entity/RenderItem.java @@ -23,7 +23,7 @@ import common.item.ItemStack; import common.item.WieldType; import common.item.material.ItemArmor; import common.item.material.ItemHorseArmor; -import common.model.Transform; +import common.model.GuiPosition; import common.util.Facing; import common.util.Vec3i; @@ -331,8 +331,8 @@ public class RenderItem GlState.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GlState.color(1.0F, 1.0F, 1.0F, 1.0F); this.setupGuiTransform(x, y, ibakedmodel.isGui3d()); - Transform vec = ibakedmodel.getTransforms(); - if(vec != Transform.IDENTITY) { + GuiPosition vec = ibakedmodel.getTransforms(); + if(vec != GuiPosition.NORMAL) { GL11.glTranslatef(vec.translationX(), vec.translationY(), vec.translationZ()); GL11.glRotatef(vec.rotationY(), 0.0F, 1.0F, 0.0F); GL11.glRotatef(vec.rotationX(), 1.0F, 0.0F, 0.0F); diff --git a/client/src/main/java/client/renderer/entity/RenderItemEntity.java b/client/src/main/java/client/renderer/entity/RenderItemEntity.java index 1606717c..3a6d29e5 100755 --- a/client/src/main/java/client/renderer/entity/RenderItemEntity.java +++ b/client/src/main/java/client/renderer/entity/RenderItemEntity.java @@ -7,7 +7,7 @@ import client.renderer.texture.TextureMap; import common.entity.Entity; import common.item.Item; import common.item.ItemStack; -import common.model.Transform; +import common.model.GuiPosition; public class RenderItemEntity extends Render diff --git a/client/src/main/java/client/renderer/layers/LayerHeldItem.java b/client/src/main/java/client/renderer/layers/LayerHeldItem.java index 18545f22..250f5e69 100755 --- a/client/src/main/java/client/renderer/layers/LayerHeldItem.java +++ b/client/src/main/java/client/renderer/layers/LayerHeldItem.java @@ -10,7 +10,7 @@ import common.entity.types.EntityLiving; import common.init.Items; import common.item.Item; import common.item.ItemStack; -import common.model.Transform; +import common.model.GuiPosition; public class LayerHeldItem implements LayerRenderer { diff --git a/client/src/main/java/client/renderer/texture/ColormapLoader.java b/client/src/main/java/client/renderer/texture/ColormapLoader.java deleted file mode 100644 index 96ff88c2..00000000 --- a/client/src/main/java/client/renderer/texture/ColormapLoader.java +++ /dev/null @@ -1,27 +0,0 @@ -package client.renderer.texture; - -import java.awt.image.BufferedImage; - -import client.util.FileUtils; -import common.color.Colorizer; - -public abstract class ColormapLoader { - private static final String GRASS_TEX = "textures/world/grass.png"; - private static final String FOLIAGE_TEX = "textures/world/foliage.png"; - - public static void reload() { - BufferedImage img; - try { - img = TextureUtil.readImage(FileUtils.getResource(GRASS_TEX)); - img.getRGB(0, 0, 256, 256, Colorizer.getGrassMap(), 0, 256); - } - catch(Exception e) { - } - try { - img = TextureUtil.readImage(FileUtils.getResource(FOLIAGE_TEX)); - img.getRGB(0, 0, 256, 256, Colorizer.getFoliageMap(), 0, 256); - } - catch(Exception e) { - } - } -} diff --git a/client/src/main/java/client/renderer/texture/Sprite.java b/client/src/main/java/client/renderer/texture/Sprite.java index 16118d05..135eafb5 100755 --- a/client/src/main/java/client/renderer/texture/Sprite.java +++ b/client/src/main/java/client/renderer/texture/Sprite.java @@ -4,6 +4,7 @@ import java.awt.image.BufferedImage; import java.io.IOException; import java.util.List; +import client.renderer.texture.TextureTicked.TextureCreator; import common.collect.Lists; public class Sprite @@ -197,15 +198,10 @@ public class Sprite } } - public void loadSprite(Class tex) + public void loadSprite(TextureCreator tex) { this.resetSprite(); - try { - this.tickedTexture = tex.getConstructor().newInstance(); - } - catch(Exception e) { - throw new RuntimeException(e); - } + this.tickedTexture = tex.create(); this.height = this.width = this.tickedTexture.getSize(); int[] aint = new int[this.height * this.width]; this.framesTextureData.add(aint); diff --git a/client/src/main/java/client/renderer/texture/TextureMap.java b/client/src/main/java/client/renderer/texture/TextureMap.java index 77f65bc1..eaf5450b 100755 --- a/client/src/main/java/client/renderer/texture/TextureMap.java +++ b/client/src/main/java/client/renderer/texture/TextureMap.java @@ -10,6 +10,7 @@ import java.util.Map.Entry; import client.init.RenderRegistry; import client.renderer.GlState; +import client.renderer.texture.TextureTicked.TextureCreator; import client.util.FileUtils; import common.block.Block; import common.collect.Lists; @@ -26,7 +27,7 @@ public class TextureMap extends Texture private final List listAnimatedSprites; private final Map mapRegisteredSprites; private final Map mapUploadedSprites; - private final Map> tickedTextures; + private final Map tickedTextures; private final Map animTextures; private final Sprite missingImage; @@ -35,11 +36,11 @@ public class TextureMap extends Texture this.listAnimatedSprites = Lists.newArrayList(); this.mapRegisteredSprites = Maps.newHashMap(); this.mapUploadedSprites = Maps.newHashMap(); - this.tickedTextures = Maps.>newHashMap(); + this.tickedTextures = Maps.newHashMap(); this.animTextures = Maps.newHashMap(); this.missingImage = new Sprite(MISSING); Map map = Maps.newHashMap(); - Map> anim = Maps.newHashMap(); + Map anim = Maps.newHashMap(); RenderRegistry.registerAnimations(anim); for(Block block : BlockRegistry.blocks()) { block.getAnimatedTextures(map); @@ -49,7 +50,7 @@ public class TextureMap extends Texture this.animTextures.put("blocks/" + entry.getKey(), (Integer)entry.getValue()); } else { - Class clazz = anim.get((TextureAnimation)entry.getValue()); + TextureCreator clazz = anim.get((TextureAnimation)entry.getValue()); if(clazz == null) throw new RuntimeException("Animation '" + entry.getValue() + "' existiert nicht"); this.tickedTextures.put("blocks/" + entry.getKey(), clazz); @@ -97,7 +98,7 @@ public class TextureMap extends Texture try { - Class animationmetadatasection = this.tickedTextures.get(textureatlassprite.getIconName()); + TextureCreator animationmetadatasection = this.tickedTextures.get(textureatlassprite.getIconName()); if(animationmetadatasection != null) { textureatlassprite.loadSprite(animationmetadatasection); diff --git a/client/src/main/java/client/renderer/texture/TextureTicked.java b/client/src/main/java/client/renderer/texture/TextureTicked.java index b2f0fa68..aab29f36 100755 --- a/client/src/main/java/client/renderer/texture/TextureTicked.java +++ b/client/src/main/java/client/renderer/texture/TextureTicked.java @@ -1,6 +1,10 @@ package client.renderer.texture; public abstract class TextureTicked { + public static interface TextureCreator { + TextureTicked create(); + } + public abstract void renderStep(int[] data); public int getSize() { diff --git a/client/src/main/java/client/renderer/ticked/TextureFlamesFX1.java b/client/src/main/java/client/renderer/ticked/TextureFlame.java similarity index 68% rename from client/src/main/java/client/renderer/ticked/TextureFlamesFX1.java rename to client/src/main/java/client/renderer/ticked/TextureFlame.java index 470957bc..1f034f1a 100755 --- a/client/src/main/java/client/renderer/ticked/TextureFlamesFX1.java +++ b/client/src/main/java/client/renderer/ticked/TextureFlame.java @@ -3,20 +3,22 @@ package client.renderer.ticked; import client.renderer.texture.TextureTicked; -public class TextureFlamesFX1 extends TextureTicked +public class TextureFlame extends TextureTicked { - private final boolean mono; + private final int color; - public TextureFlamesFX1(boolean mono) + public TextureFlame(int color, int pre) { field_1133_g = new float[320]; field_1132_h = new float[320]; - this.mono = mono; + this.color = color; + if(pre > 0) { + int[] tex = new int[256]; + for(int z = 0; z < pre; z++) { + this.renderStep(tex); + } + } } - - public TextureFlamesFX1() { - this(false); - } public void renderStep(int textureData[]) { @@ -65,13 +67,13 @@ public class TextureFlamesFX1 extends TextureTicked f = 0.0F; } float f2 = f; - int j1 = (int)(f2 * 155F + 100F); - int l1 = (int)(f2 * f2 * 255F); - int j2 = (int)(f2 * f2 * f2 * f2 * f2 * f2 * f2 * f2 * f2 * f2 * 255F); - int c = 255; + int r = (int)(f2 * 155F + 100F); + int g = (int)(f2 * f2 * 255F); + int b = (int)(f2 * f2 * f2 * f2 * f2 * f2 * f2 * f2 * f2 * f2 * 255F); + int a = 255; if(f2 < 0.5F) { - c = 0; + a = 0; } f2 = (f2 - 0.5F) * 2.0F; // if(flag) @@ -83,13 +85,14 @@ public class TextureFlamesFX1 extends TextureTicked // l1 = i3; // j2 = j3; // } - if(this.mono) { - j2 = (j1 + l1 + j2) / 3; - textureData[k] = (c << 24) | (j2 << 16) | (j2 << 8) | j2; + if(this.color != 0xffffffff) { + b = (r + g + b) / 3; + r = (b * ((this.color >> 16) & 0xff)) / 255; + g = (b * ((this.color >> 8) & 0xff)) / 255; + b = (b * (this.color & 0xff)) / 255; + a = (a * ((this.color >> 24) & 0xff)) / 255; } - else { - textureData[k] = (c << 24) | (j1 << 16) | (l1 << 8) | j2; - } + textureData[k] = (a << 24) | (r << 16) | (g << 8) | b; } } diff --git a/client/src/main/java/client/renderer/ticked/TextureFlamesFX2.java b/client/src/main/java/client/renderer/ticked/TextureFlamesFX2.java deleted file mode 100755 index 89ede386..00000000 --- a/client/src/main/java/client/renderer/ticked/TextureFlamesFX2.java +++ /dev/null @@ -1,17 +0,0 @@ -package client.renderer.ticked; - -public class TextureFlamesFX2 extends TextureFlamesFX1 { - public TextureFlamesFX2(boolean mono) - { - super(mono); - int[] tex = new int[256]; - for(int z = 0; z < 160; z++) { - this.renderStep(tex); - } - } - - public TextureFlamesFX2() - { - this(false); - } -} diff --git a/client/src/main/java/client/renderer/ticked/TextureFlamesFXMono1.java b/client/src/main/java/client/renderer/ticked/TextureFlamesFXMono1.java deleted file mode 100644 index df13b2a8..00000000 --- a/client/src/main/java/client/renderer/ticked/TextureFlamesFXMono1.java +++ /dev/null @@ -1,7 +0,0 @@ -package client.renderer.ticked; - -public class TextureFlamesFXMono1 extends TextureFlamesFX1 { - public TextureFlamesFXMono1() { - super(true); - } -} diff --git a/client/src/main/java/client/renderer/ticked/TextureFlamesFXMono2.java b/client/src/main/java/client/renderer/ticked/TextureFlamesFXMono2.java deleted file mode 100644 index 2c4a094f..00000000 --- a/client/src/main/java/client/renderer/ticked/TextureFlamesFXMono2.java +++ /dev/null @@ -1,7 +0,0 @@ -package client.renderer.ticked; - -public class TextureFlamesFXMono2 extends TextureFlamesFX2 { - public TextureFlamesFXMono2() { - super(true); - } -} diff --git a/client/src/main/java/client/renderer/ticked/TextureLavaFX.java b/client/src/main/java/client/renderer/ticked/TextureMagma.java similarity index 94% rename from client/src/main/java/client/renderer/ticked/TextureLavaFX.java rename to client/src/main/java/client/renderer/ticked/TextureMagma.java index af7811d0..780c5fa1 100755 --- a/client/src/main/java/client/renderer/ticked/TextureLavaFX.java +++ b/client/src/main/java/client/renderer/ticked/TextureMagma.java @@ -3,10 +3,9 @@ package client.renderer.ticked; import client.renderer.texture.TextureTicked; import common.util.ExtMath; -public class TextureLavaFX extends TextureTicked +public class TextureMagma extends TextureTicked { - - public TextureLavaFX() + public TextureMagma() { field_1147_g = new float[256]; field_1146_h = new float[256]; diff --git a/client/src/main/java/client/renderer/ticked/TextureLavaFlowFX.java b/client/src/main/java/client/renderer/ticked/TextureMagmaFlow.java similarity index 94% rename from client/src/main/java/client/renderer/ticked/TextureLavaFlowFX.java rename to client/src/main/java/client/renderer/ticked/TextureMagmaFlow.java index 2948f938..9d66a3fd 100755 --- a/client/src/main/java/client/renderer/ticked/TextureLavaFlowFX.java +++ b/client/src/main/java/client/renderer/ticked/TextureMagmaFlow.java @@ -3,10 +3,9 @@ package client.renderer.ticked; import client.renderer.texture.TextureTicked; import common.util.ExtMath; -public class TextureLavaFlowFX extends TextureTicked +public class TextureMagmaFlow extends TextureTicked { - - public TextureLavaFlowFX() + public TextureMagmaFlow() { field_1143_g = new float[256]; field_1142_h = new float[256]; diff --git a/client/src/main/java/client/renderer/ticked/TextureWaterFX.java b/client/src/main/java/client/renderer/ticked/TextureWater.java similarity index 80% rename from client/src/main/java/client/renderer/ticked/TextureWaterFX.java rename to client/src/main/java/client/renderer/ticked/TextureWater.java index 7deb1c2f..85e9a1cf 100755 --- a/client/src/main/java/client/renderer/ticked/TextureWaterFX.java +++ b/client/src/main/java/client/renderer/ticked/TextureWater.java @@ -3,11 +3,13 @@ package client.renderer.ticked; import client.renderer.texture.TextureTicked; -public class TextureWaterFX extends TextureTicked -{ +public class TextureWater extends TextureTicked +{ + private final int color; - public TextureWaterFX() - { + public TextureWater(int color) + { + this.color = color; field_1158_g = new float[256]; field_1157_h = new float[256]; field_1156_i = new float[256]; @@ -72,15 +74,13 @@ public class TextureWaterFX extends TextureTicked int g = (int)(50F + f2 * 64F); int b = 255; int a = (int)(146F + f2 * 50F); -// if(flag) -// { -// int i3 = (l1 * 30 + j2 * 59 + k2 * 11) / 100; -// int j3 = (l1 * 30 + j2 * 70) / 100; -// int k3 = (l1 * 30 + k2 * 70) / 100; -// l1 = i3; -// j2 = j3; -// k2 = k3; -// } + if(this.color != 0xffffffff) + { + r = (r * ((this.color >> 16) & 0xff)) / 255; + g = (g * ((this.color >> 8) & 0xff)) / 255; + b = (b * (this.color & 0xff)) / 255; + a = (a * ((this.color >> 24) & 0xff)) / 255; + } textureData[i1] = (a << 24) | (r << 16) | (g << 8) | b; } diff --git a/client/src/main/java/client/renderer/ticked/TextureWaterFlowFX.java b/client/src/main/java/client/renderer/ticked/TextureWaterFlow.java similarity index 82% rename from client/src/main/java/client/renderer/ticked/TextureWaterFlowFX.java rename to client/src/main/java/client/renderer/ticked/TextureWaterFlow.java index b28f2c18..3bbf1d1a 100755 --- a/client/src/main/java/client/renderer/ticked/TextureWaterFlowFX.java +++ b/client/src/main/java/client/renderer/ticked/TextureWaterFlow.java @@ -3,11 +3,13 @@ package client.renderer.ticked; import client.renderer.texture.TextureTicked; -public class TextureWaterFlowFX extends TextureTicked -{ +public class TextureWaterFlow extends TextureTicked +{ + private final int color; - public TextureWaterFlowFX() - { + public TextureWaterFlow(int color) + { + this.color = color; field_1138_g = new float[256]; field_1137_h = new float[256]; field_1136_i = new float[256]; @@ -71,16 +73,14 @@ public class TextureWaterFlowFX extends TextureTicked int r = (int)(32F + v * 32F); int g = (int)(50F + v * 64F); int b = 255; - int a = (int)(146F + v * 50F); -// if(flag) -// { -// int i3 = (l1 * 30 + j2 * 59 + k2 * 11) / 100; -// int j3 = (l1 * 30 + j2 * 70) / 100; -// int k3 = (l1 * 30 + k2 * 70) / 100; -// l1 = i3; -// j2 = j3; -// k2 = k3; -// } + int a = (int)(146F + v * 50F); + if(this.color != 0xffffffff) + { + r = (r * ((this.color >> 16) & 0xff)) / 255; + g = (g * ((this.color >> 8) & 0xff)) / 255; + b = (b * (this.color & 0xff)) / 255; + a = (a * ((this.color >> 24) & 0xff)) / 255; + } textureData[(i1 & 0x0f) | ((i1 & 0xf0) * 2)] = textureData[((i1 & 0x0f) + 16) | ((i1 & 0xf0) * 2)] = textureData[(i1 & 0x0f) | (((i1 & 0xf0) + 256) * 2)] = textureData[((i1 & 0x0f) + 16) | (((i1 & 0xf0) + 256) * 2)] = (a << 24) | (r << 16) | (g << 8) | b; diff --git a/client/src/main/resources/textures/blocks/acacia_leaves_spring.png b/client/src/main/resources/textures/blocks/acacia_leaves_spring.png index d54eb17d4d1e7755e291ae2fc54a24dd030a3b88..f4505a150ba6e8dd1e245feddce63b69c39a1916 100755 GIT binary patch literal 6069 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 EZxJFT7XSbN diff --git a/client/src/main/resources/textures/blocks/arcane_portal.png b/client/src/main/resources/textures/blocks/arcane_portal.png new file mode 100755 index 0000000000000000000000000000000000000000..ba59c15f5612314563f102ad3aa62c7197007bfc GIT binary patch literal 26910 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 literal 0 HcmV?d00001 diff --git a/client/src/main/resources/textures/blocks/birch_leaves_spring.png b/client/src/main/resources/textures/blocks/birch_leaves_spring.png index a6773aff74a7f60366d6f277245cf26afc4f2857..7e7ba33ea06c48211ff234a486f916da9198618d 100755 GIT binary patch literal 6171 zcmeHKc{G%58y}QCd4;HCjFhF>m@$i;v1MOEiHM zOl+O(=OIOcC{#IQ)wAMG=$&Q{%?@Uidz$_0EY^xZjbRh`YJ<5?yiBtR!6U6@ltEAT z3m*?CB$TO?cjfNzJ+b8ZM)lXKwN1yPZcr0AXFlJx|BxFQ(6gp0!7W;{w^ZiM&Qpuh zn$`Es)*lUA(|2lLf;8;f@@(m%7weBp51o->j?LiHC%zbPrDjXtKj+1Mu(?I(|GdUl z**mXX2|9f!R##lr+l3=xI1qHZcg1j^Xxwc7nHi6hj}$iEOg`T2T4g&n6ge61HBlX7 znw>p1lRSC*ujIwm&4T6>vC+HNnt7e)4Bp?Id3)vA%g}aNz3q0KQ1|>Ko#&D>E0T`n zx0_$48GIpe>+2W$iI*4^p@Oe0=^0Cy+!IvwGPZoY>Wcozh`xP&My`c+OlPLo zNNSfwJ!{%AMjXv~voh@M6~q{^vW->xL}lI5xbxi>88`K=eaY&nFHb+PkC)E&vp|mj z)$VF_Bt@@M5sR^F1F9SUbU(bQe+wGasvl_NtqJc@X0)N&ypy@iZWU_^W7tAhyUtE zSv%5(g9hT3O8znOH*#00tSUZAIfy=;p?OCkC{NMdQD(L56rPGqHv39M3O!?z1HT+gwjOnM<8~*P6P*rKZKNY8`p|NdzNk(&S)Oh&z4pAMx z5q0CR@u!6LU=f2u)x|R}Q|~KwZOy)0q=T!;Ro0^Qx>xp^RA=^LA2#thfs1y^yla1F z_}(hyaM`qf1+_NpYTe34$V9N!`b?6hx*7K4aOF+2RR&KgG-Y#IÐ7E75{l*{Bav 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 YsXbox9$%P8!7+!}TRW3VE&ccX3!`_+(*OVf delta 474 zcmV<00VV#MF!KYDBYy$9Nkl2%cg`~C7a+39quf4N-bdcBI~_22a=8?^TrQiD5!W9^qmc}ULxVP(&BW{Vs*kZMm5TXB zyU}QvBHB(qpH~N!kQ9%{)dvtO1%pAoqtU3|xm->xpU-FJ!g4~PklNV6VzDrl)9JLa z0U8d6B^HZ`CV$@Vcl|h@&*gTzDG27R)oL1FE|&t9P>cY$lgXr5kH);PlX9@5dceHo8EtV%oSUL)wOYpCZnsje*M9)P?|&K{4u{#rYPEXd8*vKGaLyYl z`=kl}03a$Cf&;ikF3;z)Nkof~EkTOKqS=LQ+iGL%=~HwnDhLGdh&UI7M8&Zh0icup ze*ZgGCX+FV00FlY6;CRa(g(yvqFWTxJxwN)x4Fpxct<5@g52}rL6wMq0immpvQ#`= QhX4Qo07*qoM6N<$f(3Hwod5s; diff --git a/client/src/main/resources/textures/blocks/birch_leaves_summer.png b/client/src/main/resources/textures/blocks/birch_leaves_summer.png index 2becfb1afa4bba6a49d1d3e50dfbb99ab35a796e..ff8f66711dd7f99ac710d86cd2d988f1d114d48e 100755 GIT binary patch delta 3003 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 delta 2951 zcmai!c|4SB8^<4$C2K@TjIlJz!3+jt3u8;xV@p|%!3?8e#u)p_po65<*w+}2?bwZq zR6+>DVT6<v9whw@619vOPKs zLL?EeI6MYIjv!(nm~b2x0K%VEIpc=p6!=&J$4Tt+GU=~soo6|Nw=V_?hEBXFPLa5^ z^vFM8&f-AM&cZwNPKp?6IW@yslmuZIDxFYSwceztgdiT_-GL)?=M*tUemVk5T6Jw? z7Zk7j`Nxrs=01w$i!m`z3&EMnzV9_N1MawsBn-QfUs@G)Jvkh8jq|4_$&*R)nwDyY zaWQL#d|d68=T2VLC&QIMXps4a;xcXtTZgI5v(~^2hxYnFJA1@tmx=wDD!t&RqBn zJ8^}AI1AO1)CTtcX`SQ{(JQ&UqKehT4@Xm7?0cM^mNq{g8MX7a*3iN;eYSH5ZH;60 zy;9AM_F;J~?+Ux}Bf&%GE+ib$+ukpC6;WT*WOv@2AKc9XYq*qIcRVW*6Y!T6K)1wL zDCnsQcMQf-AYdqHXb`E|Ae7sl^sJ)~np)^7!i-Ts@=8P@4`vqZJpmknMf z7|8fS$rO;bdZBCg`RR2IdU}m;yh_Y#5k~e|2^7A{_wq^;Q-7|0@T`{?aiwXnJ(E|v z5B1BE=+m{q>?)1i;iGA#PhSbN)_-2isLx7}%#filgYL#FOL|B#3sFpr7z5Mr?CQF= z6_;)}ioZQX;mmTW8Tf*PrK?g7NpGn7vJSqi^DMnta<*DKy{fm^$+yN5cZI{yfoj-w z9no^HRGI5k%JoxiW#tlkghE|fyA$rb9yY*4W-c*gd|a5{AD zj3vc^nSMv<0NkbExq2pD(_LL#}~r-xP)da^xxCX!@7*3XxgjGC4LTchV+|w7RquT0om7*c~#@X{oH^W`LKkh z^bZzA1oO>z$f3VJ_A!8PHjFy8KURT=4+;K5 z6&S1%5{%h<^;L`a!NPWBFjW;e^(SsEDw-QkeaoFJuMSsLhr>0n$_S(vS{Z>=*HA{o zH4w^JH7pvdiNtuJH8iPNJa$wNufBkqnkrHYu7yxXXliL{QLTB!C6KZ_5D3J_TgQw* z3PA4`jSE2gVqnBTUn+$cLOHRwtM{KoI#vX4G#N(-G$vutWQ@<(O^6=J2djfZ`@()_ zzsB87_qXt0oE-cJVS)ebL;2R|PxcQRBN91`Ksskjvi0)Ec$5FxXwT>G;6I$~F}}E9 zGAY91e^N>QHP)XXmBqV39p#syK=k&;q+_wyIfoD;5s$-=zA4246ZGHS`~&xm{%dOq z|5yGkM)_TCOdv*(aK3(I+pxfYJ^ydO-yN)Q-k8APe?9zLL=Uz%c@s>%fYyG|(APYo zyB`Iom!-K0pt1MN+#vi)wH5_a=C~wwBe|sX z-@LCLk6YV*;`KrBS{DZ-&!%^IxmrnCnfpsQolgI<21MWg0k9etsdA&J>>C^&Hm-7( z6HP9UkB`?RM@1!1EQ!WgLFLBr&i-@>pxlv1|6tOwn99oUP=(i5B3sqe)!VzfFZMAQ z6@`T|%`GkSOG}4@WC{iv8X9OeHa5i`H8i?rJW7V6wzah?yC2%=B?Kh4$70U7q?_J% zMCRG>#DjpqTdp1+9&>Nsf~G!x6iIAnGlU3U9~p5v#K(yV3i^IzAtZI+4YjS!h_Bra ze9e3@R5vFl=k3&#A=%wGGV&~&iL6kP8I8v?I@&`=N2hiiPno09Xt&)|0H}gOkWL;j zO+U3%UJ_jz@7+7Gyu1u-Zg0=b&nFcW6s!xgO-@eU zzH_ILV~Z7?(o^iHc&Kq<;T&UNfDNguOFLVYa#B9EA1f!$r+EJbECGGYeRSerS}#U1 zjpswSTU~uUWhDa_931Q=p0F*KocZ&3zAB&b!K9A+RyuismAU=cFFcl|!vPNv*1Khc zrq&{lrkzR(rBDvUR4?cm80;gG$?{oNX27Gat~AUU;O@P9UbiOL{4{fz3n3pF3`Wx^ zi^T#QE1kg7(i5i}i~U*io0~2YS2%@*g-^BIz02+c*`2$aO4rIt{mg2_!>u%R^-~AJ`Y;%5HjDtp#(=`Z!>6XF e-QroyTF5|5*HF%1kUF>#c0Qy?j{Pq*bZr_2NRDZe`!HC7Gdmys-iq=*3(;<;=Vl5 z#nmCJ*jJ4z@QKDZ^5O@xa5~SYp16Cj?``#(*Ws%j?AO~TfcD#%AwrO2$}fjlJ7b0k=VqGMkjK9zn~ zRN}im{Qz;rs89_%5>l@x|K;0SNvo9aq^IX*qQ;hvxZu~!FQ=LwB(Dm)L2m=YL+3;t zBik)zK@VuJ7%!aOSpvp5oTfp%>lvO6PM(vHF?C2D{?rq5R}s=1Wc?`7ucbGTQJh@X?Sy~PhhiBNo?ZATx3ww;3eHI$-PKWQr}=R zcPJ9N`aPJVX(c4TeIrGVBTowmlIhR7_E`XQlha_ik+855n zY|p4JWdCwGFI?yng}E9S>?<5?XXPzrEAFKnID5h>%$Idw24g^g9?)b91(GbMlK=ZKKJ)^zDdiNn?MCE=O7(SEl74fiPYw+n)sQvSvrX%2~Qo7A+0 zX^~1ZQp#t3ro+vISjM&HDS+3v8kTtbp`%-LTkttK=UD8*q{_brCuzkea~2#zY=9P2(^1TwItNbxchB{dPB>E=4Y_`vU07ozC5E}lEr_a&>X#D5&354?@`?Da5-e=}X4i4mZ0kXgN@`9fK zG&7Tt{6zw^79i7-S0WL$cQPg6VB%n6VH9__bY&wGgeT#5GBM*-5tH}_3(zM4G7BKk zftQ)t&CQL;jh)Hf$()&$hlhumg^ihwjS)n_=erq0GrAm}XZ z?MVLcG&Hhz0Sb_jf!>q+*Zgc9*PR6Fua7 z--eWwmRI^`k3SHYTiQDO)e8jnzfl4$&Hfv#f1BH%H-9bXUnc_U{!hODM*UxF|BDzz zB`?n_W^e5BXL{0N0%U*2=QXi6wlv}W>yZnFDw+DEJ0FfX!EbL`oqcu#EJ*hht=572*iqw2Q(Wq7DgU+V-7|` zBW^=BHg;B4ZZo#OSeY2}O4vKu8iKad($>)2l-a?~{I3^(0Ou7}k`^FiV`BO579|@) zpc$xx0GXVnos0W_zfiNZHB|)~{y~$KoAb{IJUr}d94zdBzvuiHKMhkSXOJZR;mOLv z#Ln?o_dnah3t9{aSi?VZ3S#hAJ7_JuqE4oUKzk=OdwUxJvOg?H{`CCkYkAOdGBE@i ziWve;K}=cLIC)vPdD&RiSb2C^*+IYbENr|i|3YtXVrk~_|3>}i@R0ETz2#Dt&YPby#9V=Y+-0;ZVJ*K{}9*z zYPb9!M1j-P$kc@0kcZKj+mwxwgU8eqw0{62MgW@;fSc2djl-0U=Pwlg$=%uB4CrR) zWGZY9!V!cONId_-iiGB`jiUW`YBvj05YGQVhxz~hdH`Hp+$P+t07j5l{t<0f6GlTb zQ%*)BBW`vME>-|LfXC?HXZZhRJ%0p%k%gP_{}h0KERmo2j}H8=9pq>JKlb=11V#WZfE|da{mWrApHMt{`^C>{%;OJLh_$M{#W?^2d@9X^}j;ke?|Ns>G}^` z|0@LkSH%C3uK(ZQg8y&#(9{lO)wzM3zswrw2$16lVY>gTI&=ZCH%W7(sE zl_E9nT%;Fsi{xNVYSEwh}ci4w>Ln1$jfVWv5{~T&Ah* zKRw0=i72OI;c$*(UmmUlRO|QMQ{!UTBAf;c&o{ynmh3GRVe~XOJi3nc^N;-vsL5jwpkmf87T?#V7L&PD zOFFw8?+E;se|(AgScG6k3@-VG|2Fr2NW%X~pXJwz^QeZ+8w3EnOD#9=nlJ}1sEjZ^5onx{`9UpCqiJ|eIWFBs1P$Z7~Y_TS!w1{c;=KE+>B6<(AI!UXp% zPzv}|5>o}qi^C03A+e7flggH@|1&iyi5gZCoT3*a_(n}Q%@UZaG!-<}YapS>;8*{f zi=uUO&<#1pnPLQ{w^YOfdbd4qoG}Xx>vqb>MdHnL=twwshi~nLwUZdKSIkmgPoD*U zKulSo#>&E#Q+{pIgsfB1Om6Mby*9$E!|WIQhgP@N$M1335{)Sgd$0<-0*W1+90Oqv zjss%@U_w~f*63Rg$>lj%Y@;;#Z{7Ps)^*Y!qjYtv^XyV8&aIDJc$gAQ-t^M$-C~ah&nhUxN4n6kWdt+v_Wn!4uwy8Dx zmCdHWl;-#H<^smiGJh~SkfZz4J%8#60mZMZbOC}?UHp~JHp)G7yUwTB#Fzp@It%R|hq&c+6 zhameJUaIs`zb@kU-H5T$qEgk6p^(+80$mp%_7DG=sl~5XlZNuLURRgJq{4Yq(ZjTO zf%W!H*+LhsYmN_QEVpqxc7p~shb@G#=ASrJq|~QQWQPkw@uNN}?0T)eh)SW_FA_GM zoP(RoJ-H6MyHYHRN=nzKNC{Em@}hFpsf*XMYSH>_hWfFj+6}yM!;-2dl!FNk4=Q>g z=UAtA8yzP&sZRY4V{vp?3E9(9wht1KK$73vC<%J78Z=N-GShMG_z<)_RnIzA7)VZ6 zHWsjb94E|6=5y??h9RLzscv^UW6f0MN)RKdu01+S5k|znYK(|Datygc zfk+E>xy}3F9iG6i-6M#Nfc-)d7zoJ^K@s6Fbj5)By0pM;{n{p5i$t&NclOEPpzDOA zhtcvntwc6Cr1@D6>S()|OxL_T!H+gNDguI+PbBeM5s!-Ko1ZI^rKN;VT>@ts0KmdH0t^| zbYfw-WV3`-Yk3156GQfH!tHY)yqT%wjPk_D`XDEA5Q}ausa5+Iz^Jb(U+8_GipduZ z#dxK|25=wSi`KFS5nxTkv+REhG}OVO*aHlKb5ky|^XnWfsK_ys2V386NBjXzdt3Q| z`FQD~@;XUs&mnson}znxufq38d$~nxQU&yWd#@cIKA7#x%pk|0!hIp@LF*|M2_Xcq z_cwCN*P1;S779E)U<8&1i%@Rym+|qIvr6RSN0-tc(dGZ1n_bSlGO5WDdqO|7lH)PH z(tjNtc()oLwYE6st74wFQKT=6?o)%11OofJ;_+6K)tHgS1j$;ZKFV>ls8gzM=go5B zY*QZh&>u5Trh#9Mai%m<|Kul+EsEO5GtT~ujoYV*!`*7+Nb0xOBLw|071Lwcw};Rf zx8o_t%j3YWHY+agTww{6OY+}tIB3Wf_*_B#9+C4_>@4(vnCfqUhmI&yW;Aw|1HNEz z6k#Ma0X|K$nR8!$D&O-Ckc89CVp${QiC{LbMPos3XJl$t*MXX`&xB;ASPR0 z97TU-Ka6z9 zrt73FR>;=k8e?(1$9di9IWiL8qiG5&@;IW*$LO&>cQG^w$8DvR7&TU0*drqRE9+tX zrzYrK*B-kpRM?bJd!szejqH7p_(}#vLeDHGl<~x$?_0N zVZv!n2`wmP<_K-n9kdj!rIdXCz5)bNJ|ehc02*gvxyAQehz%Oo9pM%dFt zFaxdpvj~5y(Ph2}lGPDNaZyp+s7v^^?miu57pD-04qOYZKe=y4jL}b;?kGa!Qbkd* zPB9c~;iw%m{`&ORjq+|R0a9UtKwws^P?A(*-mp`Id9)>CLurXC9=Tppu~LA<0#9Eg zDxAm8O@00hdemJ%113)V&~ ze{1|F8sdo*zl{OEh3V{0<&@DXhAbP);}ElArTDI+5Q!AEK0jnSM%5= zPRzd&{u3xcMjl;tM{u{G%M^l{Le0iQlFm_A7?{5&SB+5S)N_{DZ-TZN-5Eb@bQI@q z#A3T#i($=DDY0+v*;q(yU7T=Kprq_Cbavbs+ZWsVZco`A4L1#1m0gdW-wtqn3RiYP z+JpqnH+C|^NBTC8bu1M~geF#&J13ejMR`5NUi}NQSTj7zC~q-y=tL@6bGA>%t~$p( z+?9YJdOX(TnI1dks`~L!sF0$EvivlDMw>(r2dh`?Fs7#=j~6?sn)=FY(0~Fppg%Rj zb9oY8U3tISrUhd$QAC``?qmxF_fe4C&&g3WkXE*A3>nH_q~#Nk%nS9C8=2S1W*a{2 zLrvdO=2o9@6Bv7upVHv>TmcsYEIPys42PgFxDa@(Ld5f`=GN1L7RZ4KJXK^|U9YB1 zPMmAnZN5+QvjZUw1c~Dk6ph^jv6yUNElA6!_eFT{rn$O!zU)&e?)`84({9st{U*M4qZRdD1LCEFlvHnIB?9jep#4K<3JuIf3o2yKC1 zm$$xZBR$u;_7X#9POlgSr@80Uv_eWn2M=7lDuL+NF3QLpR|5UqT1^H!_I#wgi2*>MF)p5Pod~9}f4OkLK;gc;%nR95Q|_QE;5Ot)gv*sF<0T~msSekZ z+Jvi;I7cZK9hP6b4!p@p13WX~pTe+~TMmRn9>P(Gcl^eP-|uk~hhjvNl`|2Gu;4cH zULsm5EF%(*>c3AD*%{Qte0pGP8K%*mo7MnXbkMsBxgx<=oJEHRC*j_uaW#GEU$^?e z4OybaXqFoTaB^A4vU|*?|UQqWHRd2(@?_y<4?% zw~}`5Vlwap;yA}X927+f@dC!9E>A#C0RPIQ5hu`9jyHqtjRfLlum|6>=`Cc{a$r*@ za!nG-*`M_gkWT|6_C^_r@1MD4+H>}qw9v{DKe~!>9wG)(gzRewSMBeHf^itJe9Gg> zPhns}XmFc1Z9T(6S2IH2)R>XoX@`DyUE(c?hElZP&@5z06@l|^ww8e`2RP*If}K`zGQE-nA8T9809HbdUa|6+R=U(S6$LN?5c#<)ndKA*&k3+Tk~Pv%ApO$BfUmvO4lok}&yR5;H_OT6Swr z&V^t_QPW7j+WIYU787eW@ z22c!}iQ;Fb`QkM`09V-Y3rY5nGY_DFAlB-S+ zMiXum1GmM34kJ#nNhq879nkSq)n}t$;_v-5XKV;A$hyUHVHjKNEMw3Q?`wbZLTtgV zwb7O?VJupU*3NwF4cm+k<+GaF4cKnUKStl8$Kj?e&BjmfNwd%wyl7qg;rCW`6fMo1 z6uTdbyZSAu_?#=ef0lM=E?y1*uV)dO1^?F!qf1VlBs419LOzeVj&IaT@^COfCJCZ6;__M(&iAk z3=Q)Z&HGJ5v|q5;@Yq3``D;uShJDi;j$Sn>vsn}~a%K!Y*B2-e=!c#-10u9>-6X~H zHbT6mtK{-We}D#$I2Wl;2FphR9zq=;2ATqI3lkYZ_Fy9@hB4OHJ-ry^4Kg0HE{x)%w^f&`l zbVR2JAAcMit^BFS&%O5FoHc+xttN83>yBF7b-0sAUZm3=J-6ONy!`Q}nA4C1#LPfP zNHjDG*2^)<$m6eU^ra1qr=S2!v{dMaz%Fj0FXnOyVGb6Da-y|kG_D^ml@{N~)v;W* zx1L~BA@n58C%l^pP~`n^|x4=3=z~n*z`P#Px+#n zK)?KK!A22=Fw8^|Hc)^OU4sWwmXc&3qwTfHP4efr5=#y0t8byl3$wuz)`4@-yV7KZ zvHPHHgUP2qswm>QZTGIPE}0)5$N=eW_{00CQ4sEoG}%Z+wib$bdSYTJU=W-4+U0ZL zU2>T&3Ca?ezw?&SdVs?R+GIUNZhk?b+<1vh{3{!Xtun+ySu8CYl)J~c#4>@l6e1rh zP7i>vSw#ZS54GgQw$kz>tG`1Enoy#{;_VmD3rN)OwrkK@Fh@K z(i}fsPdxDp8!>$nI?POr^tn-~Q^>&j{g|py-pOrEEZ)SIkJd z=lU~a3*3i2Cc492hoCMl%DLR4aqAGrT$=EQ^RrJYpSCkaGM@vaaP=Dx?ijfjCKy&Did3Y8NK$DF&bKMasIr5C zu0in}4hftj*=Qz+7Zb4rxS*Hr*Pf)IN%3YpJuZ$k2~E)iwYgbn5~qlxinY&?oG{i6 z1b5UwL0;NI#__|H1=M z5Y@p>ij~RTO83M;*Y|7!|0M2H;Wf~4f~Bwww!k@7+6a~OMa9;;wK)RL95;)W_6z@t zTZ*o}yL(rHi=#$^qoXPc^9jhmEr#ZzNR^k`KN532-=L9Q$eckg%B4M=5Lvs2JN%Xu znz^+&KpZPw4TiU*A@|Ye$8WRVi-9Q8RJRW2qz7U4C=b2 zyv9f2wz0Uw%W7`gOy$s!x($BbXSMVcOxs;3ei7K8RMxS5c>y6qp|Ixa4WwU@H`0Y0>RRe|L6M?Ug;0693=M3Xvysk~Qdu$lA2p^QT_5lPxOMew;FMv#vpdv9L{x zo^g&k(}}d#=Dr5B&8EC@-4*3wlBt9F9t6e)Rh_$a3br3@tQc}18DmUBvzrn7VT_S9 zLZOC|E+2vyQqrmTuKTGS+mC}kHAyN|Q>s7uWcG>G#GdO^AYJ6+=;zedqPQuHWT{EH zFHW8?&O1ATOc!pDwdQPLF+xNGCpq2ganJ$X6kd3YRL+2z#_=isYSxj;`7nnuZxwj z=X;oi@E?kBA4SF7E93Mfd`}LP29-7+H^R>KM*?PW3-=D=OdQE-yNz6iFZBF{P~lij zSgss=U?pK5!Xin#)5s`yJ<|(A%^Pok_+N(<3&t?s2%s9=Gq6Cx<+Q!VMlv^7Yq*XXEva)3`BB zy~(SZN_z;@b#ep9W@DlwL>=QS%3?{+E+3bZ!okziR4ZrnqL0rmDQSe!x$i|UR|-tE zn4i=TO^EMLrN?FuAm`|hl4gcQT!RZb-s~qMOGUwL{bk~awb2KoYKmD6k-H}sLO3sY z^^+h05kI{w_c0s!kSeN3#Q5l3yA!u?eiFCyj0bz7^^K?aH~+;;dH=z&??sUR>d*7G z2JE(V#|!8f2ggu|%{@%|=qfMPGJT}5bBGs*Ax}3lofNeRFstr|({LNqjbO&7U(cmj zbiCA(A1?OMa}{=;Qyoe?)t~L;JV`M@<_6{~03@xdk(HkA)kcd0lzG^CNVri0Q7XjD z=xsi0Lny6}Isp#!Wdgu6$+b12p}Kw!Q5YQ7%Zi?*IFe=)!OuUniHGzFf<^~5hmEWw zZ;^@?oxLI8J|rTa_ya7bT22DJr^rX<(od_+^O|^)y~s*oAV}$sTKy{Tm@BTX zGbg=b>=bGQm!X{lE%jCcQdwFA-8N0Dk0`g-Ai5grKCh#wQJ{*D@CUczB z?ajN7e9*R!9B9X9vn&)}C9qwrD*MaLamKo8EvtS(`*yTo5h-lVe;ecjiGJPDMadQ$ z2A?Xq&s!#+v|Y5v8QsGb&m|x*m%1uKq1DPt7-g7mY1(Y=0(ph_XhlSJN8948%1%2; zl2EzYEI!7Epb*DqNF+UMC~S6zx&SXBo}99BBeF=H4@@Z$+ecb{`w7QlUEO-q4x|rc zf%Pc-pyZ7vlU-TdTii~i!~&_W)421xP>oH0fg6!N$$KZt`=!`jiPBWSOhfLXhx=jB z6n-G9a}h#dpLjF*w6yH;O?x>Pw((r}iN5hLyM!wR8~lYNr#u!065~85Bgc35E2avc zU0aKH^$xxoJuth{hk%uUzQF#6i?~mclt<6*OXuaq@Kaykt&2UiH4auw)1^NEOa0sc zdw+2QK*G?#`LWj2kKe(w%<_tJnVGNwpY0>mgQKht!BE3dMb;9QPRFr&<^zF{uYlqX zp!gvjwd4Nc1;fK}<7O!@79F>QHZhj^XLKySm7Ft~&aJ~5esU5s7}1%U@shy6LKq3s z2bJKf0mS_+udv!cyYU+%sVkTtgnDlC3qIjDS!_k}x<}a~Xcx61qrR z>HNsh|61BYjYH0lJQXk};vaGNnP;&c?hCY~Oi93i^yT~q;W7n1HuK&;T$Dp}ld#`%iH z`Q$1uqerKq7qa3(^@aDYUm*>s0Hb~rQq;VHafSu~&CECfO?aPH_d$}?A3`)q^i)yn zEi@B7(N)df$6IBf*e53D#C`(P1a}=s4?*uPbvgDIh(_D>r2;JuZNvZ$PyA<%R}3iq zVl!xmd?;>lY?)r}mZHv0`;R#&1d8aTI}_dyInEK$pPIaokE6CSM39)$eCmGNb=jC5 z26ZjzFxksm>8J==%N579zXUYCx8z$x$E@ek2S-UzENlSacjr0e{fSL>o{>#t*vd+x zd47?Qk)#Ggfo!vNu^^1dIqIwE{sW#wL+Nkl02`mylJBDmJ05ZXSI5MpO}U$PqlIs3 z(fzZ8Sujx|Wg+tfL)kKAryym3w>p{@<^8fTnx#L-^TXr!kL_PPg>hZE17pFV8Oceq z#C|6mVbsYZAyf+oiDEED-3Rji+%jR*Xq$5R*AaW)Pqsu6qIr}Q_H^Yj?&+p3^HAYT+V zeT9&!F;dN5J-PSW;#O5TeR<0=71g2YO@yw!B%c_89PombOje^dty${9=j8ZhuI~r! zOO!b7nTd+Xkac=+l5}}Mk8%$i^MztMGQ7$;LbFgQx32;Gt)Pgfa#651$T+$bC6g`S z0xHIRw~;oE5OI>S8F z!zDs_N-DoR?l@Az?IldNK?Js*Ht+FG%-Lb4B06KGrG*00>E_^}GKrelM=+3`5aC&! zsgKVXYqA_+1q!0$VC`TIWNy)*Ruv6_0!R|v^jy{ZgL;hd0op9jtmNy(h~{1nY(GOY zjSe@X85$0Erwq!bg8Le1d+1RXW>UE*)54=(CUuJBUop;w3J}-va!60Z7sispMVp5 zo`EZz+HEF2A^!YkIli+U22`8DL_ef0s1ulr6}&!O&fY$U=Y;!U2BTUY=1?{j9V=8> zq5-Q=-Psygl_%&5?C&A8S+rL)iACR3#Px%_c=^f(O4hAt^Uh405$Tu3`OdKaZvF0E zQIdjPPJfgi$(PFVG{_@znY=7}nfA<#rw24>$!0cUVI(0WIP|ASEt@!BC{HhHHDX1& zcvbZFO6s`ST)!ip!Ov#iL6kN_-;_~1xr05tI(c}2-_0Hz0R>FpO8pgbVUWg@Nm}W# z?J;0BtGzvW7lhmU(TWzZMv_d3&|th`p3`}8XnTIGUAiRdRQV=IJ%(3zq^K#Hldm__ z1@|3=xPppV^(7K53xT0UEBN;9Q*!eBhfO!AOzw_y1C1VLoD*uVAMiONewy1eIg@+FtnvW+iWMe z^KuvV>-@V=)+uDFTvNY^@`-^LSaXP}d=MB$HO-H-TaiGu_`x^F-B)o0E1->>6m4kgz*(pa8KCGA9R zy{dr5(~aaILjsBue8_$^za=&RWdlQ-tp(nzKc0~Y_G6CAnfbj@0!C6TZnC*kK=WM= z*gi+!EJj@CsQbo?FuCTD;ZSdSzbm)LCu`1OONn~r)-HI)^G1g@^>tAZ-1o=6#VjGW zTgUaSW?(7AOWG$I&=Iwxu1j&RAm`gBYu}MkyqaT7|&MW6W zSqdhS!D=F85aBmgN6{jE&P5<2u%G&;t!VAUAh8?4!v2735*&{y+tf$BsU0J^C!#p; zu9KJyVhWMB@sxGv2vBBue^(x-32z=6A&Bv{mtpnf&qWUSnxjI4` zPK?$a^zdhQHQ?#d7o@YxAB?5R%eN&Ab`Cfr3|}#569;{I!qZz^Q(e2mP9^3(xMN=@ z@_DICfeM7~%--fA7Xk<%MTv>AD2AD*j8T9x4aI!xFX0OM&Fu( zzAgu|$K0S6F)kAr7>Foq-`=C5YB}p`>}fkNHoF_m=?mK&OI7}9*jQS^jdiP>o{j|P|&$UnP70!WB`Q^ z#gL?__>imJbUU!%E_+9Oq?@C{*L0mP@5GV=wsmV#U;54Ij!q*^xgFN@e>P!3?+*1K z$(B92wZHM?yTiflX)>H4_VY-4gv=9QYN{nKlG zAL#Pct<`I^Se;DPxw9tri$g`h$J0?_avqlB0aV3uA85|=;cuWI^`8MURT6Hp_x)Uz zYx){c_}@*(Z%(1Ft!2$~kJTatKc4(Hm^vsE_vDOT5au>bDiK_9J(B-*Fl{gz&rn{X zL8w>EzhW86X>Qn3R%$E5h5;B)U+wCPo^bc9nCia@6P-&ru>Aj9Kc!+lsLX=*! z0Jeilx4zN|Wi+{n0jf(E@KjO4KxK=yVGbvG5RVAN?=|07;Ce~Oq7XIa)s`bX_eolv zyFkeikD-@+K0EAKe&&0EcA!5%r+YVHu9{Pxom5Zm<2x7tdzqsSHgXQZOehqp%ijC3 z!Swy{1hH9$Y&LZYh3_s$!^Rh%-P5hh#*U>WcTA6flgbAlL)?7uoecFY^(O0+)aHg1 z&Mv4fhViM%_}!!D4Hdl?Vv~1Y{)X~+pYVAd+`Q|ghcc4K|EY8J)clNiBBIYlav^(= z>vdkM4Gr!ad0T`Py>eI7&@*o0CI)jg`EP1c2JXrxD zm;e-&D)3Y(c}S1UF&6O~dTKB5289q8Y=~vcTqJ5ZK3)eja&G{T#)K&m?PSaJq#Srm zy^EEu0`~2pcN1f|kJX8|(E)7v?%o3DV(U&W_t66ykM6k=psJU~SKgbSglC*s*X_qZk{YsH4sw75|= z)(*6s;HhZ%&Hyd4;#eE!0R<<4Ysv_<$I7BGlhb&g~$2@x+AiEME1>dJ_zTK(~gbYR!qLX`M6 zi=xS$#`^g9b+N8sbi_BH9h9v$l;c%}7~rv22c{`bo3(&HK%87)wrUc_Ao41(4pf=aCA{o>nPxS z)$9QNy=flR)^55UiEGwq$~~s`3ipS@!|q%5z9`3SnW)hXCn(s-UOsoRncNVfCQAjZ zYB-*&Gj47S?;8d>imi4~A*j?$juMVTwBsQyh2|okNwPov=DHi~`%ss*odY;$yXx+9 z9q+BaN^5-I+g?40wJ|2m|FHcHTtdNdlBsxiOOAlR&!5M6GaLujn=QlPkK8&?)9(@6Fwo~W0fF^_?9T!Be()F6qA;6`BLm=F zgp-6k9S|!up44FDZ;R-oacpuC<=2)>2cHxW$|F2OC88~ zZn0S_D6(@SxT7li7AKgIYA2gv`}=)ql0$aSjcFYHpm02`?x}%}x8+QXKu7B?)u2Mg z@UbOyz7LO6=7${KQe8e{VW=0zL7k#P4NMEzdruq*z)8@HE@!EXM8}2Kkx3HK-iPu7 zg^1+-30CBD*hS(N)Tt0LPfiz$)zPp>3r}B0o|e3zMdWvG7P)Ih@23v7h)D35-a0wC z>H^*(lVxjt9@0lUvJPoa@uezcG;gI#wh1b$3fNfJBf(G9KmkpIRG1K3!$&;R zq$B?0zD}0!=Zd=ey%@~z-;3hu)HlsV#ezn_g-uEkI}FJR0t{guYClZ1=Fv^`Rtxyh zGgcTDDP+&~N5DWK1h7o#HfXLt%A8Jr+nquh@ff;iApe2@OKoMz2J6LUR8aTb92VLd}4AgyR%#*i@&8(e5h(8yptrtJ5@hYBj!)s@zJ3ip#hz zIl80??LNt?$|K->3gp0g-8yf5&49tjyuuNkxkDSMkV52{G8iRhWVf=!pCQ4VGEx&C zK2J}5!=~h!Xh%s8}>J} zX?mRCAyH2#nBNc6j%HN9!(0r}tP5UekIGU6*>72U0($xFTZB9OfpMLfm~-A0iW$nWV)l#fk=jetiy}l$&BX>ZLx9Xi3Ykk}ebEpzxV-SgKEK%gYqxBv$*hK7)5*J_%9^sn3Q73UIP! z(QeP-&J5GsQ8VcfbKf}jBsV1ZqoJC}L#Equo}Q^SpE*3~x^Ab|-epKzO;0sbaBO#7y7^$^1{~wg_A4);$Du}r`>eXpdZ<7qe~se((g@Sd zVTe3b>&=wWj3z(KGAKf>?)1x9JF1d5}>8{naZ zU{BA-x2nJgIqzJx<%a8JrbV)sl|&@nC@G)wJzek;6YzAv_4Y&!RVclbRI8APiQ|3| z;OW_5FmB_G)qAdicI7ytATKGgs0 zwfEk;{z83ffQQHMSw_xp7(iFL4CYr76k0`39V~X zOyM=Ky0vu8MB@rEgUjxDXw;xOt}a8CPM3#68azyWK=&zarg9CBBdtpk9VbgKyS=Hzo0-uQX^({% zz}v8miN+Xr0~*)E%qTq~P@=l!m9BGh6B&s`hR$!$U~zh0vDMo$>1;NPdhKnflLa}m z0c&okFD)2Rlc=gVF~Cy9wdpA0ys0Bms<>dKp{}_ut}E?9zLC5iea6^9i7~C=IBNehS(!d%jEG=zCR>)SVC-)hi8FA5>y`=E$H7}gy z^TX1T+6nLHVlcm=0P^SnQmZ4QQ43Op;im5&33=?HCwLRu)fYM4 zrjKUIzw=fuQs(70pYXI{CBf!4)y#lytKgjq(d?Q?XVsZrp2vO>Uh)uCVmA%dfuE}L zpB5&~xHM*`>!HI<{1*?*-7z8xj+z9LxDlY8+wc-~$L zzI8s|+uJCDLB1#*(mzTVEI~q(t1u@CUG{Vw9~7K9e?U@-KtkLP=_~k7Lx1!naz%%# z;m_^n_=1rFaw`%UZCy!yT^#evEtyfB1~xg18F-f@BqO~8P#JBp60@BnjAeC(Xt#-H zIW;b~F#Dxipyy~Qy_CTvMQOC0br#`0rlkvT(AL87u@SJe4!!gu@MzeA`DV<;&x~S` zf-H?au#>F~Qb_|Jy@)hG-;=rM9Ftq0j7;anfO8&pXEksTB7HiH|K)~0Q&r+j2-RpV zm&e^;PK(-~?89%)TV6VXFm%pnYiZERuEtgS)IZXgbTibI_T-)q-u~YGR9PTn;!iv~ z8?BVq`~L(t70Bw|0NE=nGA5?w;`og^)>Z*t)X-F~Y_?h!x`;14{l7i*-+BF(QS2O? zX~^If3?rvFCS<3Wbl=hzHnzKBKDV*_jQp*qZ={VCZrFX-?TAQQq*bBX#3wC@%8Dx4 zb9~Av#un0XaTW#TtE{Qhh9>s#RsuuRG`WT43WNzP0=#HIFgS7^G_;k#5G7Ua;f5Vu zC3!Zi!X+!p zX-;u`;`QL;O-ib?r|)$c2pij#`m?R}9G@D6{hbc*#}X;mY=76?mR& z+&zkl>Tu-zR#2`5h7}Rc7tEpy@u8zD6_nQ+cPdu47YG?DijmRKBvP@n4buQ=s6JCC zF@??|E*!<1-b-ZA&}0|lZ#DHyDDJu;uXucYwK>Nm2cfVHH+zm3fEDw1Coac~{7E7Q zA;Z~_Ab4dXWlHuU)EC7SDk)D!k+vMV1+yq6D^HwHImO9Bj(ohSh7+$d@{QEUnxhW% z)HY(+(REj>MMvLXNH!*>Wng%U&QO{O*;`NF$|>U?6SBQ3I2nCTvA3{7rR?o@TB*3w zXgbB7?K>BH9NeP?h&`?t+J$G^NEK$ zsA+OtZg3vC`{3g*B1RvkjBj)v!ETl3(2WR3XW~@m-q$@Bi1B8WT8;FsOYB$FIA+#@Jh;qY<0}k!I>EtMop6r@D~cW7rwWU_LAAn z3u|es5^1HCoYux338iG(V;5&=U>GBYcN$J@Sx7r2KXr8dHHR_4A1cPOX?wVl3>iL- z7*2G*)wHpk3(2{qt!*r~rcR!C{pV{FKOwugIDSXpT3D{^=yaqo-L}l^`d}j6F{9f%mJdS)4>Bfs>FAaMVLI3&6VukD#^585cLs)d zWphw@ZhIot*S>pU^OTXjX~bW7wvfIm`v@U1oimr6MnZN6PA_`Y?-U=T5Va~2*K$Ji zF;k3CyPFC>6*8ixaanm(0uF>S-06&UJ`ys&}#VxC4L^zk2wv83o*dglX z;x)9X!a3PtM_1a|!y&<>qwhVO;D+T~zOvp6BEt z_8|RN)?1O1pEL5}o|~D(baL|bh2%A-D0J9g6ckCJS_Y+o!GK_RAvqj5f0hfTcUQ#M z)w$8EWy8Vog*xUF8*4NrTILk_8=GJB4|m0e{dX6~`kCLq7L*qod#ps5u8m2yXW~sv z@~q^rs?-|*0^Nt}rG@mq@bqg(S4*T{P#&*pPDLFL@R!QWEcP+UuEiYz!oeBW)EAkm zP(tb9ElbKXN)8Quyn#l0O+37t7v3BP+gDWEyw#aSPc(WVg`SC=i12+xILRqe3+Ws< zZ&I=Xprp!uJU1d-3WW4jCB4m zuBcBvbRO>Ve-PZ<=~dM!D7Hc(JzWlLb(f_!F@?TA&2E_gXy~Q#j)Sm9&?IVyB$qMUA(f1GqN|SUz8Ql6_f`hMhs^qWq#r!YGM%VGynh& z;Ymb6RO(YqdbCt>?4U;=r&6k(A;(0YdU_0uK}NpUXeR`QI1@kj&`V5DExl<{A8#4p zk1Q<5fQ8V#cGtpkMhtHpoJmJlqo=S|u@Ow2%L}KB7Xo3J2svRqmdZ<*L|gVpg>8|p zP@8b(I}D*Nq0XSB%sjkdL0MJQxsB!SIUZz6dbE+&JMLG%^Ywd1_9_sbixb#bu7NNW z#z(<9b*nC05x>&d*Que6R7n3$$Qy4ZsSvzsI5!;$k>{VN6X$oX)~ za`l~;O-Y&PkE#X3*s%X%V-GU2wLbnvA%js$b}ChJ)RF>2{LZ)EuT9E~Vuvm_sHsd? z4$h>aI;W(EluRhO$c|dt%>2Z=ztc@qw^CDCGa$H$7|l95b4W0X2qz7VF(#TzOgpED z)#?#pi);O&r7g8$`|+0LZAz8^9Jy>yTuwDjaUnhh_aotZN9h_-IxJuO1=1v$# zTlV{m{A41erWp=QOfMzdnwVzDAZlo5HO;@|)=mA&7HhT}#RszodIWYWs6p=S#PD8VhzD*L6?M_l z<|d}E8N5pydmxXTey^x+^%uqn@JH8;Aa|^mmWr8eJG#!pn=94NFt+SB3CWYxTRzHG z^D-OSa>nE~C%L?_*_)VVMiHCJ-AQ$=+0(0tq#O}Gsy`UwO#GISKkqnTV|f>nH;qXj zRn%!s9ea556^r`|acm(!iUqTUA}|OsB$(S+la{tnw5}$vs4l7yP#!(J<&xQBOWU@J zh(D1>PUitZkdUUD(imwWer)K7u&1Lm0e(~}-!aj97&h`u{OaR<8WWAyY&RMC#=tNg zZ11{0A|X3BG-*z5U*+?HGOnnOLeu#O891i;RUD<@nbO9xZ7jQ0D(3Wt#jS}c6Vm5~ zCbqB!vZZSV1n#eVdD5dxRMX@c`T4{-F)`hoeACi~2hOgB(uLYa_Jje(7ruWrFfb8j zMt&$M4;IqVzl!hS&9y&W$0R4cHDv)HPsHC%gwxS?`TsCsKIzm)7cz({>L4LI&Y8~6 z#7RzZXlP3d8Hk1^zLrAuu>J8p4>u<+mx?-Dv-{f6R5f+JEJ{U+}`du#0O3WaMih6&I*A^o>o;iVB(`R19|+;7^v!KQ=UFNwsNcGX*fVBdL*A&VdsyPFU;x zBN5>uC3AD~>?7|Uzw-2=4ec8rZxS*bR@9~W1MmMHuyn7@(lfGXY1=8|=?#m?hTW;6 zsRY8V6$-RcAjb4rDD0m?`($Kq8+I>427%s^cYb4Yib*fZkIvS*_h?9@Ef9_z5k4r& zyZ?U6{!2pk^v1??u>F{H8>@S?Tc{h|$;W$`GF}xFdC2fq%otC5HFd}_qk9);nv%Vh zRC!H(sj1H`ZIhF4e7yTxmXAKJThmlFmMixh4<4RhQCAWvZDoa67M2q-eAI-J*1?%h z8Q=8u{WI(DCPL;Ei8vF#baefkNmNml8n~DX3=uMj1_UDmggSWh~pmbOkwUo?zsBqgS`WEMX0y4MiONlA67 zX^NcFSz7~d6}9hRyADoJ(@b?tKa@cK7k>MEO+l&0K&iusV|IyNxJ%|hOx0be?GXCL#yW4`Y4e)(|a2ncb%6M)d9K8vo5(ww|J`lMo zfDtkJxMV(iW3!J**3Z2CqOnKWj>GmHck^3Te^&R%HkF==ibNU3Nx?Fv(*vi=p3@h- z%k9+D)6tbD%H7ZW&QE-N-_U$KaC(trMmHv=$S6*VP`2O4q-FKPyRLajxp#5rHg?b{+*j1ll-FxPPQI4fS8K14 z5j8LNy(TvGGbT3;P2*rYJC1L<%G!ktRy}<$O@#DuLnT7nzM7HSYDh3u9K|g8z~kK) zo?aUTrW^Qp(}+=6P^RWjeE9o@wyUTwEp5AEapPcn7n0L0tNV%a*ki@Yk*?nNSZ5SP zO8P8JOy9=x^yO;(%KD|JCuBG|tA&`CoIJI$Y{iCXQUgOeSiX%tkyFNx8kRCyv-|l> z{98>^3<;(=MN-q`0p57S{!2l*3Gm_B2#J$pC{qp^-5zv*;Witppnz1Y> z)0#BT$u|w{om6h#JR#jw)cc6=Clk}uE4JK@zKuy=fY78=B#f^Zu6Q&4JUoqiB__>X_! z(~m0Cdf5wvY5p~T{EsfqK(W6(&j3&3Umfj&n}%*1E}1j|}PFV(<>NRAmz1_bUan|(w$Qqie8(H~b?Yw;x}-CPGz2WO@V_I)oKn)W*{ zFC&KIjJ&umI`Z+RF7Cj`b=T~kJ=~$*Q*!C(N)K;oBBc3&hyPulzHHh5tTe>%{XI9g zF>!oFL$Qt_ff zod7uw8Qfi^v5?{Yh2&Yic)Pl#t%OcE^?DF#9Gmz_hVE z7bg_TL$!QY0e5E+;iRLh1;QFJ{HQ!Q!+7Flt*?MLn!l|?ifa>~qB?^ie&oX^3+wTX z?X!(fPW)Ys>OEhSpDGQ%yaU$&wT$yd-2q|}tDshFA>|#bj}}%`Q0$&re^+xso$on*tErRg=E#(+)a5wC{4+oP2fco{7!nK& z45y?jwD0H|K&=uYgF99qORD-iuRp6dH^_owJ0g7V;|&g+jx|kXVFfmptNdk*Er-s> z4J+z;$Kh3H*u0#4EquJykip18%BzB>iSC`&kxz;`AT6P@7_E{(b(KS=XA0N0~ec|c(%;if=I_T({TAzt4<~JSFAGaKSt*DMdlV~g@ zK8$}*myPZ5$mut2PNfd^PzAoz=QX>x8y4d^lTQYQC8mt;l_lb@Mhv41akgduo2n<- zkzUbj4+w6xp7`x&e*eYC^L)IiEY<4WZ9`ieI9b;fj5_rcj~L!{$}*QB!~2AElaa62 zZ0YEGq3Kh4hpWmcI?Czo^v)i8#4uVio9dTqZeW-mZs=h9LQfu!jWt>@y%`WhCDlb? zaoxFosdD6;SV+ggnK?LP4R3ADpZNH1dU_OFyfN;$SqVhY&~^&-D4mL`oDhwAFwR`w z8k(e`?ONJW1o-nYqm{sPE+k)mj3s!E#M&{R2P`7@vYQGKM&{3DMa1AI?nO7m~|)Bjyilo8?3 z!3lGUBByvQsd~lIZtIw2Ur=rxoarat{jsC#KlAMU1{7*f7EioNgP_Ac;|Jc!YZ*2A*U2iK4s6A!80N8O9F3w=f l;dJEmt)uf6wbd$lAO8){QuWV;9e0QF5B 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 PN)hkkUr|LRY*?*TJ{NV!O)8ila%%SS&)$ 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 Z{{okeRQ?8t!d(CW002ovPDHLkV1i3br0@U$ literal 0 HcmV?d00001 diff --git a/client/src/main/resources/textures/blocks/dark_oak_leaves_spring.png b/client/src/main/resources/textures/blocks/dark_oak_leaves_spring.png index a6773aff74a7f60366d6f277245cf26afc4f2857..84782f7e248097b9f5de4e7e7cda537261a8a0fe 100755 GIT binary patch literal 6087 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 QhX4Qo07*qoM6N<$f>jaf$N&HU diff --git a/client/src/main/resources/textures/blocks/dark_oak_leaves_summer.png b/client/src/main/resources/textures/blocks/dark_oak_leaves_summer.png index 23b96b8611939bd594ad4bd009e77fbe4115d906..ccdf097215d422f24c3061d79b422671640f682e 100755 GIT binary patch delta 2940 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 b=OMtogw<51J*N2YrvWU^TAMUrJ>vcga%@D$ delta 2901 zcmaiy2{;s5AI4`ai6Q$WcVY%nGK?{o8T&f2FR4frV=xnjG4}5oDcdDt>`N-yvJ@^| zF=I=XsgZrXU8KU`mLyp})%V@o_uS=s&hwn-Ip_S|_x#`UKO3sUh#RsT+%B{SJmOS* zD8Ul|2%V@pOBj$<;NR&xLFVF$e}%3*)7S>lOYsv5p8WN0n&iXfCq&;=vwagW~78|!nZpzoAHbuFkV)ZVkFJx9e3CXux z+D7LE2yUpW8z%U)=lV3ytAs+)7DR`p*n~Kc2DQ3fzE*gdYp{YE)(t@Z`~96Zv7@vs<(FD11o1@v?x$ zwtM2q3;*Ihmgzt?*>X77xG71jEPw5p>npMM+SwM~Fhnj*KD$^Q_)%wV>~tR|U46;_ zYMiv&<5Vno2z>9ivVP9SUyHDy`h@JJwRQu6S)m3{E~Q;m4eAL2zC#G>8|5YBB+upN zbXz^8ASL+J^{i1e8 z4Z1T1x`m0UE15VXEX0=KKJq5+mWG;Y!Ji~HWCc_5MDMsBFX9*$Sj?B zX-%))Sjwu+jfG^vh69>o;1E~H5X?}Pd5DFtpGscGS(;L{LXje|Z0p)78*wR`L=imG z3L~{#orLzm{#Z{8!t}b3m7KGx917@4{gR+4dHFUe(?|KUt~w${q3;&|j%U#aX?a&azun|@HH-o9~SLCno-^mXKrONyFJsYxv*EM=xj zs$%%mInKdG^uwhueL^h} zOBi5er;fRxnbiS#cEb1R;t?pdh36EE3R72jEmtdv@7tD1*L}MTzITLB z(Z07p8`KHdI{d!+WAK)vUNi*)?xTPjbD^tvoo!VM;$l#^~2sKZ$j@}DCS|T&#$0~BvdK& z1zn7AZ{*X<=I0l^3EAHr`k>s*o!K3dT!iBc1RQp5bPz+R$_HLe zyryZnCTW)3EPAR_r8H9~EZ(!ODU~&Ij%{|jKvdE91Y3<}C~Y;tcxcpR=4t+_xvL}= zcTvyD#4<^k?to7kzVT_+N+MlX&~Ur|eA>`Lm}c}vC%9z{Y_;d)ys4`~i_BzMyQ!7* z3fl5UURkg8>9!rg;qW0 z-Cf{N97mgY`7VoA$wT50G^#s#5C}vO{3$q-P>PO>H-+M_siN|EtxO_&sRU9yRLu4l zs8C=3eLw|?K%n6WBpiuRp^5NbQSkQ(3jAH=7pNQ*i2uCxMeF0?sj@FqQB_9J8hABm zG+qP^!j~wg`n{VQP8EfMqman`38jIAV=x#5TotG8hQp)OG|+e?jmc+ALxFS-A(5(R z4Fp;hg;7^SeNUr;B!Fld7$ik&0DVW*<%2?@+W#qD(~^X9qYy}bMr6Dj1@H0Y5UNe~ z@YFPP^HTZBeo3|;jrS0Y3f2DH5lu5+H!u9@Ab)=!0-pR$DW~xP z|9zXk;l9y-d0Nu{m4Ay-zsikB{$XT-mp8>G#P1*P{|oS|gCzln_Y3^T%fCgmRX%s# z7+;4xq;U`&ZFkHO0010tw=gvZeE)gOrIPw-RIn6vo(Cc<0!-3M4hH}@=w`+S4rnGm z&BB5lAr@D-7i@Ia6Z%8CynrOPfr*2$SlN+BOeHQotWlgB3_FfbTS|IvM$6?&ZW5*# zoC4Ltoyr%&d5-G5d0Ram{b75={hd%s7dN!Pnz^!4tptbj?v>Zq*YAA*M7CT6SPqI+ zU7#v+J|7%3syZtRPArd!iBYFSL?liwgQG0vWygKa66+-aQ%Dk@GI-oCLK zPDiS#b#!;fKV`A*-M$Tb)YP=FyeuvZE9|SQt1Gg$w!Z6nzo=e4#t_E+fKIQ*;a&Qz&vdmRP`(uC5Hc6QG&FaDO-n z^j6OsVh63USgeN8ot+(kL&X^>Y3a#xKiwtnENpBzN?t!8Dk^H;)ZEPF0p0KW1?8^Q z)!MoDVeK;yhz818pp-6I^Ar1VYR7%V5>5C!gnTbux>X>R*g3Sh`G^=c^ZwIgl+_U_ sDeNGM<4P1qXlUs4>}+&-`H5XXTPIP^XwHRe|GNXsOstKo4KGFi8)t(RYybcN diff --git a/client/src/main/resources/textures/blocks/dark_portal.png b/client/src/main/resources/textures/blocks/dark_portal.png new file mode 100755 index 0000000000000000000000000000000000000000..21f767eecfbc45834e7389c5cb78a5a343fe69a6 GIT binary patch literal 14546 zcmeIYbx>T*wl+RUa2qtiGeCggGPnjCT!T9dE`wWecMAk}2ol^OXwVSc3Bf{e4GsZ* zlf3Ue_ni7})vr!{-~I1UHO1cDtDj!$Sx>Lsd!{2*lw`0mNHG8a0JbbdQVsqe4*);} zprOF8qT3Fp;WwM!8rrUECLYu*E>2<6to&1!yKK zVN3Rq>x{gwVqK{zwk~(AA>TjV-e?yXDMwjgJ3OEMp5f!q7IvT*N@XGvN?S<8s0F}} zf3f@YsV;F5lAOJK0g<%_EoA7ukTB-?RFukyOfktzpT6p!5>e$Jma&d0nyS4-UUX4|WMD;z`#dkZ^6&!4sPBz$2v zAGWtJi==0=m54hd9{aR~m?&e$db0IS9O*f+2mu+&7o>?-JEqH?kP{|V>)OC|LezOD z6B56HS6}T%XzU$v#*_0tBb$XNcUJ9w#hr^P6njfGe6=?65tl`Zluoxa5UobRb-#y2E!*2bk-&AC!YpVLV_tLJV;9ak#UXrFx z+g{y|ipqx~>8o1bY9p1xOj1X+d@E&}gbZN?6@7ZrFMt^J=XlLx0obEG%z`Ps;;d;u z2Kb0Rqp1Zi7Ez-F{h*zb!gY^iD-b{OcaqmMY&rF(dx!Y#-KO7<%gCje)rp0^D)pzb zqe0W*H`9VX@wwmFd~d(?HQ#rU=|-^of&GyXxF)$jqJ{FpWpDC7>fIXVYW7?2!jXbF z0qj^3S6KxzLxTl}ZV+M~lp{6;I-7mECg%D3q6WH_z5ufV!t>OWVsF<0Af;UQ*Bg75 z;UB+9(>L*|yUIUfatsr0)-NsX001};Yxv^QR#Xr$bF^nQF?TeDvU=LX;9dX#LZY59 z6Ej<=E43-q(%L~7bllzrqP8{{25Es6*%e_DP%CSQw=-1TTS>#r+t!TV93(1&A>=6l z2e5~_noxV%+c~%hcnX95;0nO6e>by%sQ;L_+6sfT6;-Gu9G#)m+^pQJ>?~5A*6y4j z5e#Y}XLAbyHA(5eA>enyAS+i_m;f7_hldBN2N$cOvn3k`KR-VkJ0}|_Ckxzy#l_3P z)x?vKgPq{ zobCREV{XO2wvj4@>)!O2}$@&-He)s$d z=bs&c5B~@5zgYiQ?0<~mR*H%Ol8$C>zul9S6bAjCU%=ea%-USw&m|8ZzX`V~*qjAw z#$mz2&BI}1OT88?fGDX$49Cl?0?uLb8HD04FbX-8*!6L>nU?M*D9Y%mAQKOMgb z7Z6vG6$Wv#vj2CBik*q81$=-oNWt2{&GWxIG_38R>aHfg+2r5_|DJ)Dm!F4&ormi$ zpa0-#LY-aUO8kwzM z-Nn(u)x*RYDsBnq5zZA{o`1NaX84mR#(%Z;u!6#Q{+k`P|NVG4%%SF{JUpB%COqtB zEZi1g9u^Z0c0Lvk6I1xA;WY)DK>w1-|5ZG{1;E12%kqB;;O`KH*nZc*|H_~c+y9Z{ zzYPAVXu_%as|{X^;kBLZAI1G|&fxz3Z~pzQt^ds_sHy)m$-l+#f9U!TUH=vX|CaH8 z)b$^_{w)UnE#v>F>;D;D82|lx2z7w(>O9~tf6`Tm5crEDimAMeB;XOy4WQeN5jlsq zpu-?KE&u>4&F>F_XR)X|yb;w^R#6Id7nKNzPA{&Z&j|of17sz|H9VILvKQmcbn0h6 z4Gu~y?J`b}wbqs7bXwrQ5;_e)MhgKr8R7kU@+(rSjXEcx3Xi&_t^2ULy~1{g|4_kF zKzLl}jctnmVUpVGA3~P6wPu5H+O?*F1i(jr&?OCs3|JqbEhWhd;sn-`0444pnL#!{ zCobj?A0aDw4l1Aoevj~si;%>M8lVm8hx2X2<2g0#GGZVu@KmReUkj-tVo0hFqV7!r#JpdYl;r4t;|MaP z0QyHn*hmUV^@T?)%x)W8bW#DUK^yRwUOHf+R<&S~jJ)t;Nf{QXpj1i3>bfz)lM0xw zAo(j6c}8obFydOa1AOiwPSJRAHyyzj7ok+Xk^?ej<&QakrHb8^vWb~AiaKmh4D6=` z$$9h5>d)WW6{Fyf`Y0DFfXm?yz0dd#VLOy1@tcf@<8F(|sjz-IZu2JH>X1aYm&tlF zKFwb-YDR^g0xS>{Ar5-tMN{lGhvdbmVn}0MmWaD|B37Xy4>ElQgtDwFNiIwEjo*HZ zlV+vcB&gIR1y*PXoahvKR^J%y2F7ros#UlZtPr?yD$*XN>sFTnmFXKokkGGFHZNp^ za}~jx9(#vM{`25aiCFeR>G!}>sS3^Lh}WQ93$RAKRVB&`(&55~uBjOeQdzFp2!HA) z={6Y3x{)buY zv0Zr0av?eWxh=5qEp3H?=9G%4tg(7W&D4a;-pOR9b>2FKZ7C8s?Nbh92BODwvNYn! z+)=f=%9iv=H#d~@RvP27^rjh9kg$XBHQ49yA`7`?A~w9V#^z z9W87sxe2q2&i9t?>S-5QIPpvX zZL3ypVP&*gaxjm*o9w15nlJN`cg8OYZ(o3JBX!wqNi?}X#_zQjuQ87njY3oskhv1#>c_eyTLJtyH@|a*(fMH%)zqpfnpskYj@TsrNtQ z+`q-8-YOK{d`MZWr_?as*U~LXKlcaG?b~43f^(9ER!V@U9>u8YEU%3|Wm<8|@Al|V zznOFK0dh18LyFskv7O3_1*Tu76lus0|A;PePm_DhWPkDOS#o)p$ZXbp-O%9em7-*k z<`2n?w8@jG+h6n@+{v}W<=aSZzhoRsWEyWZ_k~jZ6LwacPS`REEL!iqrz#D3P(s6+xfAm6$aD2U%>YxX&Svy&9!P{+_}BR z(Bj5XH1t#PUOz|F!fH3s$%!`a($d#8&W<*pO?_eiL=|NaC|M37sQnnT zb^C$jkPK@^OlQ0bwBd#i^f#h9f>`l5N(>L+?7VvE|K7Um0_{b{S)zA+<{7czsqBc} z>@TX>b*GmXLUYmcHU5J5GxHs6>D}vIc%@hPF+~za~GFaNErGE}q=9 zPa#>D!m9I5J5yk?c;t_bcvWr~?mgM=kUvgVGxSWcwsJ)aSPLnVlu9qd)XC&kTMsp) zw2j84qZxU=pT|__rAS-j8(UPkx)|OvH`2bOjf6>ym#AP)LvG$UGgK+9_D*3Ac$#FR z{f^XK>FmrZ1z|rd7)bAUw!TverF(g|LHSL!{GIMnoAOEg=i4t1af-KPC2qFS+#!<;;#|2G z=``~)!@Vm$jG!v~jyJIcEm-e(!VAZg2IXizNJ=Kj@mr+1Xw6wZ&-L0{5TocQO;-Pk z6#f{-f3&vu;lh|IT*+{J`Rlh_>tVH)3-{w3*uht$(%uVseBqg7_6j}K1KnPigEx7W z%!MP!u)#_@LroXQQW=@@6;zUl;w#RmUXt6;MhC5Ft2?x0_Sj}~@RZaG(8H^N9t;B5 z%YzL8KTiF()2s80fD$d;9E4xedL@F|OoC=cUS`u^JunaB&aUZMLye>@jeXcP zmE+=#_U#%-EoqZo?8|*RTKq_0!gchO9iLDu>8(yh%oE=B-k?)9a)}5G?q_(wY+nQo&Q(5jz5g z+^MP5(g(Xe{N0~{mp$pYsRr0L;_B?QZAg;GlCc*7Tof{WOMwG{TRdt=_mwA>fi0l5 z+m#Yn$(55_Joh>8$%I592KtErXsL{_m}SU%HFT zF~sQe`|$;WtK{>Z(Rjs?V2OzC2O_SG>vb%rY}W5FeE()czfYX7hQD=yj*vdy55)Pt zkNkWUlRScm{3t9=fGndtXYs<~C5^K%NgyZZ^tsj>5!a;`;3^vz*Xum7*8e40V z>)lL*YL2z!TlJ7zq6QHe>I~KIB8b@G3Lw)|_#?2G7`yWjvGw#LORkp9NBh^jN*luw(*y~1*}vN?FL#Xgdv4aH}Z z?^w3mvp^#5R=m?S9lRxbH^7`Mca zOWohmHXtAaQF>M(v9)#XqwWwt?ivl%no6Uh9Vz~3fPX?BsveC@ zgMs1*^^cdpzLZ%`e!~{Tz@F9+1MtCHr%ywd`s)e?@-4{o##HDdK?0>cuZRfH$69B> z3CoO}q+JL+S++#Pz|%G6_zqa+z9so7ORQCZXHWi5>J-Pd=>_Y0PQq>NGv6TL8ZAL3 zj;wM@$VBGFYUven9m9h1@-%yV;Bp*ZCA9J7>!NTJn-3P>F1@*T?`Cg;5CGCZhP};v$CV zb*~6y-B4BAonHTJ`Vbg~i>pqq1!jmdd(r-8CB2cwu`&U~c&Pr_I)JPaqV!5oob_Qv zpN0PLYf^CiHzr!>L5M|d0~Gz1{oBUMO#WxDfCOx@=R_e-j82gTF{Cc$g1OdR>JVuM z4VPoTOXuF$r+r8X(+$A?2Eyfyis(!nvBdV0aemrU)}$ZT@KVZZ*9r0MPvS4}#36H` zN^cZNxO6-)^@mm#kz46=iFj4Exu`hHL|PF2&Jp!?Rx+1bOl78V`+Y29Se*5{^@zaC2n1EF-uW%Tz6lM*IvgrP29M2+lg17 zL`CvThNQOC`@(UUJ-}CyhKA+aaSw-QW*f}P@~?#ERATc>*r9P&FBbOpBNmkNthta^ zwqI4i3XAOmlQpGY zoUn`A(7s=vg}r(Qq*rRlwmsRHUyQikR-v6Pw+qB=MBFMow7&MxEF#33cowGLBcG)v z)7x-Q?pYSLfN2pX@@ZI`I=vN>?rS5LH3=_LxJ@WuT}YlCD*q5~nHmB@_-BSKec^E+ zqA*Qmi~Hvp+dDZLPqDWd^E-QbAM&b7IONvPo|V}n)(+FW*7$_4nboI!>Wo`866#%s zxULAu6!3l6-08sdJCb41!j{csOubZ-_d6;)RJB}9H(z%hDht~Ue(|L3adD@lqk$tY z7k}gZ%dN){7w7zeX+ni&6oz89OC<5z552YQy$1ET?1;MQ0OdD{-nig{M(#C7vMqBxpxr7s*}6q zQ=JMy4$I^xiWuxAa8hCIO29#%Iu90?UqLg9=qgf|4JyT=Er?=hE|o1Ez&`>C5-YO3 znLsi_pX3|H#&71~8_3F~*>J0-Bm>Nn=U z8`U|a&zt%}TS{LP>0tstEOAP*+iN0;#R)vk?H)anUnK(+|2)|`E+*R!L&Tpc6B6^~ zf|U7(jeL(-k$Lb6LQUo_A9uVc^i-@Apl=z$sVc zWGsJ$pLS7#HLQWXn0YTf4J+=q<^es>70g+p?-LFwiCv9|UA2oW9jI`xS-D*-=D*6L z%S&2nD&$}KsdB5AMN8kH_=|4oBFnVi75s%Ru8E}V2#;1qz3RPtUFU4H;sn-lZI3j- zDyE{Pw=^Blnt?IvjlJwz2|O1Mb2KfCRWs)dTVo(;&=BOC8l&Bj*D$0*heXRe;bgBn zeY7fjS7h7;5=@mv=sl7jArGmVUBLJ9(jw}dUX>tN^_SvM5SO3?g)#KH@CS5~FH*(? z&<^VS2Yh*K9?S`8B!S!!;zLk1AYlCutdSsoyE>c zX9)|uWZ#qF35Iu%jTlm|8+;y8Shacg1CJ?l2pq1{PW;A`0eh^-SR7||qEd59zt@cX zQ1UX?>nU7XgVc-{s^!gLxoJVzb>UOR#YANoTJ*sozUssyU>uSmoa!t`@<11UnW}H% z795kOx>I6Cq%Jt zmW$BxZ1ljXJ{sbFj-belU)r(3m+U_DA1A;9g?FJD%v$^gdO?9i?ly3rqp*d43 zFTTxc8HEdKj(9N+r!<{25y~zBy~N~x(2@Zk#cgx7#%kLDQq#`vSt4vR$fMFG_xNU$C;ZfA{tjzDaZ(#7E${4Bw>^Yetrs~Dxm!ev?V@mz*gNI429OE^So9_DSb$!IO?co5yg+oR@nHSS@qyCca&V+zhodB6DmDs0(o)!5%?b|dPsPBsTOJOQE z^>Hd%qx=7U#`L5AE-rl~Xh*D+9ncKWp~2 zDe*uShgH6PX3VE}93@X(JB3XFM;UKVu~9)w?bu~A;~=KJ$hSzf$_iJ3>;uHfoi_Lh zUe>qDw>{k>jhJr>q7DrRme;@CFf9}@p^|qjEOWCbW^6Tgw}`kG+b#<@7*pYFA?w)t zyi65GV(t3Arytd@5V&=(Dj^(7KlN&B8%<>x{?(&DO7oakFe{pVWLRdb=&TqOb;$z; zdu(7L`A)!afJ@!Ph}3R3{dO4_@YHDbR)#(F3h%aReb_B=S+Gf%ouc>jj2?{*HU3_+ zi8FYq1ojbD`5LBl5A;k*%&96lAr7z?{$|=ciojiTg5(^alxvLZpw`nHo`?JvT#l^Q z8s(hj3n0R*4oY_KjO|tZnjPj{nYcppYvd`408-?4eVW#8@%8{e{ZHtEyrI1$pe*Yl z)?b2CR^9*;OtqJHxT|z|$eS~52HCu5omfwr5}tI`T@ti=c~i|!o8qP}HS7DnB0pW5BsgYV$5c#g z*LEwVZ7P{PG2AYk-zVStbob&0$Xs#1oEPvlBN_Yvdsldi79 zMD21jYlgzaAF9Wj<(Yxj zB#h*WT+fZnwA}HuGAFKR^n>EgVo`FGy5HE!TXX6zfiX~x_>)E@`yMrpzsBr*&~N1t zI**GEL2Ab3E6he1FJjgjY`;LU{uD;I@3NzmhAGxTF@dh>JtR1{d?ajj#J%WzxF_aJ z)q~8be28Q^C_#0MNq#)6c`zZyk)`_Z1fNLVnH_bashJvlRDgsyU8&OORNBnNugaAb z|7=tH%P&t%KITmLLpatZlALp$BH<$|g4$tuEhd+V0`?7-^Y;2&nx+1J9g!qmrwK27svZuT@NS+4)QActFnN2=| zPmy5kT6p@JZ0uiiyKNso58pBs_1Z_`(2+U2*AGSUi?%C>vycZlZhknXXz?Dv#hQu( zZLH81Cth}QD1FCqU**87B+JY3NsqXe-+ds{7^?*PYiS=DYp5&GX9g&lWqqL@L5I=K z3uw~Kn02rIF=7qS|MWpAb>`55fdE<4BgMUoNVN z=8=zUk$;p@9Ndo3*1@d;c-{1MMvOuwo`rl;pTHbfOAs^&a*YU!F{MHf@i@5;=6D-< z>7n#|#WQ-x7BJ9fMG_AFf>DuH`X1Vzh;yEpr~jPhA@)*vaIrH0H*FE|xis}r3v6b$ z&~7KA;xVponxq33^-`TmsH#CooaJOl9aejAI>+yY>8x(_NZ;xAuD3H=R(x)4|EN%# z6Lqeo_WBv7$yFm_T<*Scm_Rw#9FNm$o1ohj=4Ee3+WCfGCD>ZhzT?5zpM$+yUuB#t zuo(qCcLrwabvRE&cPWYO7(w`Pj6=Vqp53!+4S7=uTKvo^>BfJL<|q%bAsbE4s7@H7 zq_k;Gt??hgjW))UEjf&TS??|w1(lr_Qy~SQ!zu*C{ z@-Ga+uKlC&73)Ps5JvTAynqZ*{58R+EZr?hJW2J2fdpQG_$l*1r=&ca-hjem@v`S8 z&>UUV!ZLyVOh7Sz;!pjcWgCq2{cOYjt*OWqvu%;FFy!lQkvggp!Wi+8!%0z?kjBif za>&;0xQJ);J9q9_qI1=1ZUl%ys6VWb@jB-%8)K5|9Rr4*ya7eXaj?i)fS6kr{5ucC zk-L~;z1@DwmnbNuPE4eF%{1%I4G56ql59UoSSO0u1vtK?5bD)OPQydukWTK865mPI zvbPT;-X=sb3%b=ROyf82zhfMVa`_@G&JkchS|9LnrYw8-5sfD;Rto**8Ut+%cg=!G zf1U@xc1KQshDHuX+1RG#Tj=$Z-qZ}b6CLbg%3DxuAzA6)5~zO}^BJ)F2`jFRuACuG z-Te4XVWsR5Fw-Y-tQ+s_?U;e$c|=kL6KrNB2m!|6>oo__H<*@9RCg@E8a+B-_wx^g zpu3S@%^?|1CQ1e7<#%I*_(arrIPjg&3r`?qZ=!v%vJ{A6$^m6OtIyaWE^g(ze?%{x zt0zw&iQVenMYs#0H}2r3wod*SWpjY8F8`4hmG5(TZJCdwcpi4vmlYJZd8Ye-Te{;L z{HIQ$*5*uvp>K-y1+gbmnUw+!{a)Fzqq?8WV*gzCrk5qb!#r1E*!RI*@+`47C9@@R zE;UFmw1DCWjIx|uHtr&^+MPOgMvrFe5FfDE_>E3uOh+o@yH3u(wv)T0=s6c_bTfan zGFl@RgvAO}p#$DcX{PTb-}gC^54=kBRMtf3dwfQoNRjM|D@Kw<`nKSWf?9zPQKqz`@`(ihKm-GDlvVoj`$s*RK~lY6Z)w>3 z1#o~#*V8P7w(lQjqQ7;}*X+{6e;Dbf(dG+wDns4p6AD+M)!Su4Z=inmt;D#SyvOJz zVn`LzaL#&qIXad++6z+`UraWJv5k5{+PKuKR|E^Uq&};%=?-?RHAdgXSUJ7B5OK$w zr+krf1VY;ct?%CUZN+g9MpQ27TXKg+b3GYw$mBoCurzZ?9Kzr^6?5_LyD>rL1_PXe zX2fu>yE$Ht7!H@$Zj^EnPZ$)6By~9&8z)^=F z&qYh+#JVJy-CHb6O|?2T0joR01N-v#$s$}?;^JsiFb;$r_K2w1`|J%SC_WK{p-Wos z1Q(NMe)bVuVG{a<1(HW%zKa_dO?HdQ!`~G5e1lTAn{-)B@H*GjMbMIjh%k^K+QZ(j zk{njf%oJ}1Q2qvv6-IN5s_UnCwt-+>($rf;?F_8!xFPI!DIuRrV&UwnzFVG$ot0Mo zsC;jsIy;)W8XQIh;}n#;p~0X%*kHED)jSDRJaBon#dQGRxrbjKP_f+0_lL?ah#RS{ zy=lO-lvlYRdH>+daII6wT+8^{AF=fZ>CV;?UjUoxe(%LaG$!Asfy%VUs6?yyMuySE z+6g_vGjH7X)6aZK+2Qz8&?iMtH2Jo)B31^09OIIG{?VfbR=#~Qok$?0jLNgb&N1i5mwTWYi(AxH8<6;uw%QB|h+p;|C5-dSmlW_`-7h6=7Fb?2id= zs!S%FU!y=a3(QQ%1qtkUk5x+Qb$seXDaiv`hUQ2X(qWZHM~OT$F*EBO6qNdPql8k5 z{PVo%(P`AwpBH-U%;A%ot)Z2*(}PH9E-t+9u}YR;AW{Z-gTQxN%R!H>`hZ*{GFO}q zD-8UK!L8KeafroH(ZZ^22xke|6?b{_)RX!sWs1^vG}<-DQFlKWX#-tl647g~oltg| z$hdP$v-<`aC8UA_HQ%xSMxJ)ZfO_c_w^{Sp1#`IARc9*IQ?@hoKCYhT^xLg{q=ftm zMrS+aq3Rb;`$-}GPskq%Dim^6GQ1e|)+n@)<0fP;-V`g#$L74F_DV2R*27Z`v~ys7}LdWGU|_MmtdgZ#FMf0y7XOAN$x!8Mg>qpA0mdE-kn|4*(IyInx_Pq*eN1i{> z3D$EU7}C*6?1=&jmnTuD-+zN`gL=@Nb6_l9!QF4ARoi;gVR@&Fc7Xo=7@*f4gQ4Ib zu4*dGj$0dAmn>3~!pVFI=;yH4dcp#%tpxH4aIYlWmDDntvGQARx?3zypnpMP&mRN3 z>KzEjx_+^Ij+|%R#8U@#;^LX#~y!k^BSN=kR2W< zz+!Y&Rb!!pYxnLct9=k>Cg|4-!E~M7fa5sEBEC+_Zp5Yd z(W^1?LWRaB`X-0L{Zn+%zPVvu3c;XOiP5i#pG1k-^*#A%UF8FDFBhk zN|DBYP?G<^gpnA@^mV9yBOGiyi}R|X-m1Nci^^Re=54vOugS|w^G2o#TP1h@{>v88 zo~f5tn|gi*+214TZBJ)@4FF*9M7|+ZuJ`-Gn|Mo1Jn=CPF=pUW?(^lwfbgM{Q>EEE zWU`?S-wD@CCxP*`T9IHPRoMW7_M`*E%}Tl~<#!*lk&mXhPJLt1MfC-?_X5m zoGa$8+*o{9+6Fl^CUk9Rrp+@7JZK--e;nBI3!xg7hkU;>ia)`**%sR9mkCJh9NqbB zyi72}U%BwcV;d{HlFh_9_7kdGRxREtz%v6u-j4e9Uc?dc(PPK%%*Rg4&|I;JexaiM z6=j8ur-9P@#T(eyN-AC>naJ5`(wyS?(}OHN3G*YfmB4K8XZ}b%HoPSC7k?>}K`?EHcRco>1&N8r%GO zepcVs<%`vs`rM#yfgXr+ca%~yPHK~__A8^pL`1m}jU?scYo zw(jO8V-GRV_OSFq_G(g!uToZ8{4bY?~n@lEC%nz zM_lMgpE(6v|Jv;&Tpjy4Mx6PjC3Wtyka^lWdTm*?de!#2%kE4?!QI1P9!p2mfAHc8 zexT*-X}0a%bDsIv9}+(bcc-s8BDIPUpPxP=UC$Q9qd0NZ!4IXPq>KG87aPnw+ep`r9ui6cjWRBK+G` zbjR^56ch}JucofMI>?LM+0_YbV{b|B?&EApZs~0UhJx~5E=|>I*`Y-Z-_VmvGgXph zj)3GOlUUr}Lp(inJi1rE;Yc9qAqF6pU*`8(J)mHa5Xt?ZO3%R%)NgVgB#%3)>@J^=FT&D_`of_l9x}Oi+aqrSAib{M2(?1AJuhT^t3k^jS`cdeS0`R{(RIG-F z)+2SG{j@WXVcF_+D$Lap$pd`XnzaS*HCoKqwNJhteqLv*p&BnwAhwpeauwBXrpASl z84Gq6tu$3st*+R;fqi$6SH1w#&6!^Ppmh*C8oh&1Yn38w!?3~l2W#i)uy+)D$%|3o zs<*brCH~H6eaypu<^t=P=SUCm+J7#P79HIUu#m@x{Dv^_>HfL=K9V-jh3S)-gFBbzif|Vwg$K zlyM8O(8(M$6Gkv2b_|yBy^EYk0B9l=S#k*bN!LHqYi0(yxCYObT>KKf>I6z;_fpRg z4%R`+r&LzVbj7lW@VNuYA_R|~=z$4gWXJ)EqJIY7N>&u=r)&(6Wa3y7(E>^}?1*_3 z4R$yNA;$uD#1y+L?K_jQL24|8a>6zc1}QlvCpy*cQ>iVlNL>(zrjp_h=4=DqFIhBp zEjeHJJQ%d`7j}LxtqnvkBuq67Z(*qw;jsiO%*wME7p15(&DS&-UU-Iy*T!aZI;814 zt{0_h3&g1`I0|{4O)J!gM4+ycQDKm=k5zai(5|N^jIFBwHgN= zMH8*rJnDTEjdir`k^@Kus)hV~W*0l+|1yZ$$IB4Z#tO?j)s;aaR@F5O0Ly?Z!q{_~ z2JNRP;e&nOuara>{fgeFyzOnHS>SPeG8riiJB`?R*|~{b*3B>Mi8Rt{3-(29bb7B7 zN`6SpDL;vb@98iD9a)4l$1fa$E0Xm4PI~@XWs?2s=o{;`OeiS>P({alRb!0yW9?9_ zjnALrY>J8W{s&&;j^Xci9Zj(Hd%7E?f$!iNR$dPH#-88u1@zx0ijA|o`Co}56e)oI zi49faHm68tc&O;aLl%!4{*+ab#`cJ&g?Zt*q=}~O+b8oPoU63dQeXG)SfuiOEB6k7 zk=-Yv%pJ`7-l|a)_7R+&uglB(P*CWyHg8#}tE9+p?&QD%vT!o9Wbt-zezO7!N>Iex z8Dwr}=}vBDX=URmM0wWPOG$2HAw;RerNpM>EMaMFBkSvGso|@vY3^%h&Sya>B8)8P z&Ho1AVCfDb_ja&%bmR9HqWl|||Lyv(W>!k_zeU{bgeY~DRLLcrTrJ5tSvXnP08-vI zoTH}G$^XIxnK^m53sF+O^^^aHeGbk_O8n+)~QZ($Ssj-ytl_ z|E2Hj;cEZ4I~L}wmiCqoZ=!B*qq6^(A!X#0RR5*%7X?-}4$gmTy^;N2B;9Sm|4G(= zvF)#(zuozFL*CT?h5KKm|HJpch2Nxi04&Yf!2nJmF9^U327&=>AafuW2n6H+nOpoDl$@iRJIK-8@-L`2a2A_4943fEUJx&bB?lkRzd@+D+Pp<2$o}80`U}e94T_Hk z$jfdHG6PrufqZY)fY|_i9Oj$=kQomM2;^XA=K%x%hO#i{mv(Y>0KHA8jRVNalGWMK z>hF%f2f`y9sH&sM5$=w=;8gJ9hx={mKyG$zu08w;d&c^myMl| zmy45=hy6c=v@KoT-XifYOm;RF4$i-O{+bs4H)r061^pGLZvcO{zxl#1;c5wTcXHKq zax}|4sU@R3yZVhs@vV5x^{|wjvXt(+ALc!9^(t-oT2QcTc1OhnuEG^&WkJk*q3pC^9 z;Q|9WErEQ0v+yr;Hz%;W7s%C8%<7HDH?H2o^KY)m>HnT6hW{$umEs@I5;ghEZNz(&CUL+h5ujt`6~bbY&?MfGXVbS zq9E&EHSj-XP>}WinB#v4{9Dm{qvjuNZ^ihnwzK}Lxc`&0H~#-`e*PI-|2KyqC;#6; z{zv@&FJ1pj*Z+ut|B>+jM%Vw+^*>_Ze`o8ln74dv)L~xf=l0rB@z{NtNqv6fu zhJqr8l9LqE^j=o#)=Q>d@hH6w>l_kPAtX$61EaN`B4VOpl4n!%a>^2o&{_goeyV35 z)GC$nJimKJ?;g9NqvjZ~un&e2h3cv?Xbm49Benz|5o=_ij0>$gh7g360!oBH1w%m#trfMrz4E?i^Cs>i_ z7y9a2e+^113_U)eE#MRRCntDkFSzyhhY{yRr6^7?i#4X*L6cQe*5W{nZEj{AbY^K$ zR9Xk};9{KyjZdBIt9cSY1htZlM}Y!8IP}deJW>`w1NNo^d0zN)`neoQheliHRB;=M zYzaAD$SL2dM{@?9mFRf*>viC)6y=A!ll}qdI^q2~S1nl!^2AVe+$T&t^Tltby{Ic~ zXn}w7L4vSeXvV0t8ntpjgmvVbo9mNIoSi7P{61TB4GjC0V1MaWYXM(vN?EY`bf(J(ZfFgG3Xfs-t}s7}e}GX$^+D2|ord*h}mha{9E$kdf|A zD|>!iZuyY-+Ia_{XA|OhZH{pa;{y<3D!^Np>C2-o2p=ENyP&FQWa&%~2JQjO2&#^d zXc$?3%y90fk-*>=oGi>{|})WX;s^PF_;;byFmn9Rsf>JqOUX8 zrw~Cwk&qZ4;;F3*yoB1mOBkbbd?yc{w3EIfm}?D^4HJ*1U-wD&px$@Uu`yL@A?+wS z3!C-iTA}n!`#0^v3r zhV(yMBPbMO!yJDDFZ@XbCxgBqtYG$33}nA+axy(SlwBCZl%9&S3EGaE2hWFTB70VI zKW(xWCWNgJuC5<`$d++d4S9j3wD7s0KE@+Y3!j7kEwQ-F{RA-yCKG!kX8z!r#ZNZC zCurDj3m1g)m4aEEeisro;0ixhSi0R|C^{abkL@YXX4Lo0x9EZxKz}AaKGW*ytIBl9 zV%`GtsFVQ!8HA=Qd1r{-N|ytTQUKq!o$pXdPn)Q^afs(AGTq5x%gkj;%~ z%WG}9cTX>EWOMrm5%&G3-uCCHVC2D9x5YyCBo3JZ@9N?6x!mbC+$r*sRGf+F_lPsb zLETfWJ*yEOq{h9|R69p(*$_Vi{8a!EOm@hgn3FxkpK*`9Gs4RYvvuNC*0Ivxz1E!M%ibS2p!C01eA%2|48d;Qx_!}| zo^LemNgZ60Yj0g+q@Kn6wrNdaBd){}E8^@Y`1JVi+CmS)|76^}M;{mRSxmRQ;|+^u z3aIEn$Ul|{L@Gulp5Lw9s5SLRJK*fHUOe{;L~BQF+H>|Pm8ooPV#;M;*5>c1u5C%- zwfA?pMLXcA~&bkI2HHkbm2fMp|SBJ(-TcC`B|r&m#%i zL0r*p@t3ij(73iS!W}YL3$&BYJ};pYA4_zi%#rX`Lr!quF&;!+R0K2t;x8O+9ieg< zEe4sLmIlEdEi?-re8C3hXO&&(v(;1%CPFAyRvqU%V!uhfn8O%0W-Fs9GgnrxKHXPA|`S7=`&U{h+Vi8t-w%e^0 zJ3X_WcP6=_&Gry)^j(}LeOJ3#tX1@av|uYgRrb95YuvlKzQF_GaY2F@hr4bO{9nF3 zFxu*AJSPKv5vds2Xsb=Q*c@>0E)nmX-yOA=IvFW%>ZJE0Ovd2^AS^&H76&zm@?)@K zxbxtjf#zVwTDCTxaldiEpLQfD9Vq8;a#kfwh?ySruVAtW2MdI(vMjpDPyjNu6`_oV zJ(O^ikwT^4#o%o^QDmmphEfod>7B1^gxPC5zl;fG)a~SU)7-saLtVGB9rxEzW%CKV zV**3GVV0=<&oGx2_B~Kb_=3LD=8%e3!p}i>d80?>Jb}Cr2TNcE2>sVX7f9NAdC1ly z42kM|A8ynP9G&WmqLtv;NctQ`)jnR0L47wO)b1&XMx|pr2+p0k6gE6eOhPiU;17Ou zQ{Z0f)TXXG?SsS#v$69=5*+8-*pRD0R(%*mGg7!BT`6@St$v^N*v_%T3V;KP2(o*#}O)& z;1ygzoEODz--@5EqKB|Csc0Z*!0EYk!hd`owB(EVJwbLDjT%HpCXzt=X)`>-s_O<(w`*VSK!NKJ-e( ziR>&Kye{gMEHBoMc#@cKSb`v-qPC=r1ph;(p@o=aat!goLCAy_WhCVZ(g1L8F=8_L ztf#V{i+Xj&Op^1`9p_Gq(q8k_*GAvG2XeHr?2zctme zuY8(h7&lUo9gu_UzcV%oF(0@Q_pj`c7 zS6sQRa&5LM&=*z%A6_FP-UB~BH@LHTDAJU(WzbxH&IS4x+R5OFIRae|BYvrB}h2h}5hhBorcGh1CmrvXeL?HuD z^+GQsuhmDW3MKAkjqhr9!&xw<&15KQp?EHZZ9^ZQN>r6#XN`*8BMJ*?Dzl#+4usK` ze4W6qXi9d~aiq^i^ruL<)(rPpXTM3(G?b++RBzgR+~9aApwxKbOx?+Ft zvNjjZkVzAI733D+85j*+8Bpt3W=j0skUB;n$jk_DfpNeYZkJkcW42d`|CiZz%LPJS zwN>1p;;+o$Ip~(21m99vd@6t=cRfji1ETntbBGZ^JVknFZd%ubFQqZ)YjCz5Nux?N zzhQQJ#t+DFuq)w=RtDPUp%{v8)!2teyIi=HpaJA29oOe|XrRxq1#!jBw{%a0erPp| zc^Whc8L`L?QF8=jA3`M@h(Ef3)*>I4SHt?~aMEvjnZ%r_ zlMtH4<&T)dqu{37qg4OC?TE?x-3cL;z<$-7{+jK5y>ubCM0|uz%gr^>t^+%FMjdl3 z=gg*=fqTtz&dgSvAZ)l=dn@EYYGP8RgD8QqFq7R}O?P@KXUs;=GI%P&D;1$^U)heXM<_DcEIQV6g{Rr2* zZcIP$BNKHhRqWv`3z{%X+2T*=JM+v$t}%^de2#?n5eTi%3V-0GN6x%6$c>zu%E!le zICq8JYZ>RsO&+=RJCE+0zUdA~I2l6Scje*7uKuFF#fF)k%rxAD%>ekgw?2c>k=~GJ zb3r;n;8nT;NZUFOBOSYR$5Q}<|B>h zrrLg#_Xum=-0Z-QL^dZFpDdD>xn72P%Sw&G1#afqlgZ?1Mh ztU(;`%W_0y_@bMaE&e0UfXNKxLXZv(NFp|qJe zbBECXH2UVS?**Fk`t}BI@ra}eV`>bpv0;%@)-Q{!+O(DcbbCw`G|bof1?nt3}8 zY$9BKU}-ArX&*>p>*-LQYy!7HRi`mm@sNE%!{NT%!#r{u?wCXjP>#`=*C&l5)(!=u z@%;3SdUv2laJKhqGulW7a^-_I5y8J)NzIJ9#-4@z`;kdZ5HmJ!%vxYWH%&I3hlC)` zJ^E{V#aSOdR%SIL!%B^ZcFTud0%hW55`XNEWS{i%>&knYKAZOrySKxl!<$@_Z;%mv3}jNGk#sH++)xM!V$Z7 z8oD~L94`A-OZ#U2Pxjk`d8$@C5jrmVLJ(CT8v){D3?08uW$^oiU0JW>S}}%lOcA0n zleF7HZLT|VyxDmRj!{)174&U(JG+zq)zBAt!g(8j8UI#a_N^#BLS+fE~Lu+mXs7M1%z$n!SS3hkjp>stuC9K>z5veqf{2 zq8%UG2_faE_MIoH9*H9bUJ%a$%at^+QBvB4G8HAfpc=Ec%vU=C^00E z&+%efBe^3*_&%<5&z?lQox05S17d8NXMu4lE24x;++Y@4s>4951brDZR;&qE)2kY_ zPBR+L6&0H z3{B*YgTO&wDum4J(HfIn<{|+0lYwAbP1mkG~^#R~wx(KP=L6DhjR>kSft* z3+d!#=4nj#R|>THlSW_QZ#3T1i;H$hIBLhkntwkgz{@Pk$dcP{TX^21!P!FcRWoMA zvH4fw7Ty^hw8jDR(=!f`kk=7nWP-2vh#vC@Op6F5r8AflN2>$raWB~-jG}$%P?#*~ zaU&=r;pJyHUExtIt8^@vAI+?#witD-cy6!wqKi6;;Joba{!89+?Zpw!*F3kweM0mR z%F`3a`F+|`kpt65duW6@C%D~U!1#PHpP03(9Ex_{pDOyKlwY3VJyv}H#I&U2PoXjE_bRHp=n3)m&;P0Jz{1@ zF$@s>8(L}HmXCxFWN?&iWgp6N#y4h;n7c6PQhO~3QajGec3+IYpGM|EA5_li%%7S* znxZuhzj%jtoPU_^nLk$ATn=Orcy|rcex@$9&YL(ZRqkeu8zZ7yyS2%ui43h%3A^Kp zOkLUqU9%^_UhJ%6JKS|v){yTeDa?6!?m|8-&kmQ{6X%X|@F5*WXvU1?gLSj}v=@wm zRNE~HWX0XkEOk(n2!;}%-AKM7Yi0WN(@po(va995?W_2=VqE;e?b_z%r7qEL#zxu) zP9P_Q7WNDb#iw%;soxp3CUHag@8fDQ5R~9%Sv@!L4Rrk&9sTk?vL-f|mcMIG8#T*p zYV`CflwBK*f_~kFX^Ju(l1vW^7Z$Y7Fw$kAR`=n|sU69zvpT;}UwL>?H-21-`_*rY zev*jR`?7Y-GG@x84AR5JcQ5o)lxE#{;7aBx39Via|pG9nh_q)HI_sE$J(5fU}x zrHH*wML+5o;M0<)YRekbN_NyOh#$Sc_Z!_udXI|cBg!i&w1VkUOvA8<7YfyMT)$)? zVt=1S=0Avmk{*BW;Q7-%uWB_dF-nmqN_1txq8Y7Mj!VfG+1v2b0de#Qeaw1EbC0?LC}syuW92WZi5bYi>)Oe2>{Jpj!>`u=-UPkOlc`3 zy2-7lo-w2YE-9uee$emhMlzG7Dt=nJAZQVkgz4)GxOQC%uZCl)=vMuLJ=HMF9A_9= zwzpU|hGMm)q8==2S|9LM{cJe0>MbwV2)4HytP(E+Tr z*!>C9RZPPteE%B+cecTR*YmNSQt+@xvsmE#O|sDhClXU5ynI?n8fDO=q?J}oX)bZDTxzWs|| zdZqp&F?b&3sD4snBrDRRQyWi_jy~Lp0*^1kSFKU9&Ebs3V)U!$HPHAl`(Eyz;Q`5p z2y$WP2ySC=RQVOZOS=(UlXQAc27dV6j~HUDhEa748QH!9iW3@{6YI!OhY?$*Vilqj z#z%(z$&&a`ZVWndrF15{HSkp4hasCY!CU|oK*EXK4U0jO@g!|e!@V!8sO~93Cc?l~ z;b)=jF}Kp_^F!TmPB)U=$2r{w03J53=J3(}C^sajM$)IgG22 z6YU8q#9cCMB!Zi(R|Tm6KW-{LwLql7CYT|Fj$8ib~3r-HndU^gBy>MWVvDDgRUL4kHj1O0xEjS{BLWgXN)QyTHvU>wmF07 zErz>)yq9To!rNxqQ3hu22Lk2h!0H$w4a`+&8VHB?`RNdLNecLV`G z!mQ5V^ioxHSa&5=pN+;U>nniY%JycK$;M_0(h9 z9S@H~rXS!{+1t(K--YY;Tn`r+TXg9`juwR*a@bQSgM#PpT2pHfcU?2sXfL!pTFHXI z|JXv~thPFxMU#APKN;Mr(;*dD+3TS2h(`O22G_=IXT*%SDP_d9v^8@sX`rJ@7XvFe z%g|nDFW33iU;&}t=y_r#4w!v0Gu0PszEuQr9_fL9>@z zNSH&fgpGGRiWnkd9<3<5fZ9 zjzO=)W|eMYNzW|%)UjZ~{rbTj)I>OoW!Rf;Nt*hN!U6Am%5CRyL8EOj1s)r?>!^Zi z+(Dn|^W7QgtizRUo%k063Oc$4n-&$}Wm^Bp2+oyLjC6N}l<~MnqP_C&SNx&0yJB)o z<-0A4W8%@8au|pJolO>$_S7n_*fW8%pN5RVe(k0$fb^tQdD96xBNn&c;W1K2h)JP! ztvhuxW0J&(K|@{8`<2wYGKmfGCA^H+MK{=FUHnX5tz$LVWm2sT-QR{$+pVpAmb<-9 zFfn<`EzpfAiat?GGm3H;4{-NO@_5d^AhgpAk=F@kj3uUCk^G`he)xw^5A=mqL|RjN zykBqLSn8139~gFooSGu{O(gUV7XNa%M=k3~Vxi7nbzA%}SK_c>>eR3(QJHG=OJYIT zQ9$4v9!lF9(VSgnAyu|4L`|V{IzW|#!r5}(WdI@&2Mh3``mBfd^FuiPXoa<3PQr}Fn%`~cR64vqzr}#&17|OlPhx_l`zfPhb}D7v7qBcv zvhoG$c*1L8AL;K}V~P0^#O2V);%%oOvctz?@J|buTw97XVXb>`~5EyLulkMmOUmV=SA zI(m*!I&_U1$KjL!&0=N}R9mZh%VDkiN~e+sfsgR+-&c`_X;Xd5$)tsFW9Xm7f~}wS1M~jO!ceB6s(-I}z+3w9_JEmy$B7 zTb;J6kL zF3fe$w??4-IU-|C8ovAcZZwe>w*X!vHhkckhNs~vQ))!9k;DW|m~yyXZM1^`{KT%} zh48z{_=3Ff{FYb}=B@8QZySJbNrpP1PkU2=3;kxsghE4d!E-CLVzat z<1ahEwLYwb3EUJ-1lj`v#oeF@+w<#YzC*mOUaaUZE2>SSxWr#CqLXJAP%0U z%~Syf&0H%4=ooM61C|EctdQs;3f0$t7#gH=5QXL&%aUw4g;IsoMq!`StrlSOoXCnH zUPG@!g)kxIeTWElUstC|xyBJhP*&C=JS;0Pbe8m~$A8Z+VmAWgF;VzRu0A8bKOri< zA0pVr-C*^V-Gj^P-PuM((ft5SrG$iu&BxKJ_Lex!CZA`h6O5=-?Q!BHf1{$@6*mo9 z$NqX!sZCn1msq2_$_oTf^~@jO?a!>ybnfr*1DcP7tMZ_WqrN!Y4f*YNAqc>fvy$fr zE1Qb1Om3iP3drrkhy5~_nx(g9QfaGbFR#6V;bqY~Bz9Tw{oVJZCxk~QJ_u3Nc3d^6 zO5{H1`}oedl|+sq8P2D;SuI#o$-ry_Z*_$sJ84R`=n>b|O~mqWtqy?FB+Dc6+@cT91F(uK^Lmih~jP3{7vQ?DO=h@ChSJX46XI zJo##kqJ&SKq%mg&O&ImYqm-9?cc+9YH}16Sc_@SV&GvWCuf~4)vVBJ=8LMJd(7o4{ z?-!|N5%Lrm=Jcc)O=Hqc%ip$8MA*lb3OHE}LiWn5yfM<*mOd-AoymuHYlOza&H9~x z*;08;CUvKse&-AovSTFQyObuHYhPIZ*iNTRv&z`D5_h2uqw#Gmq+4(m)dP|hAchMC zMV9y1S%CZTzUQeBr{3^gl#!$NNOCGXE=J!_3VqCSj&sk&_QlMGhDWRX9_An8UAI|3 z%#_j2H1_>Q^6x<*dzj+7@86<}H`?Q)Ncz*`c>65SM)bj^&|I?^&p!ae>kQ}1ZJZ{f z91Y1LYo+T}tp{aDZQQXhk{#8rbE2qKmt^~&u?59ht(!&VF}NCd6tsev@ndwf3aY?0 z?rH6PW;|^1_BOYIXFPQ+z`Sos$E7lycG(3(RLP58nn$9fVN=GL1kh$=NQm*>SFO8W zaGb!TQD*oD4g!d688IVn#Mv3c;)HZulU8;!Y-~Mx>S<4V@CcxUX}K<=)Zca{O{BrW zd-_wLu|UU~Cq|FpjBTJ_^|=whs?JE?jw&nT`R(V5u8yEZtggjYO>@Qa(wNsJ0ls8^ z5@XURjtYxZ?+%Km-(Rr~&=usXRkZHC& zJ3eR;(jhl@uD-Ii(g9wd;62s8l~E>-OnpAw^469XTlSApD6>5^f0h*PTxGb@Z*V0E zxXn7Xhc;)hKQH@%C&KA0-aBqxm0})>toE&y0`&zPEi7xTrd|+r_8PouJflyv+mlWZ z4K;!Af4p{N42CurrJr*Zt4_Yi668=}!%l=v(;#GPo>G z#r(Dea_amaDv+)aSjjRKA|aE>jDuUz;^Td@Z3Yp0xkba+N!tB zBr%Hup&VshW8+Ch|K&9g$#UWA3+R#f- z-H=IoXP*=^HX% z{tgX|lE}fBKNO)V#-qbM2SJv4%d-cHz5-+C^4f}96UvD0J26+>d04Lb8R)yGAuvvX zm8bLxH=KIGAx2amNe?JT+URHPr5lS6#4)FobyaGmE_+C~ekT0UX%#QOjPp*_GvN>q z#_U-DYL5JzMvv*7$!OB2+zf}YbXg)13S@DrBBKIXor!kW?-?jS*NIDE@sTX}-u0+H zI`t&wR2i$b)gLoJi3si|iU>8r?lM^dR)2)>ht25SouZ^F&d9adqcHu9{)1pZwr&Jj zb^DfIZzoN$wy^au@nz~j#E9^TGlU0)S9oT%;zT=j^0qD$h!rh_^dOJBi?$#!u(%ps zbEN|WdNG}-*S(XBYcR3s7obf)9Ummq94lj}v8yO5qF}}!rD(0A`9PnBW@n`gS`C*r zw&u)FE@_-nUA}du!)BeQFaqxOYeE|zSGyB=XI)R_9ZnmnfQ64T7_{liBr$^=R?Z&- z9r>w~{sdh#9Xf9Jfa*UL@=12e%<$xUHQj-%2`!_U`Wg)7&~$7C-$iHIs95LGn{C|0 zeEm|e>b!#iB>Vx%M0XF`HX_-+R_|RD{Ha?VUDu^0Sc?8ldRmrV*)|;6W9zV3H!CDO zaS4C3gb~lqdjCr?%-uR^O&7t_ulMV>%>kF~6QXrhvVtd-pHfG&-Z3I2vUU1|2|9C* zT5MA+X_X{A_5$QkGkamolq6!tFM~keJecruVIO%+EHnF zXM>5s;8s@C173Mip#iF9zlSq*NX1dQZGoHs_tQBB&G82nDL;#<^IVSM!7Zbe&5$17 zUUeI-hlbdAVqN_L`V@Cst#Ey%y!{UYbSjUoUD=sQu4c9-6DbsUUqh3HilG~Sb?lbb z&jq%W6S4=DW0Xb9Kg*!#oq)}38fEQt=6_E}hJ{&I%q;IWRV(T3HNHx!rrD}4^UTmY zRhz1FSH2#(agCS7Y6-U(@iI7E+g!W!g=WG5PvwwO73FbH9VDft!EH19%Gk2{bd0Pf z*P7SS{RB^BBDiFxorjbJFmTb*U$d}>Y&;jg{evxJt2uJU&+Lo6%sc_CbZ-|-y}qk(2&p&IHU=2mW%s@; zCwy;UsOP|r;}@+LdM-k47+C6^=c>z2BiLvez>}0P3nB`@-nTA>NT`GQn##i z9}UM4Vt?LliA)#D^vCRXk>-GMEJzXu=_pvleuszS?zp*zv=m;f2m-BSra~4T}hfSOI1q-P~A{~ z!uDw~=I&hR?R*cbB1&DQJ8xV@)HGCD+I;zjwwd}GcKH5}pDWO5ML=u&$$3Rn25l+v zR*|ZHeD9>4Wp<%gi;4n`4UU=2?L8F>L)v2DmTr6%nDQ*TD1@E^nk;3X<1vb3Vy*G~32bmJ{*fxnb=&w2NWiF%S%1_ ziqXst{*i;ytFFSL&SXmxTu@u|Z3{Te8O6QsD#o%8$HdD!7wbfu2m-%jPGjrw%yW-8 zV6;H#2vDrIyBBR;uBc*b*8gl`VnNMxF`xEicn>uZhqlk{LT>VwaI-DBm}k0mf?N_( zSb`$WJJfMm58w@+RoM~>qPWtJX->jXc7epI2R>#WC5XeC74=^ng?_FP6H<&l3Xoi0 z!#e5^J>zgBm~sbShFu^G6pnK_!k1d0xg9x#W^WU2RotXbh!-&G*DP?TyAf z$_^*yIB|ZWK?YdoWu&d2~*i5@Qm3?2E~#g#a1w zy(6_J z?^Ayz7#zU19mE6|3&^-h>DG=47B!WN_U2Gm{qc4lBSN4}udh05crmtqBf9+OtE~aB zYjA41_LgkCO@P#Du>TrnTxsR^z)AAQjoT7XRxId<&vx!43$zv=o+59PN_SHJJKtNJ zO!)(OlH$N=9vrJDwJs7BWWipU$%ykkQy>7l)d9=>AjMz07JXyQgVW)6H2+gFLP(w1 zp%2<-bW!=eDw!{Iky?rGtQyipd7SCk?h^xKKQLvP#!{Cc zD?@!z8=o?XmK{0&+vZXX7U$_`W*ceOk%;Xq^WARmen`C&Ed5t4C63rZ&I>O=_R*!- z&z*bW@AEv!SF;G!$efhCLM!ck^M1XK5+t3_H*Ks#YM4Letpp8*9F$!Au3}wGvyGSg zIx`*T*qIdKsk~yH>DeRxt|gCRJE^Q44iA=y@mwWahcU4VATaExCg9{&QM@6fpuT*GeIqM954nH|JpSriLzm-}Z!Rm*b z}JD<3K-C4 z-;3L|eI-QhDzK_RDw{~wTu+7M?jn>W2O!bD^O>n#RyO${qaab9vQBS zc-AGr(DP^UZ4vUBxQ~e<&6yUq@dtJlzWS8gM3paQhYkk-k_*^@8r3@s#?oVO-3lt| z-fI5mKoxx4U+-OT8)X7yuGYa!kIJPMitGwYSw=tCQ0YcDtF?AHXiF z&MYo78xIUbLA@gC^Dn%w#d_*co^+USWxpR@Mz0>TsmF{W=T;PBt>kTVNcpF78Fuh7 zlr%D0)%?e^Y;VCxyCj*ezjT*I^sv|Y|BTj^H{io1FlOngRyHmtM^^q?t2y*cM&ih& zN-~e6JdtHAe_o?lYlJ}cFj&CN zT`;$;u~k=bQoz;nvOTLJ2%<|FF{cg}eJzi`6vaF(9Gg|utA^NJcsIKpj^lcY_tD#y z-$`b9Mq7adzZpiR^0}qZWEkiA$8%&`QlR-2?O7}VzlINg?Aa-5JkFgNjXELM<6>HZ zwO4@#eyH;X_p@pmf3ny~vx1mdkK!m#3S9^kI9%v*)j2eo!M=hV!TgaW z^ojII)R#sZNf;T9n;IO%=F7O?EGI=%u2`|LFE_&Qnt!4`oG8fLe=+Z3Ppo8G^u4Lc z91`I$+kXyMd>KG+yGWs78Xw#$2eTNK*~?}?Jp^2TMLkW`U@=NnN!FXiz~|#%>E&JU zq~)l(f~OVO7*BN$>emm1GM*le9&O0v`{QAtlUlQ@S^8C6Oc8y*1TXuXn*lLFv5%8Y z;(2y{7KNd&t7J>J8};pExJ4&j`-QnCOPQwl7ZQ3+V*0a6b4MTy6JXh{(U(Y#?Sl|W z-W+kA>P;T2H~|rb0v}p#T!Y)HkC_X+(dDmj^iYqbVRutneE3bDv@Ft|Ztb4^&ISYZ zIL>SlG@8i|Mnvo<2?zS->paBrl#aeRFf^+!=J-ol>!As(nPp?Jk1EXjpge%-Wn zE@ua!U4*gJ%s=}=T$t-I#3Lc-WYa#y8kGkidbHkSjDcSxE z-3lo76g~E^2A|+H{=(G;rya{_D7l{4QE`p)KSZQ=5}C9ZX7s0s(UR3)L0lF>dy5Xw zk|TXe6;~BcAIsy*&O|5-;wjgBaYkRh;)b>VFhazOGbTv+bURB+^sch={S{e z%X{v7@8$nUj=f&f5_z-b?TH!QJF;SJ!Z|P2sUs2jIsLyaDlFj`m;lhS+F?% zjfr_E$xuju^RmgGw}#hQL<^dW(`SYXSDooYn&A6>|z?2Ejm93(3 ztcWzgo<7Ur=lF8*qpzVYlR(&cTYI@{n|B@@LEn^xr}HX956CZZRE^&b(uChqmL>5G zSZk}FV|c-LWF%(HR??EvsngoxZVJ=ba{@AeuFDNRyKVdruB$_^p#%HyRnIEo(-X--EicLn0@rnoNQ0`S%KBql_-!=!_rAYMNVlC+ub zya7(#dJ3DDdP=kY%n1G);jibt`>Bj}I<}uD4V;DW`8|I9lIJe-79s2Bo%uxao|b$5 zNCgpaYOOnLU-x9%t*SI{65W*TR3f$HTNGkHrUvSdt0vf6*hO*GV+dMp7bdXq_~NfM zvIM3w$h=|ZAmjEPT`U@Qu0j&pGnSB8%F92Ts`Ukv8^F)d$bgu#Lj@#;J9GL3GOyI1mX!6HVO3{0PM&Xd0li2S>Ue`-5kt}Vpk$%R*G9pNOr2y@3 zk4d8ts$?b?z~8Ub<}g{&n{Eb6WBJ1mGe;sH400p-dm1#@X|_j8h%YJ!V;cX2Mq;-R zs!Z`}{zQi{x|w_h@P0ETjCK!c=EesOID#s5#PQ+^<@c9JX#?nfV2MO#vlK zTE8pyir&D4?7USyqOB)SBomMLPXN2fDRh#Q%%_Vcs0{)P!wPz*MSIDh<==ue9KW!? z>N!^jza9i<2A;R3t1u2PsZy*n99msh6{R`oo{O1SQD|^G{dkl>WHaVl25A)pZ9gK$?3uUn~y-$NP z;T!jnR~glr$1gq_@_$|=!=j&qjbEC%LOStj7bm#cI$A?{XTY|*HB1ybp`SBOq3ghu z^s|xWtwW1(Z7GU_K_Lm3->>nY6m=so9yanZ7ZSezSA{UzoRM4aZQ-JNl1oR?U99MJOBHT{inP>Lm>I zPSeAt9`BtQX)vaS^0yvBc(B62*U^Yg2l{qmGu>Tw+%f)x+?P~G6P8e z?piF}dLxIr-Kb58NH$^F+PXwsXJ)%mn6oTPO)r4~4*h!}w4+Zn6C;Yugr>6AU^fqE z2fFaQ58lQxVxEKy1T-4`q^jPI*+gkj+{~NbZs9uzlATfGN{PJ$YZ<*jG`VX}&B48%ymTgS<}2sT zkm_toog?wI#@f6y;;k?cIU7ar<{ixL^v2Pf#t}ko*n8HjTbkv2`g?g)0(Lp zb><=(tk_c%oMXXlAA-0F-2H)oRy=85J=i!Dz$lq{53c*<3$`H)%vOoeaSS_Y6fg%hcs+pIONG2dT5OkPN!-@EgPwW6;Z7NHMMt+dHzVyXLc?$u zi~?i~wLP6!%hF3<`uE21`bMMqI0_o;>3yCFQ@9J(QbN>oP>92SeJ^S(kvBuvQikeE znU{ApYflnVI}SUi(&t(+c-<9#C^XId?XBB4xnJ%LgyrdMk{tklb2 z&T8~+??&3RN8!e1tb$&#EHdWt#i5CW1KpK!;$}gx?&0H8o>0t58F+CoFbb+SxiiS^ zf$iAvgFn@29L?2rZad-+&gv>o+O~43?G~OjbZ3)^3K@3N(en*$?Qyt;)+v0k3%|UV zplx9K-dqzCpEvcEl&fo)-CX-jU?|=*$#t5B9Z1 z#4Zr&ra!AXedO1Gb)pRb;D1K5&@n?HQVS;W)2g?t^b1e-PZSHEZ z`d9D|=kTm3{EVSP_REr0yuXk?DAc8r%oWYsmFrn`45rEw?fgIAY7x^W&7ZsQ(>Gd^ zY+Y~EEvF&j*zjlnS-;T8Yw@NV&B0oliB-O@5s}NjD1h&OqG0@s_a^Dum@bk_B;4Z+ z-g-JPFn+!M^UthxbMM{f+uzyyJNxY9?B=*R z8|cr`hrwV5t}aY>=ss0_>1spYrte1p7)%Qn!Sz zdU)L1=Rgi+(ooZ)4&AE!sJTVc6w$WBbTlVEKH2l`RK2sOhpI^l+>yUpUYYtXTkKpB z5q$NcL8_i*p030B@Eg5twQ(=!h?fLEyNk`ba!2(C)#yT7n61os`CR)4i3_R&5q=A| z`TVE-M*LxPt67)QXUFfjocl+fg7CU?B;)HxJzPS{YBF};GVR-$5ZHX-jB{V?cGCjx z{nKQ62?-Bt-JGJF@T`|Rr+rKO_}W=4iPF1*6Mup>&$unGk5hZBUMo5JxxZ~`Hh9ml z0nG}n98CCGyw38&Gv{=MiBHm{cfUOOEAG|tfuW|=2_(7G%mzx*!-AauaJ98APB3mQ znd+b@?yPq_+aIj+Xj@@j!1lB4$Y*tPy~h<+?3m~*^{rf@aN6bM={`TkeRgI@Za~qt zo0ner57e^5=P4V0GJhZAmv1(6zVup(NHtxBnzZr;rt#`XAG_Q$pa8Aa!QQue0qS_f znQ2bWg?08&shU-F>0Bl+Des~lM7uKHw>^|*28y=F`}8P_p}F=90*P(n`_|q;7yG+^OuOzI-L10{m(dOh7F}#h%!%hY4GIz^p%4747gT1) zqMGeu7nix{S$Gu&9N%!Npm4yNc(1vB1KR^%OKOTroVl9LSyTMDdtGM5L?SW1YuoTr z1K*yo>5nc6|Ip!Z4Lxsq86TOFp5nbC z#eU`M%kA;Id~)-|w9b=8^5nF-WBQ`d%igHqQ~YE`S`u9+IDZ)2QRgA0871dubSyY4 zGS*2yE{Q}gmvz}oZ%%Z!Ei8$ehLWa>=ol-|yn$ELif;m4T|2VdHEaW7de4UM_TOD~DQ5T(PdAoQCc48^^t!wXfn`l=? z1}8mTk8=I>pIav{axpn)&@!z>v58>l+u#4dq&Bl?#gW6d>-VPhoWduIOmZH0-^pmQ zu%veEZ=PRpUwOuktJlyy@6gLl1WwoHNy2km|Z>bI!1q(a_QXkJKqHojW?C z%P*%zuB%^YmU{25Sl5O{J(AZM!_#$sZ(CIw`C>(DTKObPcG3Q{eUIKzysB#_#}4sc zBA(wP#1{Ae=DpE3TKrqurdJ!u^F6&8E6=ogm)XQ9Oo#H=8EO5`Q?@*6uH19Kx#7Ls z|6;`n1A%=E_u9qqX$F3mx*l_7p(le{(qF|)URZw36b*~&+CF~xLTxWw_FH#{azkB4 z|H*|t27S4!iSUuNW>Gt5Mtv-Jo}AHG{rGZ4giq*)g0yQj7NwOFTppW;E-@@KR($v) zxi8+&__$wVq2+FE=WNB4z5P$0DF^P{-g31`I@0po&Rc~OJ~3{Lg}SOr1a(hu_6izb zCP4uL84pCMBtcMjg~8}{svv+L2rA(`&|f5FAbKvBBj6$d1F?$8#;}7N!2ppHouA)H%5>N@iRT8mOK~pgh8eSUotTv+&a1BHm$Uu0rIdDgr9E1~4 z1QZ6zQi(!w2wQzPT`myP+?h_FD4;h6B0#AOqM^}YVPU8+JW3|_M`Ni}DjI`B<8Vj_ zfmDP`m4FHAC zfFLv$g+WUs=&>FOB`Xvn`4rGUdMLQij}Y1&RLDZ)e2^6iN|k0~DFpm4{y`yfu_he> z9}S8@2?SL@vtqxQ(%F^G`Qo9Lz+WT@(s)5)e}hztgkQz_CN}kmCY`Z?K<;07zd?V_ zT?2+tY&MN4iKB`8DAuzX&$ivAH-3p1SBBfQ;-A!9*d-qsW>E&LL`%g z6afyT62?%uN)<{#$_Ld{5IIT&@$jfZ9)*XcAjy0z7D*roKqM6qkdS-;k0p|^I2@Tc zmf~l*2&zgzJT@vdl>nk5U~m8qB=C_`JRXB2fI<*Sp<;MQ994klg8)DlU;s@t0zS=2 zCYJ!va*8B?KZp*J`fCQ%g466dt_%bYh52gXhykS#a$q1H^uLE3>1oTh>YBjNB zA|8t&V@Xsz22Uc8zk<9#xdN(0H76E>!jER7UKSdZ3?wX|u2YCW;{oMDbCiRCQYPoh zWMT$F9THsa`DK_5Z6^Vs1ekylgh(+sA`L^P;jmmRiH60|2-L+G91SxDFB6D_;r|P* z-aK&n=#smL6wv(P8q?^G@&JQJ-$q}>BF$EU!!?_N2JlByPynHzKocj#H9Eu(0HppP z)IC0x>u0;@A4&nw7ZO1-Nq{7ip#mTfctRvkz$YU~L;z3b39uwG$p4mIArmUY06A#y z59tVL1(l~pE4Y?fi?MPiyfn&Hz#WnB=?k{UO&6xxPz*?*jj*t{-xJmjd4f{!v~3 zH@Wn`9;ZMl^e-q3IxKm-GNM8UEp6U%XC`a}b_Hh98E5+evgif5_$XkoiPP2BIN0GM zvmm36(v{89>C~Aqc@p-?-u^%sY}`9nrahNZ10G-mwk(}hx%mLY{NBFf!gzDa{3$DYhv>f#Wohet>9ZO4%%66NrkLvc)J-^c}0Xg-V`7(?9?7Y;>$=&nZBkr~; zZnuuSX(&XYZ*l~%>!NW>pGMLPS+4s6)4Dd{));=AZ{S}}>^>KIux{0?0zcUNn+Mk2 z){Yt+&^lJK{AuL5qpyq0p5zU(tPZy7p3ASkt<#<)^2r#ZKtOf!9MQOS!#vz z46G2@C$&*h?5%KMl3*pV=jC5`NsGDLMBf(kw~P;0{!D5KUR~U@#KYhiaI~SgsI96r z$tX6?GIP^-UD*kxO*930@Ky@spVYSOmkEhS32ti{rbRturfZ#}kKqZe^hVNItLg^g z-X>?Al0z`>n4kRao}VCqB%dV&PF;*gIUi2fL+EWPS6w^jd%CnK=jF-{t$Z zaBbdSwtM?-o}F}N%Pb2AE8L6|aY5ySUib4~H#QyJbzttB7dsPi%jDXv*A7#ib$$+< z{!!(+h?Y5jc?<=)Vfri!>eikia#mJVefs8vYRi*Ew>^gsd6MpL^pLhiEx%X#cy@G) i2pQQ#x?ehBXrg}_?kKtYj4o6VFjtlvv(RDvw*LYv4^3|X delta 243 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 WZXrA?iE{yE5xm`f1Vzg~OZX4p$R!y7 delta 129 zcmV-{0Dk|&C7l6~BYFU2NklE{=+*s5>ekii{$NqO0QI0V3*n;K6GWD9sUm2`L>)mR z5=bS5lF-l^9;wH@2EA=|F!Vo2x#L|p)UZtO-a|ICbg#$-t=@lYjdiB|9!Z6ww7vS) z<#(wol6kw_BCA+QJ~>>2_}_06D;X7!7;Sc)F~{l~i$tVN&R={JY%3hgP*mwI}YVGgrCQc@zYtj$Jp8ADg$^$9WuQ(foT~D9)sv}A~f?>xAL`NKS7Y}}SROlS(;E?MVxcGDf9gDhhQBh?{vTDE@t*qy^C z%tne;V+_NcbKK75{_9?@OkCBsX=%-XAq8PYA-`CKWAfVAq5||aN1cBrJLi`h)0!DB z&Hn2}agRziiu=jP`!?=r997fb#%4D-@Z*+$8=b>@Hep6>QDNEfsNi))vB$Dzr#;v+ zvd~LJi*Xr;l2)hcy~OPYJx(tDyRa|7TFBSK*_75m(_qc`xSw9tJB0{`(@mCh(>7-r~Aec5TPe9DH-| zVaCDQ3k6x1;cAqxJC=3V^*^d}11s9jOWc~{X0&Q|mrmU|QNFF=$m1h! zugmwl&UK~Awv^tkJSqQ2=sg%7b+?3Cba5m0s=R%EQs?g4pKkJqCGX?@Kn{q`u39f+ z)yeYW`>fuk|8=k9#PFk0TLWIq-}Az6aeHF$oBbUMmCcH#PO`=S7Qe2J@p26H@4FjK z*6%6ry1&VG0Z(4mbojrF%HG(#dyaeBdJ1L891@I+2>Em&rd2agT&o}$32Ge}Clrd$ zqy!y`Eg+0E1rbeZMD(`OGCGaKMf7m49G2^*5HVyxlAZ`n3JSxL7GMILKFOErlOO~D zYQl)p64WYiA3d%V zhDfG%Lx49CJ;rF%37Jfj$;2?R8CrcblO+%cm@vXb5C~X6hD41KO@K58cQZs6hJ-L+ zdQxX3wHlfk6IE#Aj3PQ6=xHC~Q|sjN9(awRn+3oJGXd2xSqzw|Rx^8h7>v?*0MZ@M zpL!U=z|>`i5C(0W9wVgjgvRLJ8v@6A{B?19l_ebm)UNH;2ns@C4jmP=OkQ5!GOX847?iNPvS1 z*ccb#^B@>kC?JkE4j{Z?Z-~dncmSM*q8y|b#0)(Nx)N3Oj>-&$11JTX;IMEG8)EZe z9>hUWE`%ykCB)|O1w18>qeQuE3lxqCr)u?T6qJ)xqtOIYr-`;G%!CWY!GR(=!hko$d2^>W9>7*tu;iDpqR1={_)XXM}&t}Q5&#rNxI&mO zL|9=go)CeBT;w|#5yHLfwK%Cv{D0Qw%|r9)DtQ2D0P81OL|r>7lvvpH*7d3)EnA63 zvup|>igl%6K;sGA5+}gwQeiQuCYk`#qq|){$jLux1=w3ba9K(M;^JH`#6b`xq`(Di z2qQQO80X;#!s?>62i>4m8cnF45Jv+Z0au_sEnLw&Ers&>G!|0~VXguo41)Pk7hy14 zh;X|JV}AJ*SxO!cMsNbOHw$z-ALBy`9?FAQN*KeG3IY)*{_+%i_e6J!K1}mi{7_UM z=Kqwv%b?dB1=MuOz+>o%B2D{pQyJI!X3LLG1-WG{ t8$@>HYxJ!551uOScUG3Q$z+{XPD!fpt>@Iyl^}acpfpHQG0fhehCzS(`BYy#0Nkl1u==p7&4Yu$Wm@d z(pPF~qRfr5B)ewDR#P%@;l_`8bWWYGn{mxzV&16xfion%`D4> zE=-=*!#{Lj`(v2%3wLeET*ong+ls04MhxU?u=LmoxAEG?z<-1C72xZ=APD{dNUW_JISbH}=xL(jOkjgr%Vf4#=bR+%u6Ez3wZaL6-R>;J zwunS-<)Ze|V0t>;L_ahCNH%Cms)6I!Nu zI;ORT*!P_m?)!$6l0Q)HoMTT4*LB5l9JsEFYiXJy&vTA{===VwK?=yT+?SV^zdXRi Vczl&7)+PV|002ovPDHLkV1ku5TnqpJ diff --git a/client/src/main/resources/textures/blocks/grass_side_snowed.png b/client/src/main/resources/textures/blocks/grass_side_snowed.png deleted file mode 100755 index 41f619774d864ddbb26e42f0174998f52cd6e546..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 268 zcmV+n0rUQeP)0pZ0MJ-^(J*l=ZM>h^*^g6SJD(jLTk>9( zA)K0luBXEW>;xR?HA}$OoyqQ#Ui!4whCvYBZ4&O6;~JA*&vqV)?$_fs0{9$EA+Rd} zAUU1P6P*lQqJl+LoW1uyfFyMLEpD*J S*+WhM0000N27@H;g;;!XYc-vX0!jkuwiRLS4pXgwkDRQDj7-LNc>= zvelQ6J(C^bSKsIN$M3)2AD@5T<9R)w=XqB_H=z%u>0E_D7(1F3{w9d(>rJM3kU+Fs zR1%03NFf6NfnT%ju0C2i&-Z&)Se+esuF(fNeC>m7da56! zxw=b-zUcCDboLfj+uQAW=qVg&6rqdIZ{jm>K!l0sDJVh=)^7lZs%!S*(L*h99esJR zA83WaV}~<*8$tCt33Ku1f*c7`)0ZSOrd*mplP1ThxP;D>C--r*bNg1EWGkS-m_gPP~4I(mhUG8ui< z9#Cp$smW5W*Z5pVaQCO0Z+q_kC^c(Lr#O3FEGmt8*eCVYiA>@W-gV4&aQN8f{ zX796N*{&X;5UdC}dSL#8z^Vp)^~B+%OJ?GNe^fz&*zoN7GyXm7F?zfp8eK z_2#pUh_0tuO>?*v`p+3SeIo8a!OzQb+jQn&YFTb@*HzyWUiOxHcR~8?kNC{TB|6zH zIsL)o!d4e_49qG`P72M;rrxJ}+-)vScaegsrwhvTR=kXm5A2KqjV0S2DNJEC zzVsq>Dv&;z=4tD^!24w9()ii?$L}Z>4BSLlY=v1qNtm3r$Ez6hx!(RYCep&4;2H3v z(KzX!8jkRD<$8@!ue> z&cSc*(TI4h#Rp-rqX;;iRV^Y;iSs&bks1+VJt>|U@oP#{6jA>`t{Jnf^Lbf{JFYx^ zUtatji8n9bNUM-BtD`d|q_4ZM^e5#&YNhh84@iY<}U8hytKq zRS#gPlJeg^4bz$VGXw!AH-6(`;O}pMdR#OBPDpfk$J1_S|=VS$?&yXQT2^fyF#udHWmww8;nft&&g6zWYcE|u=R2L>KBbv3=7wBN}#un*R_ z$4JAC%y{j{Q_Q>Q_AARV+ZVZQEMsgMf&H!;*E8yUkKVg+wffcSgx@CE@;C0wGJalJeeC*k zQwKYLh`C~;{hSU}Ek&=w1S?M!za_ZE8r6P(u zJG*gGZ&)(kgpDPf0 zJ1^G^?X6X?$e&6Xt3sS4m(4pH@amg)4`@NP*wq!`gXMvs6Ap@wNvlHbr`#$@h+s+m zlCv<*59Uxhp+ZTty<4t}~hyoIrvDE#mBNghEMhGNgf2uZW}FAe}jX?BL{vuN7C8Yob>gb3LC&o15Ph? z{>$%5Ioa5lTU`FkHf|_0gZrWsjY1}COS#f$R1FBk%TEbU^mZXB5xhMie;o)+3CdjJ zPL_c~m61>aNfk^`h2z00E~-edi!uTR#uJIEP$V9SfD@FNc|c1ho=2Ry1Ju5xstkjw zslky5n7S$yD#Z%|fsBmJEj4UNzJ3&MFKsEf5)7)Otn#n(7o}n0OCfpD@U(wj7}K8z zbp3BD(37fRPNLz7cp4s!r;+|Np>S0VC_)1c!@$%upvoF5NChZdMuLfW0-i`vRwt4WE=-%FdP0B6U?>9o zKV)X|QOLV$J`|8%ytZ@^003~gm>Qu0hk%a&+4)$VjXw$x^|HMm0H7rO_t*lnQ2~EM zZkn;V0rxz&2>%f%-#KbU~Bks3)0ut6({{e)`c%flnlDAJNN7N3x2zjup{*(OM*>g<(kPQa*%(nP& Sf8@_t0mcSb(69AyVgCVXt0*%7 delta 2915 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 D#3KFe diff --git a/client/src/main/resources/textures/blocks/iron_block.png b/client/src/main/resources/textures/blocks/iron_block.png old mode 100755 new mode 100644 index 28c5e346660c09ebbef08503cc406c660d84f73a..7816799ef142d7c6b44adab2106a417a257f6af5 GIT binary patch delta 307 zcmV-30nGl5C(QzoBYy!DNkl}i@f;*PW6N&)Kkl?6_KYQ9R(vh1yV0c;@d7M5k%E8n*5iH}7Lg5ZC?cL53@R}9b5 zg6Phb0$!$Xx-5VhlCZwW1dgkU)rCD23hhD!SbYJ$fCtZcknz=c6#W1I002ovPDHLk FV1oS>kf{Iw literal 5005 zcmeHKc~leU77w5TibbG^Kp&1HRKQM>$wHDTy9p#{FhVF&>C?$%f~jON8BB0NWpP18 zS}iC=QK%1G9;jF;pdv1`J_Je^tthp~BIRk3#vRc&38?tmbKdcs*Z<5pS>}Gf`}^+w z-TU2>Z=)nSa^iT8@e~SWqDaV(A-^Y?-*)53 (oD1|acxLi7)h(Qg2R;N)YlW~AZ z)#3ndR4OPGW80VUOLTY3-WqE0SJ(@~1M|+Fl{USlc%(mEzp=f&yQ|hP=So>tZf1_R zbLEi9z**ga9=ybz*gB&h^2$%V;Q+REUKq?jbhXa3{-bkQn&z?NX44x7n2-JH9?EG2 zz8T+XvSqs_bl2ow`(dgk`{53`k<}aEx^KVm;ru=OfvH~~4L*No$PRzM=XkX9*2|l> zZi=s3m}bkb@VjMade?jMLMH+9hOUHOdhlFlYI_Wscxkv(Va5K`1S>R zC-~10^grs!$?Nn3tAIg$S|jI+sd(>hht58WTS$Q3N}+I!z5 zN%~=&RkgLtS%UTLP1Wgx5~us0(7~fMpliWDk1vu&om+EoTS>%DL^YVW|BT@4&pRmT z)kkk#^j+%`@BXkFF4O0Fi^0Q(Y;T<@r5*cRe7vCj!_4l8Nq9QrOx{9A)76P5x5fZR z2R6Gtk$Kgx^R%fR$eJ=~Z*aze6>Bbk6=D-_m5vk#MtM&=+%1{6{S>nHR_KH=uBLez zZ?{R;OsYS2#$B2*eNRMj*M)ICp_!o(lSZ4eoaZI@TB3|h?MZbVL--BhbaTQ@D?>7DYgsJbOV;bxHJKkIu*278R4t`y} zt%5DV>!x7Yyrs@8u{b#E?bs;ZS;e}Z&F${iJU41g;=I_E_C9%1o#3%F{>#T6A0OJ^ z(;)VE9BG1%{S?#asS@sMQq??yl9$e2@SE^U>OX4B+aG+3%?&Cl6VG4RK$Dbg^yn8( ztk)KgQ`^lRyJcCi4U^K);55n6#@d_Zcrn@grV-%KE0qKf=kB+ujIe=$-T>L{V~3e5 z0VH>@NXxAMNZT1AXm;pL+jwoJx?i%S)8oMVvPjpQJs*bMQ>ixXoPJ5Kje08|00VqC z-Js84+wabVW*gz(OwJOozNW84L&wflC77ZUmZs{o+drSPBij9H>D~R!;&r>2`Swv0A&Lxgpr@3Gp;$%$ymnb3aHpGVqwF$?^y}x0a~Q%KeV7a+BOm zz812ryRq%k?=jL4G;GyxpRPK8f|o*dThO8pjSsN>we5!AP)uXtmZ7s-YCXT-6t<(N z`bb~bd;8oZ7bo~X*igOV7^f<)U?DrRr>-wF@5!gxkEXd)RO4Pzy|cOt1%;FGr*mC@ zKh#_L8Rq5x#m~$CwX?;ed}hzgi%HKCKQs}Si*%L2hdsUl_1wNN57gynjFE}n~d8%wZHTlTy_|*%1Wc@y$dLe}$iCUgsywwta@B1Rh zy`2^L1Df7C8~KjB9A=*jIctnca;D4|&p|Maii*lLGMs8uX~~&Gp#+8)wJ5d(Cjc3q zq*Moi{k3%oJ{DODHvJz|4ut zG$}+72$Ji-^Y~O+vG@hOT0f!!sRzx7YH2W)PE)C9qdoM5U>Qj=640M|=%wUnrp4fT zO^Ob~1+XyOb#0kU|6W+7!sk;sZg?OBupX-0vXidz%3R@GD;{& zhahl{Qk`Oa36&~Ucr1aM)r2{01`p=YVLHr!89eSw&bB`DHufOKz|gBHj*&SJTsnW z97y|vCV>{fs3Al84co}!Mb1Lni(xpTnR)E|g|CrX{DnJ^)NeLM@xZR;_tvGpe|4j2chU5lrYqrg8|;2wapFOl zKbXF=HJtC8ZSCaV#cE_km%31zd4>9n#<;iv&+^MNKfKKL^P$8g*#K>l_vE)G?+UkPk!{qf`T>Z%fDK~9an92Kl1Kiic`mcanGjn>1R7aH#;#sCm#86a98kYT{VBkHhaOmmDG;3I>*G`xu=?V zHxYZdA!pw1o4txkwC=jW^V0QGHRZO%ARL;9mu<+s`6%*klf%h&bx7M!HQzG)8+Cv< z&VJgStGDwy2ZT`@w>uv|jMEx~33(wk^rDt|%)z3}n)2#IYKc{WyPwaA2N~C|ea^{EWBW6a z237_L1On;n;~5D58mlio9r)X(=M#uP=m?etg(?C;B}yuj@P$zjN)ac8P>@Q^KIybYqZ}u`yqp6oWioI%;V{2Af-iJ{(76n9G zzW1YhrDOn_2a_ zCshmfTrg@vlqKHoPj;_tj4RjLA74|8mlqqjJ$#}_7%}z+v{dErZpkyN+aKe4uFsR& zKV9tR-_ZN&{Qmy8<%>Jce!QL(^XI;voyxo8J|+(h+-QuO=yEy3)HK__{chWJd~$e& zX{68*z%;H~oSGg#AvwjQ9=X3(bjqA*XRBL0Wn_DhppII&-fFg?*m65wT9|a2T;<{v z{pv9$Kjl#MqWJfQW19}OlvIzUXPP(FoUr0P^EZwe0i}i{#_z}~1zz}#L|0qPJ6?Tm zq+?BJO#$&rxgKjIc_Jd~YDdJI_KQoxryVmhK`barw`%*{v_C~)ba8FRP50{y%@ODs z)}Ub=fVg*!>Bl=I->K(D(6a|xK0LO!%(h&(W;0fmRgNtAgS4nhv9|anAObdWbf)A4 zTqEjujO48{HgTl^oWq_r9_#QG6KH-js`55*{HEsxo6YK@?U*3HPLpSb-d9+tS#(AJzb^vxx!w2-Ow4>IPo*YenYfpG!G1c?a$uu)F6- z@;q8v2GMvmcIFaioPlwzIGVq6rZnSR#ZL1z`D;geS5}1ORajaYriAZN$Re8g3jF&r z6_MtwlCQYFC+zOvrgL5AFK`QvIo=&z89NrsE@1Yta23(f=9BYmmpiTU*{shWFh;(X z<%-AXEikhB>ls&X*E>JEUh>*=PP??0)Fe0@KCNx}wDO7@78z{HuJ=YKR8<@9$-px9 z-YBS@KNuQLS3T(J-Ev@aaNWI@Yjx$RF8^7$o#Dp$aCb)S+%5wnvsN;%!w#ifUA=bE z1ANF>V`0YV6Q|D3I%`<5hEeM9qG92!(ia#m>TXQc^m`ix$AX)T6^~kPznoa4m+o=1 zD5)0nQJplm}rr!)7W{2*7Wp-nbn&I#`+8{95yA5q!TTG+cc`M^xi{9zh=M(~9s(7cX+i$((a(!h?$LK3%>)UgpQ0%u) zW0rGR{j2OIXLX?tms}C?Vtfv~y5lqXrs!xGYiPHPmBg;+bU{PHRp+PX*+rZ3*QCzb z+&5zY=bl)=(0Q~sZh$jXv-8eF6H;W3keJ9a zs+Vjpj?4_AuG#r&>UN}rV?W=!PIj?CRQ#Xn6{Dw}IyrE%OZ*UG-+ADs^{6n|d(*0o zUNtG%x`DxOkV%)uw&^9XCfi26A1!nrJ>{V5S;u^Prj=Gkp0>qfT;hhKMK}Fhu{J!X zwXbfqB<7iqypdiw2^o0nt?Thoi)_mb#;32gUKH&IOl|IG_B>Q%k4Z14S~5P&5hpOK z?-3RZt_-m8i^bT?fAHJB=L!CcU&da0oh>*M=|k*PCQj9}b60g@38Us84{vTUQS^IrQ|afj}lz>-5JQ!pIs36M>5{j__}`gP`@oo~Ip+#)8%CY$w!uao@M=QlwiS6p%6LI>&9_Mp_L_`=CJMAqYk`^*U;@^|H*JZt_4Sza=SRNE7&uh+f) zL1$3$y59Be1(x?C1MVz7_P(}sem^FwtI57czeaaKmf$b+&0R&~_Xm`mvVC#pkV)P9 zq2v#cOMFkSc*QKM<$JryD@@bhRuX#nt;&YXH+eH_$~G5Qy&4-`eg!^@R6_X731!Wu zb0s1y$dhm&tV$$>&m;uG*;OS4xsi|p#epJ(Vg|aaqzsJ`@)+n4G7DfyJs^S5XPFF| zyUag`yDXAR`b>0m@m%fxzZpd4E8E z$z216Q7jhSQ^Ji=hv)0bK&$=Jc@nOWN7vj!AfJloav=UKoI(*80pX&p#yk2f$RVf=)iY)2~Wt6`(J4F z;z2nNm)u7vhyBNChK5(vTqt_@Y4|Zps98!Vlx9)TLGEx0axfMet~bmzJjE4&;s^-d zJwCVVmvP}gv;vh##*-kBhavFrAcjPP>qnze;Bpc{kVFMY0Eti5sPL6tF5xSbpbT=4 zfOUkmg46HMP}6@zD+Q3c3b0@pfP(qEV7Si-UKnbVB3UMph7fi(s1qy7|%l>wh>iayoo ze6;Yf^yovxmecp;jp#GOFE_Tndj$$+ozI`mODyDFvMg z{qHS!!4BO9gErkyLdR%Xt~qZFhGSCqZk|FmY94%8NCsU}p4kXuFJyO?w=#IjQh^=a zqy2fpP#VeUxGJd|k-PF)Mt~{OwnW=$-Wl@6p^q{+?W;@W@kf8$CcBuhFggG<)QtGoc^{h z)`9BqHyLqcA7PHJFz4*eXPno%l?fd#snK5Sw3n<+{07&;;%oZh%sn>9h7E$V%R_Va wTbyPZBTbm#(G+C9=x%REK5~(^b delta 315 zcmV-B0mS}^EY$*#BYy!LNkl{8 zTYEsH9nT1$7X<8Zi9qLLQfw$fSQLeCnr0@!sZEE6DwpHNS5;+k5Wpt^b3+FtK=t!s z?O*qkf8KUMBfzYxg;bg&0jdKGjnh3)&CFjU&>?ZT(lnjzz#;(?2*#g4GIs N002ovPDHLkV1lPxk0$^C diff --git a/client/src/main/resources/textures/blocks/jungle_leaves_summer.png b/client/src/main/resources/textures/blocks/jungle_leaves_summer.png index b053ee8e7cf6717fc6cb7a0174e3396c166ce506..67914c0891b6d0458ad8fede7390ef10b1f13fc0 100755 GIT binary patch delta 2542 zcmaixX&@7fAICSw+>~R_oO2}CW`{Xe&PHmXJW6h}qvn>8d(k9WsfLmxM>>RZ#N(JN z;TbC(Mk_t!&ebTnp2zdltN*+Io8Ozy_xt_4_`OCfA+GB(#BU~eoTj@I&%+|mMNny> z6c{}|k^-Z|(Wn4GoS@>gSKg$#%+9RgIS|knpqa6d*ld68?q{9%?yZT`y^rB1^dv-1 z0-T#@yE|jNfQ_eF!G#c66jM|S;y1;-q`APJDU!2T*`BskYf6chMYfm}$8v&4SI^jL zSh(a2tui96G%ThjX~3U>&1wEO zV&%30oirW%dNyT^JRnr5mB0S{`_5=YKZ8nfVC**5y&e0U*fFXcGZR;0+qH6X`y13> z4+4l8buFqHRGG5NP$N7}rA;U#S$p)i=^z|EAWR2q?u{trD?KHT+2uzwanCkQJOaxm zsi%hm5wI|NrSdgj{fKbicV3|l!$xuNtk{8DaI;%i52K>7FSxldE{MW3WF+O=77cAP zoW;rxnN|ft)&Oc$nVDXVpg`u9_^{iBR|}iaHgDt{n5*lkbAd;2T>n-HirpKgJty?F za&~VLv13+Pv$UnfJ5{~hQssy$I)FzogD!gGHOz0YmF8~eSiX2<`N6zirBXv~@$0am z>>zRdHralR*da->)$AVI&q}DAw(pFWiCS%O-(NonyeMtMgb|fq=$$IuV``80DARlP zoUz9PB*Xa(qGCUp8r|AJg-vA7x^~h!Bz#wr?o3f5M}wOulF~boJm&y zo9nS?xQLF#zK+S*#bEhm24H|MaVMy2^UUiLUB$;@TwR>(1IGB3#q_(cOr5+wIXPyP zWEvafTpkobj+&l|6Br$=Q`qFFL-FBbDISlECywphJS^nu>bZ^Cv2?qS+zrR?(;>J5 zCl&U|`<)4QmO3D3La?{@jqc4S3386cIo`^jQ1RJkY$B2^gLzEjdTL`p( zsxD*GB+&h=_<~qis@wDK+KZgb){n*q&ibV8!434w2pY+1N98$8nzU}DAXgC{u0Y7t zs0eA!zk1=H7JdAcJ|pO#%@5|YH&-go-Z>M#KF0lQ-IS8sNp)?WAm2L9%J3P*oWuBgHDsa6_K*&|;rOC= zXkqf3n!OdL3lkwPN(W`prXz}?PuWRIsZ)RFOIQZLJMIJ-^BcE}VV5Hix96WfUw@o7 zyTx-|AAGDd2$%d6?CFig=vg*lS;^v2wOnOwyKhzZGCb5n7>Jgb0a8T$kD;qgwb>J4 zT+F*2M1!t7gFdsIwYfO>q_R($m_)r-Yuu#!`jp_Sg#+~bJ zyV-lGnjOV&wP!?U&3HC^5tmWRsMlwPG`7bMe=wX|l2~saYj<}^|03dp&hAJIO*-#? zz?!qNXNHur^HMlvG*9Tr3@gUu|;$G*>WTMcd-Z&Ip_KwF(8mF299Bmf|2YRu#pa(Mx|Qo zoTbwvai*r>(Fh_rB8Y+@MTD9DB&H|?lD!SSt!IU_pkS=bEa7J6R{tF;1qruATVml< zR1lVGMn;j)C^WlC;y61}63PZkTH9eUC=?QDg|6-5e^C^hDGBrc*@_E`#JN!DL^6?1#1rY1|C&fN7KgOJ zp-~6>LqrFm*%WC9#h+$4(gOZJX7&SV)A~UfTL~4|!Q=q|03aSjIE)AE z0y+Wv=2u5H8&2*mXBNDiweQ>S;cp636Lpi6X2XYlhSXHPb(!1QbxkWo|_g= zVlTwmJ2Cu$(77?#S%+QmO8EESvOpn7xL4vw;D$KI=WFnnL#w`nU^|-ChwhQwT+A0^ zFZbNdglp`B3mkz1D~kI2?ld4r#we<$>_HcP#JA zQDy<5OLlsHkLX#QQ3~EbSvqd}3$JlrUUx zf@POyg+dY(j7;O~*=-wLaz0ud%Xp(RB=4y}WH}Zd-_; zj6#l2D6SS8&$DQmW#@7U`}D2rWHl{KPwZaI-;t+9<`wtUrjmVWkg+ODT;40f$Mrc; ze~&ZfWG*SMs@*)@ckVqMj#nPckUeh$$LQ>mi+i75)ITnJ*I?*oH)%#_s_e98(mDe5 zVT~6I&xdst{XiGg@3`;tZuYHM<1l%;>B)4?uLtHaXDYRq(kiW2r#;uZw>jokse!=v~6 zw)E(~2wuZv5U!R@=ke39#ua7?bgaUNraC zarH^xu05)H&ow~+65+H03=5np6L*o#A6c3BQ>wP3r_|uMj50Bsn@gYqC|@iH)$vF( zLIlO_tHE{6c_XQllh-4Qn^wjh*+{WS)H!uP%>F^(Ycb>pSoDxoLX7hp08$7?oQ7r zpghN<889b(>W7%~&Cc@X%XQx0RW;YzA*SMkGrl1w8b)?;(oC+{x+uXim39}NGMtc1 zf9wxnONEIO(OL9hC<592>>{Y|q{+CI%jH&8RYrzPWdERV*QZAX0W0=*FHpL!S`B?} zEmV79Fjagv&i^{EtgJ8b;-S-9abc!%x6cZ(_tyH`&o&2bpUiRh$!X5G9bwVt6YJJ( zcRRDQbR^~b3XkWWJwN`yD^V2oN?pF%p2*ADuffilLb>0FAstgJQk!bz1?`RW&Fl6w zUS3~pBp+W}mbl>yZq0q2!iw0dzsqAlm#H*=<~xBzahIdPsP&+7NbQk>6%xmKH3ti( zUev9W*R^5m3RjW*J)hsk|b5d5{r$>P-+GmX5u7p>jU`Vfn+}iroE__+DJ~$6^0k&D-5Y zC1jsk$}dkk-I-Ua;q5zcj{E%E<1F4aR;Sk|bIMZkT+jN_g!QL4vlAVW zUI=~uYW3+)RN{`y@vO`7A9Pr+7WB|_*SjfA-c1O>_eDvwFUKwGCR6f1DBpj5w3Ikm zayRAy=r!XrD+q~ldlfQCW#3@_kt!tqYA|fynl@Vwg#W2?n zVKAs@2xM~&rqGBGIwJ_;xUqmmg;6&Eh!GTuG=Lfz7@;7Xy^^Q)QA3&ZKUCp#Fq2N$ zEPc_21_eVlWDr9zl+!7R;P51&9Eeofo?vKzu?aFTz`zJkKpDVbaJT{97=bsy2M0j| zU?^jxAu5P7Eak?rmp0#LWMqg$K#@o|3Sn#l*OmqXf%cAAH?${#Mki6i&9#ldhEOn) zqbt3e(_V zvN2QIudfVr?a+CDgYoN-hcD!vKKDFOD`=9>~W` z&aG?RZmMl;T``g_5)^ie)|d>&WPp@w8VON2J3&Zqx`vTM>G>8d@cd7i@?dYjN2*5e zo!IER%iaOxYs}li$#r~_Sq?jI!RjP>^aX%IWybP9&6!M&^}=Zc>LPk_E32O5X$D)*f@1Q?%7N5-tw~|X0+kPp%FjVk?{IL zmx?z+;>Xiz^%BEP(WkkKW(S;`<+VfsPFFj6?44GhZfz=gyC!}hpBD<>C7x(y8)f+E zQN6RH>Y11J1I=%*HAI(KHhDfRwkQQj+m&tan8>~as?^FOh>S)TA1_xBJ;hpIGhJR| z%MTv)TUfHUYZ)Qd4`dU(%QOKG#(pWpD2V133ac$Qb|cV(if2m48g670cH&jliUqo1 zg)VPeb^{9K>T@3+tCqMIaLbL;nN*{{VCKqf97;|r$8MQkVj(lFiv@ndGEE6w9af{`f{v$${aUj(KSSLS~T+Gx^-MnyOU) w0eBuk_xdH~%FkI$ze>BN1I2=?pwt(Bc!1yQp2J#)LrT_o{ diff --git a/client/src/main/resources/textures/blocks/large_fern_bottom.png b/client/src/main/resources/textures/blocks/large_fern_bottom.png index 6a5fa6a13e1cc1a1fed7d675a6a12fb32fac121b..ba27b76bc08d033fdfbb1198412c46736bedaafd 100755 GIT binary patch literal 5798 zcmeHKdo+~$`X811J!$J|8gk3rXE4Kr7?&6!w{&65yfY?dhMB>jloHz5LaAITx3mu> z3?a5QYFFr#NN%xRwv-airlg#AM!Q|>oV9+dwSMQnX03PTeV^~=`Fx+}^L@V0cixk( zF80a_>lGjnh_a)DtvmRuCcflkz;Er@B`O3W;}+%NBXFliKtp(31}hkV3L--QC?I4p zAP`}1k3g5#7#p9sZ|Itl1)8(e`$HiuJMS zxAN3G3A*Ut0;i{YnBEW7Z(5GkW&GK_Uwd+*J~=zOiJJImCg${&8D`F8lAh7?6Z+&1 zLH;i;^sT%WPEp@wu!hNVjAwWK_dtUY5r|?EYY%_k-8#&4)Le zP6bC6!xm+D^?j)$@l8xG#Pf?@bNQrs;X|C2crB%)_+hKGU>-tU%0bFn`f|a(S_K({Ro&FW**5k5#Jx@*hJ%V-pPJ z0>e$3qWg|MIk70FMeMZ5z{=|8?em&5&)|QoWty1N$ss6=@dG0K&aF$@qfLd)xuMyQ zZuc(@x9cu7Wxp?LJ5L@^J^%iGpZ=4D-uT|zPaiZ%{{x_Fwict zHOwc;qS&m0fG(9hc-%qzXw)UtgchcFUqkH9C-*NPp9%bJHy;^JOO5<noUQ zp}ie}^^~AXDp#S!l}QNd%iHx&wU-Az%5}nCX9L>4mx^dh2u1WQg<5p!ck5?pn z0M;`>N+W9OMcQRE8ixuv*Yy?ORGVAcooF=Ivq*Q&P z&@S~$@`;aA+^%-4HyWHP%N6dJG%U^D9JA`}G)?N%^^{eWj3LojUZSig<;rz7$B((A zyqp;p!Mxnvrpvip@z}rhN)@%y3})WzMIA>7O6{~9yp7M5q?i--CifV0Tp8To!-*lM z#P{zEO_@vX-|1)r39}m-(Q#-OhLdrtqHQ8SD34~m-=FN7G?cYqXl1)HUE8gpKUBf^ zg+Q%1hj@s(|S|8edXoL~8(`{JAoe?y_ProKW+w&={W_WfknHkZ3Y-N2#A z^~~dWD>1m7;3^wxuAbc7#FX0NwN33L2>Y;fMvt45TgjtW-SgxHtGPBgleqF}T-va- zqG&tqm8pNu9C+vmS>WN~Lvbe3xNHQK&J6$%LUssv_&^{QmckG!EeH@m0{|wALxN4+ zY=l8sbP~)PPeD;aY=A(PLlh6#9p&OdiwdF<=rGIe3Kl{lNWcaJRH%?0%;6J-B$$Mk z2;Pg$NElQC5d@K7J``7|4VMQ%aR?j&1t$wx;TYI<1*ip&&LFzm+I^w`pGdGkfgps4 zL`FnJAR@2`E{};s69@z(3WLO8;2;9dkK_obLO6%7Bc@p9um$)u9xFt^;&Py3PHF%* zOhAIcz;Wnb@v%cFl+W}W{wEbcJ&;0b2ojAzA=zx?mmYipIUFSU6wrV5;Cp~)G}0a5 zbHjKvfE*5R1Ug?*&}pCjL&A8$l62@aBoGX+K`0-b75&we_KpumKD>o@$1|<1uDb0*>|tl_Q5QpmJz{mA$S zhB1LNOz9v621|pRp>Q}j9TR}Xp=nqg1HgYlv5Ut7tCAZ0WmIA+I!MK!o0{U$1S}kl z4glad6nJN5VrB}*044+)5I|s1(I^QOokq0d^4L^xIazEf6F`P=n34gp;6!UzM-mK! zScXb0uEA6R19Tw4oLQVO;ondX78}?tpo-N*o8qx(6ai;Oz@o8uljWEt-d+HY4_2a> z6OBS(aT0g&vJk;!Kw+ukIt2+Nb}$#B4G*9SxI7OoH<$zyQ$WR@pNA>ncA`@SR9mV5 z07+38JP~C|#GpOUCPX}%h#_o4VThQLl8mb0oF`VM^G!UJSAE|4I~R?_%%8r z5D>2dC>R_CR>gk^hWwN;Qrt8C%Gd(=ADUQ50ADm2&~MoWHZQOjB0o37PnwC_&j0Z9 zX)XSTGl10JC;29QzsvPqu5VJ{o50_z>$_avq`)_UzgO4)n_LQizfJ)h@Lx~___7o@ z+%pNjXvqXP+1o;vAh#e}Cz7}S3$)0GIPBp=Ac`8|OA3;eqXime1&$Q5?1ZeQ3U*Uf zQlkh0S>f(zYwcmydN|#Bmj+cW{$kI-{nyoc4~s;~>2kVyS5=?-l$| zAe*}Ht)`w)e5EO9lvjRk?QHuqd?4!jz(B{;OQC_miMV;Q*>>#IA*}m>84)VCz-RWP zWznTmch-8|_1;IcR2o+Jr*=b{{@w_DlCqq!UyM;uP|)4U!+w>6nJ2f=L^rT84cMkM zPHAdTeQx>9w0pxN$L{ozI*nAh+cO#(NDKx;?dZEMEAl0uS=M1^$E>v;^2HWvYTk)! z<7;UNALE*Dv|liT`1uufyz42h9MorNHKjZG%q6Z}*=h6xf_Ui2;1>3ta6jg1Tg0GA z^a?0n^$=x!=AkY!+%`!nTATRX>fTvW$5Y;fSL~e2kG>9B47xLO-c#@Q(@r-y6CW{x zc~yD61eG80+Lk;=)dj(vGAmeq+h+Z-wz7rZs~cuK&mQV3Kpl=10TWM@U*#s>3zE7Q zn}>SkcBJntX8;w=bxxI9fx0pL^0l2_mpNgR*4DZg8CA+|?fR^BF-IoQD5y%@*0W{E z$|W7h(_h>hG9LSPZ1tO#Yu!8%Tl9gTV?1`9wAHwF75Qu->-^qn`%REG#QQ9q(y-j4 zVJ+5U*L`p9`Nne^cJcf}dAvKnHflTW&1@2=RPF55TKn5YOh=}4?DfgtYm(QbLYmTB zZy7k!gmp0myF^18Q}jfo4NA#8Umej*dNH-fW}{UqXZVA5i^dF~8hu5VVnb`ayUu+q z+-27_*`bAn8ZXYcT|n_*PRYBjA*CTv&TRU@HC5xLi;8D1Y{{#)$8>@P2XQ33*k0S= Gf9&6^uL3dv delta 683 zcmV;c0#yB`Ey4wmBYyw^b5ch_0Itp)=>Px#32;bRa{vGf6951U69E94oEQKA00(qQ zO+^RY2oMV*6tf`2vj6}BR7pfZR5;6hkwH%DFc3hWo4}d{LZ!q>1ieB6fm-B_`lG$v=d_HG7 zoziGDkWvx^0rh&FJkLpz1g$lm=kY(aUax18B*FK6e1G5P;NSqQHM7}_$z;OG$q8AO zvA@61&CQKSl7#c~bMsdqzW%_(aV$EWjw#EMqoX4hiv?jAlIJS=Q*33n?E|R{{~uXn$0Gw)e5B)VHh$RjnG;ngg{D(ZQE;)*94B^ zuv{)tN?}rdF$w=Q(9r@|`tXtJN~D>tb0J#u%a~VlWu6v9W>cy1c)? zlVurqcX#54soidy|JMWX@bF;T?e^N)_ncpe<0SZp;5)V7F3Yl{s;Xa$`~iobGP1Di RmQVly002ovPDHLkV1oC;MsWZD diff --git a/client/src/main/resources/textures/blocks/large_fern_top.png b/client/src/main/resources/textures/blocks/large_fern_top.png index 393144c44eadaca69920d7059aa9775d0eaf3005..83dd8d80a2ca17544879d7de1aca22ed7790059b 100755 GIT binary patch literal 5718 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 delta 621 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 A>Hq)$ diff --git a/client/src/main/resources/textures/blocks/large_tallgrass_top.png b/client/src/main/resources/textures/blocks/large_tallgrass_top.png index 1ceb3de89f79a1ed7dcd0cedb2ba944234e8e695..02e67916ed149b3bc48539c022153c8d3e952e48 100755 GIT binary patch literal 6030 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 diff --git a/client/src/main/resources/textures/blocks/melon_stem.png b/client/src/main/resources/textures/blocks/melon_stem.png index 38065ef6f9f79ff7517befbb3a085af98d7be80a..7ad445fec5e5a303a7df7e4f1d56d57337fabb8f 100755 GIT binary patch literal 4881 zcmeHKc~lcu7Y|}VHpK-6krIN6L?%0Ak+4P~R0NY$fx0l6OyWQ`lL3M&DC#FJAfj~z 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 delta 162 zcmV;T0A2r)CcOcWBYyydNklc z=5yDhDxEuRG2>BNH0f;JL@RB@M QJpcdz07*qoM6N<$g18?=oB#j- diff --git a/client/src/main/resources/textures/blocks/melon_stem_connected.png b/client/src/main/resources/textures/blocks/melon_stem_connected.png deleted file mode 100755 index 6a5c10e12568865928cc9c1653a171dc3768ad68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ii4<#Ar-fh6C_xh8D#8ge%N!g zx3v6GKix2I-n{=OBvK?c)nsSCuAjuqvXiaFah7M<%_}Q|AFfl3{CsU~^ut*RZ6czg zf7PuU*2nMno5`4de%@dE%1rCB`{ZE_!Z%=TuyFZRNR1^L$0uUsiv5 z^s4Tn%0ru*Kc-Dh&0Tox@ZpW7(eu|I?>Lk+=6t&JK5u=bNz{UOclz^&6djLy(IiiM zflkrV+C$p!I-U%A{FbGru4FXh60+Qx438f>@al?`3#~2Gp};a#&*OKZ|MkYEyCEiV z;nA1-H|GXFU1<;%;>!*zP;~Z!a^QpXEl825Z8$ ztOyT3AM1N>P2iOar}_jZV^-G4-RHyV%FFAU17LBi{Hsm{OM1$jrYYrCD-_x#5|-OF zn{4Ua2&1@@Zm7xZhLt#2q~HE=bcZB-sU-f&A#US3IeROkp$)fIV6Utku%=t&((fd- zPqZDTNo`cRSQ4G7uHJMIW3pXa26x}l0#lgoWO;PY9^%MJr+FOz+bTK`sAMt+m*FHBbibKadrks~WCfMV!hwqLMVk=*^<`ro`O1 zlGtfxC^(eS-u$TkNpr^RjWrAP_o}J=8rYfasvP&sy=&ADV482r|68%C?ufeew!w<^ z%8d=Vvz?oa3C5`gph`!pS~2YR(6*6+;rLYhmB!)4XhUNjk;ziJ7$g?dt9Nn%e~1_LI8QUPCEL0LT)mK%`?N-{V;yR<*{K z$)i81CY5X&-+JF|+rNnon4RrSpPI&1g13`;vow7?^LJE^?=zT;+bRi3}rq5rjRQ?#MR;P4Rs|kpm&Mm%Jg&5Z#5Hu>U9Zy z@V%5aSy4KMp6pac`$^YE_G1?7D4r^Gb~Ve@OK&ae+}yG&_{FI$FE@whFnqcyp4%7P z6MDI$!^fB|ex0VKj!iwup($&1{hpBv_Vp(v{>;hP5kY8-qQ^;^KGn&m!}r|R1(XG5X_BE8uh

4e{hA%AufKAv3{qIn_Vef+|yH1hER@743X zj^*YJ2D5B@-k8pWbEQWrJF4-0WIKGg^16SfQxE$3q;R~f%}*xZWX4tf{L`t->IX{# zwOSiAc*LcbA4i|@E$usFS*=o#>msXb6qL`?c-=#k$W3T_pAcDB{X=d*QgToCrb7oE{o!CS-+S5ymobBQAqUa-{713;{in5&nFBFbRbc2n2cpeLW7>4}~ET zi6}G{g~cKv3nVX`%?E@?Hcv|gv4}wdd2}u-n9t&{;UY|c#tG$<5eP^R|0BMjU@G+s zJe&8K1&9xn5C}$L^w6lFAk^0$Jib{N1oAnczxCibLx(=f5#(_~xpdGh3}o}QzJ_4X zzxW4-as$QbFz6^S5DbD$dC;twzf5UvNwxptA)>&K6%;J?g2?`hC7;FoldQkQCen!0 z`8p8D{R{42tpCVeYz$dZsU!-A9x4jYl0rs^<|i>YbQXgo9uhz_0gom!kwgPL4vE7W zGLS?fhJd8$V~7Sgkch`(h+jcjvUz-fO$S9#5V#%-!l4lehIk^*5NXKJ2az~KECUJP z={O{aB@h8DU|>MRGQNVamfKV{d4Qqfw(hNZZqyZX> zr_mS$G++RTp%`@1P7XH+fXc}V0{lQ!FxyY85D`u?v9}~6uzKh}CH8>;p9wjT5jHG# zsPIpPGb;#m;sYW!F@|`344Qz!5()YSID^Hs#dxkDmj`vC2orED8OUJ%_!{>=UV)eQ^4WhC;29Rzti=d zu5V)Cn~cAA*LS+UiGgo2{@z{xH@am0e4PT>(61l?^s+=ZJtF$!P>N=4PJu1JuEVs) zQjDh|$?{-}T|5{}R#|jOz<$nBg@n?4ORAaln6!$*T16UNaVFfIXs!=X z4pF@|IrH?E_c5=|f+La@ntRmG7hJx)N+x56wRCdwu{MQq`vZu?%u7*8$Ie;{N)g3z z%M==w60MdbB|T_3bIqFD?9CPUN?#}#9DFhw5b;Z^^e^T$RUzgD2n_6Cv%=8;^s%cJ zca6?;RF2KqZ0LqRb8Cz6K02gB?Svbz)n4g1seLowSw5z$Tg}ngOY`iSpnXZI6Q2&d z+n#u8bG*OY*CHVw)^lj^VV4%nsAd`cl$1n$15gyB`*E}38fW7N%VxEY>+gD3VXCB= zG12XLnR@JW_bulSy2)DuW+Rx%(QZ3kCCNjyZA>=_!lO$5%ta0RPZEVb30Q*O(* z$kb>l*YA_Ri+inYs?^9leDlDMln1bP)vWQH$L(0%Go$6ovc)gDDtsSrP;914-|pK~ z_37kFd~{X5%X%NHRQ;c`a$N_slT(+E)#cf&0Gn3F=I5g)S2M~5eSE3T)# z*p!h7FGW!gUh6Pi?bZdezxtDIkz%yZfW&FX?vvNJam-0=J6<>|R1fKq(Ac+w`UaMA zR$}^%LS#ABmykZydc-Tv%6s^1r*b;yhIJCEnt>rwv@6R HyJPf~HDn~lc0?Y0s}v47QK0QSM&j>0UaYu}}P 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 delta 474 zcmV<00VV#%FY^PCBYy$9Nkl2%cg`~C7a+39quf4N-bdcBI~_22a=8?^TrQiD5!W9^qmc}ULxVP(&BW{Vs*kZMm5TXB zyU}QvBHB(qpH~N!kQ9%{)dvtO1%pAoqtU3|xm->xpU-FJ!g4~PklNV6VzDrl)9JLa z0U8d6B^HZ`CV$@Vcl|h@&*gTzDG27R)oL1FE|&t9P>cY$lgXr5kH);PlX9@5dceHo8EtV%oSUL)wOYpCZnsje*M9)P?|&K{4u{#rYPEXd8*vKGaLyYl z`=kl}03a$Cf&;ikF3;z)Nkof~EkTOKqS=LQ+iGL%=~HwnDhLGdh&UI7M8&Zh0icup ze*ZgGCX+FV00FlY6;CRa(g(yvqFWTxJxwN)x4Fpxct<5@g52}rL6wMq0immpvQ#`= QhX4Qo07*qoM6N<$f>Sr@#{d8T diff --git a/client/src/main/resources/textures/blocks/oak_leaves_summer.png b/client/src/main/resources/textures/blocks/oak_leaves_summer.png index 01fe6e3a8ae51989f0cd0a547dd34bba99473849..ced94f9aeb2d3b7b15aa9bdf5da9ba39e12e469e 100755 GIT binary patch delta 2942 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 R$Dl@qdAa*gPq>C8{1->R-irVL literal 0 HcmV?d00001 diff --git a/client/src/main/resources/textures/blocks/dirt_podzol_top.png b/client/src/main/resources/textures/blocks/podzol_top.png similarity index 100% rename from client/src/main/resources/textures/blocks/dirt_podzol_top.png rename to client/src/main/resources/textures/blocks/podzol_top.png diff --git a/client/src/main/resources/textures/blocks/pumpkin_stem.png b/client/src/main/resources/textures/blocks/pumpkin_stem.png index 38065ef6f9f79ff7517befbb3a085af98d7be80a..a37aeed592bea865e91b5ac139caa5daf991a2f8 100755 GIT binary patch literal 4881 zcmeHKc~leU77x-V8lg}HRCqud5Kx$8vJjGyAWK++1`$y~=!3~*0)cEM0|cZBwQh(T zBDLbaFXu^Jd4d%x@KjW!vh<07pipr`QHvld{SpxIwdcI!Ij{ejb7qpc-|znJy}$2% z_heRwg$9|CZO9}N$xIk52nXL5`fJQ+aCdkts?AN!NIKe$hQWW)`-??YD%N~=SUs&-)X^$qCxZ3z8Hx(40 z(VT({#j8)B;`u~#95XJ36;8j)(Iqc)BW`C@HoH#nKPC*>P8Qh&H6JqC^Gv<1CQfOQ zn7q}gx=C{X;KKu#g(nC`!p+c|%TIzO)fUdz9Iarx`e`@WeEv;gfA_*-vZd*o4lC;9iiTQ&*^5}`4gLu~Rb;-(@eTRf zmJ|?)kW9x~W+pmiQTr;kt@7FDyK7XZdzBSAY)q3;?mQ zkaX z+Sl7Je$b$$FB=^r>m1{_jxBGW;~b;NEjhJ*cP^$AD+y)ryWTzq&% zOCD{)sT;z`t-f$dNSGHiwzcLQ`+4Azb9vEQ`>w9aE+b9Omu}A&hlQCe+Cs?g^+pg= zUph9&+?d|nTT*p)N^?OK|6xza>GSJ$r?{pBwo&WH?J>VwPL7UR**y30c^h5P+aGpM zE`QL5)CGQLeT9KpI|cT$lDZt#q5dapgm>5**Htv7-R-tm(#zlSI{0nbTJ5iAQ)11| zMekf8nWV_QbRaS5UUc{9qHLFaAy4b+FYkH#)r|9}$XOC!rz^zGS~>~5(Nvx0o9kFVsn%N=)&Uw8cNXBT!X zEZb3go!j#YTU-YzU2Mb{>_Fe&Hz$RZoxJ@-RuA>;mkxHmYg88GSFEi~4o@RJE1bh$ zo1QRov76_vlF(Y?cXzlcB*!^>OEn?UyeVJhow?nSw{yiM_xp7}U*j~IE~yG^GWn0~ z0_U~>_Z$5^tEMS3e#-0@ka=d8%f8TNejmQ*S#Z*VX(u;6J$U^4f0%RzcaYn9EG~5U zpB-qaaYtQ_ufS-%UvTCHCnNU}O6#_P*c$K2>9dL*<&|}w<)!`hZb-Z0`rDLM8Rm5> z*YBOUtE<*7_Hd>AP|W3H1x?I`qPmkt303Y}G8O;Zx64pM3z^%R2~0$ht}WNJdDQd0Dss92Ru@TpX=PI;G~LM;*v(<`+@DgZs` zI#f+(&|tbkK_BU%B?3|a$xuRn>Yhj~9hzpLE< z1}KpT5vZ_aeR@IxpQ?|KNK}|if*5{^C9o&c17$-vhD#te%-}#Mk0*vOCd}n9c`Oc7 zjEB>_}iE)T<*Fbct3CL3boERc-{ivht>7VHUgJ$M{0%RnW;kU*72fr9On zDbRSFu2#ky7W9H6zF|T>l}Q_nYOsXKQ9=qF_|#c4WwP!)G(x7p=Mt!1O@=23#bAI) zYzEJh$9xZ(k88A`6ZM=7n8sooR`lC~fMS5KsJ>4Dfx!-HLHsp1N~kmuDwUj1)h9sF zdk!y)z;TkG1S&uY9FW3H4+Qo^n2ZR9{*JIc-C!mHkHD)WGHKfXLhBC?#cOcOgJoI} zKh0noJW+G;MT1X+k8+veC{ZYeLxG^!UyeXuqX6K!RSK;)AcjsUBzDXKWO4*0E`$iz;Dn7h8LKH^xZFdY^Od?UD5u((}ThpO6M&CWrbW5#ct_Q-U{=T`?Vb6PK6A24k=uq`hQTT)2r zqh)3lXLJoX*}|nktuu_l$9&?1w5;CVKGljwudV@icT>~#JKs1rXBM{<=ET$9#P#-n zmz8DvAUl^`J>X<=r=>$Yu&Mm!TY6`?-IiH-&fIgOGX}cX`_9ka{N?UWzGKvAucg1O uY^%RDBX7TP_PMePSIgA*U#S|4NhI4fjEzkunWI3`Bw;|P;Fw?BH@^dnMlyT= delta 162 zcmV;T0A2r)CcOcWBYyydNklc z=5yDhDxEuRG2>BNH0f;JL@RB@M QJpcdz07*qoM6N<$g18?=oB#j- diff --git a/client/src/main/resources/textures/blocks/pumpkin_stem_connected.png b/client/src/main/resources/textures/blocks/pumpkin_stem_connected.png deleted file mode 100755 index 6a5c10e12568865928cc9c1653a171dc3768ad68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165 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 literal 0 HcmV?d00001 diff --git a/client/src/main/resources/textures/blocks/reeds.png b/client/src/main/resources/textures/blocks/reeds.png index 64bbfe0ecbe99c55c7cf3edb9a3bb89190a6f4b3..7419a520eda84317521540825eeee35020e83c08 100755 GIT binary patch literal 5125 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

lbRv| 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 literal 0 HcmV?d00001 diff --git a/client/src/main/resources/textures/blocks/springwater_flow.png b/client/src/main/resources/textures/blocks/spring_water_flow.png similarity index 100% rename from client/src/main/resources/textures/blocks/springwater_flow.png rename to client/src/main/resources/textures/blocks/spring_water_flow.png diff --git a/client/src/main/resources/textures/blocks/springwater_still.png b/client/src/main/resources/textures/blocks/spring_water_still.png similarity index 100% rename from client/src/main/resources/textures/blocks/springwater_still.png rename to client/src/main/resources/textures/blocks/spring_water_still.png diff --git a/client/src/main/resources/textures/blocks/spruce_leaves_spring.png b/client/src/main/resources/textures/blocks/spruce_leaves_spring.png index 602eab8e1bb11e36cb5cae37a633e3a04ac1368d..bdb501de845fc6d17196c749a933545ebe5c003b 100755 GIT binary patch literal 5454 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 H#K!*uCsbqc delta 236 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 diff --git a/client/src/main/resources/textures/blocks/swamp_grass.png b/client/src/main/resources/textures/blocks/swamp_grass.png new file mode 100755 index 0000000000000000000000000000000000000000..01b613452df941822f918bcd37213d1c148bbe2f GIT binary patch literal 5468 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 b{zky)MSZh{ZgwVITENrQ+vVhsVO#$Tt;1cG literal 0 HcmV?d00001 diff --git a/client/src/main/resources/textures/blocks/swamp_oak_door_bottom.png b/client/src/main/resources/textures/blocks/swamp_oak_door_bottom.png new file mode 100755 index 0000000000000000000000000000000000000000..12df3cbb7c73bcf4b06741c388f2cf9363b08955 GIT binary patch literal 5584 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 literal 0 HcmV?d00001 diff --git a/client/src/main/resources/textures/blocks/swamp_oak_leaves_autumn.png b/client/src/main/resources/textures/blocks/swamp_oak_leaves_autumn.png new file mode 100755 index 0000000000000000000000000000000000000000..2960ba3dea06d504ed3c93ebe86e3b440b280b5f GIT binary patch literal 6840 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 literal 0 HcmV?d00001 diff --git a/client/src/main/resources/textures/blocks/swamp_oak_leaves_snowy.png b/client/src/main/resources/textures/blocks/swamp_oak_leaves_snowy.png new file mode 100755 index 0000000000000000000000000000000000000000..b902f2b855920a5052a2e1f0322d7e97e37e84b0 GIT binary patch literal 6111 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 QiWuf->td6?)PL)L06*ko8UO$Q literal 0 HcmV?d00001 diff --git a/client/src/main/resources/textures/blocks/swamp_oak_leaves_summer.png b/client/src/main/resources/textures/blocks/swamp_oak_leaves_summer.png new file mode 100755 index 0000000000000000000000000000000000000000..104aaa2ac4e55b06b55e0c51aaf0a81c76cb3875 GIT binary patch literal 6266 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 Cm~DOl literal 0 HcmV?d00001 diff --git a/client/src/main/resources/textures/blocks/swamp_oak_log_bark.png b/client/src/main/resources/textures/blocks/swamp_oak_log_bark.png new file mode 100755 index 0000000000000000000000000000000000000000..b786a715b51c11bdabca1416fb285b9ad68395b2 GIT binary patch literal 5780 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 literal 0 HcmV?d00001 diff --git a/client/src/main/resources/textures/blocks/swamp_oak_log_top.png b/client/src/main/resources/textures/blocks/swamp_oak_log_top.png new file mode 100755 index 0000000000000000000000000000000000000000..21ed1b0b593ea8fc3c74fff89758402c07a05754 GIT binary patch literal 5597 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 literal 0 HcmV?d00001 diff --git a/client/src/main/resources/textures/blocks/swamp_top.png b/client/src/main/resources/textures/blocks/swamp_top.png new file mode 100755 index 0000000000000000000000000000000000000000..b5c7b2137c924f3da57d988df2dac7be7a4fefa2 GIT binary patch literal 6070 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 literal 0 HcmV?d00001 diff --git a/client/src/main/resources/textures/blocks/swamp_vine.png b/client/src/main/resources/textures/blocks/swamp_vine.png new file mode 100755 index 0000000000000000000000000000000000000000..eda7a5e948578e3eacdd82f4992b62020289a0a5 GIT binary patch literal 5324 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 KXkD<Px#24YJ`L;yViVF0mJf#pR2000SaNLh0L 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 diff --git a/client/src/main/resources/textures/blocks/tian_soil_side_snowed.png b/client/src/main/resources/textures/blocks/tian_soil_side_snowed.png deleted file mode 100755 index 22618b8531f304e747da34ef9d34faf9d4fe5f33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2597 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 literal 0 HcmV?d00001 diff --git a/client/src/main/resources/textures/blocks/vine.png b/client/src/main/resources/textures/blocks/vine.png index df5e435ab23a41f3b7bec12a1172f682f400b8f6..d173fe5d1f3ecf99a60dc6213ef4350c72364e1d 100755 GIT binary patch literal 5420 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 delta 208 zcmV;>05AWnD(eA|BYyz0Nklx$e; z?aJk61lEs!e$|`q6jPACfZj6kHs!?su_23eaXY>4wgsL!EctzS<@Ou*o1Ul39DQ}& z&z0^wUc<<5Xm0H;3e)b|lGSM0pAT<(U8RPoy*t~s+9MCJSn1FHt!JV480mKk%eP3d`u9(3#*Jfv~c-UjjHZ9|67 z@z4}2g;)O5Jo5Pa>|HHKPu{g~NqMlX{vj{_)Nj#Mzdq>q?tNX^FDytl>7DqT0c*mT~ne8+fSx_wBu$@;guN$@uLC>C@HF~CJ zxM$Q);dcECwfAdU8+bND_LQa_VNnW9xx+^_J=6J0|FuO&LQA2t%g)kTF)ZSo z+@%&387U>WucFvvM<3(ma*HXx^IyG5iJ#%zXJVF)u`=VpJ?oW6CScv{^PPKJ=q}~i z#`o~d$cvh3BvI(nxMi&g)}n(^Jwv^M(;gmP!5UaX3&%$Y<@V~;duJ)F6UL1k7C5;2 z=iCL>Uf)}29fb?V-S7F@aXoEGPKm(bSwGRpiO(NzaC(~Byw7#hfrGj5!6kh;hqG5- zEZkC;w>2cJ;CSrXeyM#z2&1c)qPwo@NxFqAd2)TsfK{n>)AZGaaBAk*(7D#)N#hDb z?`FOaNwu94w~g94Hk67l+BVO&sCc%-w(!zrPF=z40c*=IpF4QPxAD|Fi?{@0xn)=? zE{Hs&>@_~UsY!$>V56~YrklYgyY_-G`U2*+Vb7WReub}uX)DhOi^|!Sme*zlti85} z&2et3ewWF2yy~cVvAH@o=-Lm}`<^Epi)uO+>})(e=CN1Iz>7;>75)3%1^Wso>iWL6 zi1&6|j?!I^rP=Kh|t<5A<8w)nPkco!^;XG`(r7TH-NlH!b(YW`8H@ z$GpNRjfW>1Gp{dkuu-l`@TqbQ$^0q$T z9rQ=ciOtGfht$~Q!wn_tqWa@+WsT!|oOa1hz18Lr+(IvP5x1{~?~Tv7p;s0^s=6~J z;hiY6kvEGOjDz8%wh^7M5LFJsA}i`sH3w%_+F z$r9=hwYXP$ob63bxc#Q~*{qWhr{w+1vcjUnzglid0I?7O~7+pQ|25|x)=?v&^J@nyV)H6a!y(V5qkm3YVZ5ZB_LPmV_ z*T(CV=5%BPgH)0#0M&zCnV)Ux7a$4#=wXsTL8-K6FCg}3NCPGRB-UrKnO4l{bPWW! zf8_lP{ULWV7@#B)Or#;=P2mNI+-au$F`0&-WSIF@E@uk)a$JfC1VTQ-5wN(3RLWr? zTv8}Rd3=H+$2nc70@Qi~t|mwm6(FZmfJe?oc{qIS8#wkjYUU4S%Q_gK@J?;X@QhFKIzj!IHe-P47f>6 zCZEe@q5>|9%i?pH%#N7Nd=aEh4?5Ar$wcYw4na(1!9X%VSlra7fWS-(a>0CbByP~? z!ZjMDJIzD^n>;@*OTclG;RalU8%RKkvbY$^$5_m8CJ$qCF&1|$%EHhtc#VvbC;uF~gA9VPdt^kDyFv#H}mg^{y6o;n_tl=&#Zu=!A6IMI=U9#0@;<~RXY#}W~Xs}&@e z9-Zy_!A|{6D+mZaS12Q-2#FHr`bk0kNEX5Zg%ik8oJ}&x&)M}FxginPkzNX*BhU)8 zr&%j_w7F2OpQ96FNmCVoUn2~M?^n6L%JoGGd=dC-cYT%Xixl`G@YnA8zsY6u>2-=! zgMUGZ;AKf*Dennhv@E5Q{6tVYbO0Lp&^X}*uvlyTr|BW6x1;Im2CZE`5E!it0TQv* zL#uD>hC8>7pxy#gZGgxtTySc84%2=i+;`DWnViVwt9+(9wYS&Ip50V?B9~#cpeHbPq_7C#xKxNGvR(jp`<}u3hX^^iV2Xy0GZN zW(X?Cw-o?ku$}O$>s|J=QizDvgR#+)(S3kCI^`6B~uWbzRXc?QKE75ob zRYe=Fc=sA;(LAl)iVf8>tX+=!r4iXi6&rJIhG*M_x delta 158 zcmV;P0Ac^@Cb=??=D2wH7c0lH$bg*iXo$qSO{PffEX+IHDDKa zQ_y@<09~9uftP}N2mD-Y)D*%(Lbd4$!risr0phv{|H2N$Di?pW6WHKkfHSIX3;+NC M07*qoM6N<$f+N#NApigX diff --git a/client/src/main/resources/textures/items/iron_ingot.png b/client/src/main/resources/textures/items/iron_ingot.png old mode 100755 new mode 100644 index 85614a7b4e0dbe57e11448ab81521ab82b5094c6..3833fa059dd2533f4ce7cb52ecf82d1ab2e5a703 GIT binary patch delta 164 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 A6#xJL literal 0 HcmV?d00001 diff --git a/client/src/main/resources/textures/world/foliage.png b/client/src/main/resources/textures/world/foliage.png deleted file mode 100755 index 54c2429137a0f51bb9a62c3647b08e643e17b696..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32155 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

Aep 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 N9G`$$7rpuE{|{k55>x;H diff --git a/client/src/main/resources/textures/world/grass.png b/client/src/main/resources/textures/world/grass.png deleted file mode 100755 index 118a69a0f454e9447ff58254d33451835de05e6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18569 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 diff --git a/common/src/main/java/common/biome/Biome.java b/common/src/main/java/common/biome/Biome.java index b692d29a..d16d9ad5 100644 --- a/common/src/main/java/common/biome/Biome.java +++ b/common/src/main/java/common/biome/Biome.java @@ -5,91 +5,88 @@ import java.util.Map; import common.collect.Lists; import common.collect.Maps; -import common.color.Colorizer; import common.log.Log; import common.rng.PerlinGen; import common.rng.Random; import common.util.BlockPos; import common.util.Displayable; -import common.util.ExtMath; import common.util.Identifyable; public enum Biome implements Identifyable, Displayable { - NONE(0, "none", "", 0x000000), - PLAINS(1, "plains", "Ebene", 0x8db360, 12.0f, 40.0f), - DESERT(2, "desert", "Wüste", 0xfa9418, 60.0f, 0.0f), - EXTREMEHILLS(3, "extremeHills", "Extremes Bergland", 0x606060, -12.0f, 30.0f), - FOREST(4, "forest", "Wald", 0x056621, 8.0f, 80.0f), - TAIGA(5, "taiga", "Taiga", 0x0b6659, -10.0f, 80.0f), - SWAMPLAND(6, "swampland", "Sumpf", 0x07f9b2, 12.0f, 90.0f, 0xe0ffae, 0xffffffff, 6975545), - RIVER(7, "river", "Fluss", 0x0000ff), - EXTERMINATED(8, "exterminated", "Ausgelöscht", 0x000000, 150.0f, 0.0f, 0x202020, 0x303030, 0x303030), - SPACE(9, "space", "Leere des Weltraums", 0x000000, 0.0f, 0.0f), - FROZENSEA(10, "frozenSea", "Vereister See", 0x9090a0, -20.0f), - FROZENRIVER(11, "frozenRiver", "Vereister Fluss", 0xa0a0ff, -20.0f), - ICEPLAINS(12, "icePlains", "Eisebene", 0xffffff, -20.0f), - ICEMOUNTAINS(13, "iceMountains", "Vereistes Bergland", 0xa0a0a0, -20.0f), - MUSHROOMPLAINS(14, "mushroomPlains", "Pilzland", 0xff00ff, 16.0f, 100.0f), - BLACKENED(15, "blackened", "Schwarz", 0x000000, 0.0f, 0.0f, 0x000000, 0x303030, 0x303030), - BEACH(16, "beach", "Strand", 0xfade55, 12.0f, 40.0f), - DESERTHILLS(17, "desertHills", "Wüsten-Bergland", 0xd25f12, 60.0f, 0.0f), - FORESTHILLS(18, "forestHills", "Wald-Bergland", 0x22551c, 8.0f, 80.0f), - TAIGAHILLS(19, "taigaHills", "Taiga-Bergland", 0x163933, -10.0f, 80.0f), - EXTREMEHILLSEDGE(20, "extremeHillsEdge", "Extremes Bergland Gr.", 0x72789a, -12.0f, 30.0f), - JUNGLE(21, "jungle", "Urwald", 0x537b09, 18.0f, 90.0f), - JUNGLEHILLS(22, "jungleHills", "Urwald-Bergland", 0x2c4205, 18.0f, 90.0f), - JUNGLEEDGE(23, "jungleEdge", "Urwald Gr.", 0x628b17, 18.0f, 80.0f), - SEA(24, "sea", "See", 0x000070), - STONEBEACH(25, "stoneBeach", "Steinstrand", 0xa2a284, -12.0f, 30.0f), - COLDBEACH(26, "coldBeach", "Vereister Strand", 0xfaf0c0, -18.0f, 30.0f), - BIRCHFOREST(27, "birchForest", "Birkenwald", 0x307444, 4.0f, 60.0f), - BIRCHFORESTHILLS(28, "birchForestHills", "Birkenwald-Bergland", 0x1f5f32, 4.0f, 60.0f), - ROOFEDFOREST(29, "roofedForest", "Dichter Wald", 0x40511a, 8.0f, 80.0f), - COLDTAIGA(30, "coldTaiga", "Vereiste Taiga", 0x31554a, -40.0f, 40.0f), - COLDTAIGAHILLS(31, "coldTaigaHills", "Vereistes Taiga-Bergland", 0x243f36, -40.0f, 40.0f), - MEGATAIGA(32, "megaTaiga", "Hohe Taiga", 0x596651, -8.0f, 80.0f), - MEGATAIGAHILLS(33, "megaTaigaHills", "Hohes Taiga-Bergland", 0x454f3e, -8.0f, 80.0f), - EXTREMEHILLSPLUS(34, "extremeHillsPlus", "Extremes Bergland +", 0x507050, -12.0f, 30.0f), - SAVANNA(35, "savanna", "Savanne", 0xbdb25f, 28.0f, 0.0f), - SAVANNAPLATEAU(36, "savannaPlateau", "Savannen-Plateau", 0xa79d64, 20.0f, 0.0f), - MESA(37, "mesa", "Mesa", 0xd94515, 0.0f, 0.0f, 0xffffff, 9470285, 10387789), - MESAPLATEAUF(38, "mesaPlateauF", "Mesa-Waldplateau", 0xb09765, 0.0f, 0.0f, 0xffffff, 9470285, 10387789), - MESAPLATEAU(39, "mesaPlateau", "Mesa-Plateau", 0xca8c65, 0.0f, 0.0f, 0xffffff, 9470285, 10387789), - SNOWLAND(40, "snowLand", "Eisland", 0xffffff, 0.0f, 100.0f), - TIAN(41, "tian", "Tian", 0x808080, 0.0f, 80.0f), - ELVENFOREST(42, "elvenForest", "Elbenwald", 0x059821, 8.0f, 90.0f), - UPPERHELL(43, "upperHell", "Übergang in die Hölle", 0xff0000, 0.0f, 0.0f, 0x000000, 0x000000, 0x000000), - LOWERHELL(44, "lowerHell", "Abgrund der Hölle", 0xff0000, 0.0f, 0.0f, 0x000000, 0x000000, 0x000000), - HELLHILLS(45, "hellHills", "Bergland der Hölle", 0xff0000, 0.0f, 0.0f, 0x000000, 0x000000, 0x000000), - SOULPLAINS(46, "soulPlains", "Seelenland", 0xff0000, 0.0f, 0.0f, 0x000000, 0x000000, 0x000000), - ASHLAND(47, "ashLand", "Verbrannt", 0xff0000, 0.0f, 0.0f, 0x000000, 0x000000, 0x000000), - MOON(48, "moon", "Mondoberfläche", 0xa0a0a0, 0.0f, 0.0f), - CHAOS(49, "chaos", "Chaos", 0xff00ff), + NONE("none", "", 0x000000), + PLAIN("plain", "Ebene", 0x8db360, 12.0f, 40.0f), + DESERT("desert", "Wüste", 0xfa9418, 60.0f, 0.0f), + HILLS("hills", "Bergland", 0x606060, -12.0f, 30.0f), + FOREST("forest", "Wald", 0x056621, 8.0f, 80.0f), + TAIGA("taiga", "Taiga", 0x0b6659, -10.0f, 80.0f), + SWAMP("swamp", "Sumpf", 0x07f9b2, 12.0f, 90.0f), + RIVER("river", "Fluss", 0x0000ff), + EXTERMINATED("exterminated", "Ausgelöscht", 0x000000, 150.0f, 0.0f), + SPACE("space", "Leere des Weltraums", 0x000000, 0.0f, 0.0f), + ICE_SEA("ice_sea", "Vereister See", 0x9090a0, -20.0f), + ICE_RIVER("ice_river", "Vereister Fluss", 0xa0a0ff, -20.0f), + ICE("ice", "Eisebene", 0xffffff, -20.0f), + ICE_HILLS("ice_hills", "Vereistes Bergland", 0xa0a0a0, -20.0f), + MUSHROOM("mushroom", "Pilzland", 0xff00ff, 16.0f, 100.0f), + BLACKENED("blackened", "Schwarz", 0x000000, 0.0f, 0.0f), + BEACH("beach", "Strand", 0xfade55, 12.0f, 40.0f), + DESERT_HILLS("desert_hills", "Wüsten-Bergland", 0xd25f12, 60.0f, 0.0f), + FOREST_HILLS("forest_hills", "Wald-Bergland", 0x22551c, 8.0f, 80.0f), + TAIGA_HILLS("taiga_hills", "Taiga-Bergland", 0x163933, -10.0f, 80.0f), + HILLS_EDGE("hills_edge", "Bergland-Grenze", 0x72789a, -12.0f, 30.0f), + TROPIC("tropic", "Urwald", 0x537b09, 18.0f, 90.0f), + TROPIC_HILLS("tropic_hills", "Urwald-Bergland", 0x2c4205, 18.0f, 90.0f), + TROPIC_EDGE("tropic_edge", "Urwald-Grenze", 0x628b17, 18.0f, 80.0f), + SEA("sea", "See", 0x000070), + STONE_BEACH("stone_beach", "Steinstrand", 0xa2a284, -12.0f, 30.0f), + ICE_BEACH("ice_beach", "Vereister Strand", 0xfaf0c0, -18.0f, 30.0f), + BIRCH_FOREST("birch_forest", "Birkenwald", 0x307444, 4.0f, 60.0f), + BIRCH_HILLS("birch_hills", "Birken-Bergland", 0x1f5f32, 4.0f, 60.0f), + DARK_FOREST("dark_forest", "Dichter Wald", 0x40511a, 8.0f, 80.0f), + ICE_TAIGA("ice_taiga", "Vereiste Taiga", 0x31554a, -40.0f, 40.0f), + ICE_TAIGA_HILLS("ice_taiga_hills", "Vereistes Taiga-Bergland", 0x243f36, -40.0f, 40.0f), + LARGE_TAIGA("large_taiga", "Hohe Taiga", 0x596651, -8.0f, 80.0f), + LARGE_TAIGA_HILLS("large_taiga_hills", "Hohes Taiga-Bergland", 0x454f3e, -8.0f, 80.0f), + LARGE_HILLS("large_hills", "Hohes Bergland", 0x507050, -12.0f, 30.0f), + SAVANNA("savanna", "Savanne", 0xbdb25f, 28.0f, 0.0f), + SAVANNA_PLATEAU("savanna_plateau", "Savannen-Plateau", 0xa79d64, 20.0f, 0.0f), + MESA("mesa", "Mesa", 0xd94515, 0.0f, 0.0f), + MESA_FOREST("mesa_forest", "Mesa-Wald", 0xb09765, 0.0f, 0.0f), + MESA_PLATEAU("mesa_plateau", "Mesa-Plateau", 0xca8c65, 0.0f, 0.0f), + SNOW("snow", "Eisland", 0xffffff, 0.0f, 100.0f), + TIAN("tian", "Tian", 0x808080, 0.0f, 80.0f), + ELVEN_FOREST("elven_forest", "Elbenwald", 0x059821, 8.0f, 90.0f), + UPPER_HELL("upper_hell", "Übergang in die Hölle", 0xff0000, 0.0f, 0.0f), + LOWER_HELL("lower_hell", "Abgrund der Hölle", 0xff0000, 0.0f, 0.0f), + HELL_HILLS("hell_hills", "Bergland der Hölle", 0xff0000, 0.0f, 0.0f), + SOUL_PLAINS("soul_plains", "Seelenland", 0xff0000, 0.0f, 0.0f), + ASH("ash", "Verbrannt", 0xff0000, 0.0f, 0.0f), + MOON("moon", "Mondoberfläche", 0xa0a0a0, 0.0f, 0.0f), + CHAOS("chaos", "Chaos", 0xff00ff), - DESERTM(130, "desertM", "Wüste M", 0xfa9418, 60.0f, 0.0f), - EXTREMEHILLSM(131, "extremeHillsM", "Extremes Bergland M", 0x606060, -12.0f, 30.0f), - FLOWERFOREST(132, "flowerForest", "Blumenwald", 0x6a7425, 8.0f, 80.0f), - TAIGAM(133, "taigaM", "Taiga M", 0x0b6659, -10.0f, 80.0f), - SWAMPLANDM(134, "swamplandM", "Sumpf M", 0x07f9b2, 12.0f, 90.0f, 0xe0ffae, 0xffffffff, 6975545), - ICEPLAINSSPIKES(140, "icePlainsSpikes", "Eisebene + Spitzen", 0xd2ffff, -20.0f), - JUNGLEM(149, "jungleM", "Urwald M", 0x537b09, 18.0f, 90.0f), - JUNGLEEDGEM(151, "jungleEdgeM", "Urwald Gr. M", 0x628b17, 18.0f, 80.0f), - BIRCHFORESTM(155, "birchForestM", "Birkenwald M", 0x307444, 4.0f, 60.0f), - BIRCHFORESTHILLSM(156, "birchForestHillsM", "Birkenwald-Bergland M", 0x1f5f32, 4.0f, 60.0f), - ROOFEDFORESTM(157, "roofedForestM", "Dichter Wald M", 0x40511a, 8.0f, 80.0f), - COLDTAIGAM(158, "coldTaigaM", "Vereiste Taiga M", 0x31554a, -40.0f, 40.0f), - MEGASPRUCETAIGA(160, "megaSpruceTaiga", "Hohe Fichtentaiga", 0x596651, -10.0f, 80.0f), - REDWOODTAIGAHILLSM(161, "redwoodTaigaHillsM", "Mammutbaumtaiga", 0x596651, -10.0f, 80.0f), - EXTREMEHILLSPLUSM(162, "extremeHillsPlusM", "Extremes Bergland + M", 0x507050, -12.0f, 30.0f), - SAVANNAM(163, "savannaM", "Savanne M", 0xbdb25f, 24.0f, 0.0f), - SAVANNAPLATEAUM(164, "savannaPlateauM", "Savannen-Plateau M", 0xa79d64, 20.0f, 0.0f), - MESABRYCE(165, "mesaBryce", "Mesa (Bryce)", 0xd94515, 0.0f, 0.0f, 0xffffff, 9470285, 10387789), - MESAPLATEAUFM(166, "mesaPlateauFM", "Mesa-Waldplateau M", 0xb09765, 0.0f, 0.0f, 0xffffff, 9470285, 10387789), - MESAPLATEAUM(167, "mesaPlateauM", "Mesa-Plateau M", 0xca8c65, 0.0f, 0.0f, 0xffffff, 9470285, 10387789); + DESERT_MOD("desert_mod", "Wüste M", 0xfa9418, 60.0f, 0.0f), + HILLS_MOD("hills_mod", "Bergland M", 0x606060, -12.0f, 30.0f), + FLOWER_FOREST("flower_forest", "Blumenwald", 0x6a7425, 8.0f, 80.0f), + TAIGA_MOD("taiga_mod", "Taiga M", 0x0b6659, -10.0f, 80.0f), + SWAMP_MOD("swamp_mod", "Sumpf M", 0x07f9b2, 12.0f, 90.0f), + ICE_SPIKES("ice_spikes", "Eisebene mit Spitzen", 0xd2ffff, -20.0f), + TROPIC_MOD("tropic_mod", "Urwald M", 0x537b09, 18.0f, 90.0f), + TROPIC_EDGE_MOD("propic_edge_mod", "Urwald-Grenze M", 0x628b17, 18.0f, 80.0f), + BIRCH_FOREST_MOD("birch_forest_mod", "Birkenwald M", 0x307444, 4.0f, 60.0f), + BIRCH_HILLS_MOD("birch_hills_mod", "Birken-Bergland M", 0x1f5f32, 4.0f, 60.0f), + DARK_FOREST_MOD("dark_forest_mod", "Dichter Wald M", 0x40511a, 8.0f, 80.0f), + ICE_TAIGA_MOD("ice_taiga_mod", "Vereiste Taiga M", 0x31554a, -40.0f, 40.0f), + SPRUCE_TAIGA("spruce_taiga", "Fichtentaiga", 0x596651, -10.0f, 80.0f), + REDWOOD_TAIGA("redwood_taiga", "Mammutbaumtaiga", 0x596651, -10.0f, 80.0f), + LARGE_HILLS_MOD("large_hills_mod", "Hohes Bergland M", 0x507050, -12.0f, 30.0f), + SAVANNA_MOD("savanna_mod", "Savanne M", 0xbdb25f, 24.0f, 0.0f), + SAVANNA_PLATEAU_MOD("savanna_plateau_mod", "Savannen-Plateau M", 0xa79d64, 20.0f, 0.0f), + MESA_PEAK("mesa_peak", "Mesa-Spitze", 0xd94515, 0.0f, 0.0f), + MESA_FOREST_MOD("mesa_forest_mod", "Mesa-Wald M", 0xb09765, 0.0f, 0.0f), + MESA_PLATEAU_MOD("mesa_plateau_mod", "Mesa-Plateau M", 0xca8c65, 0.0f, 0.0f); public static final Biome DEF_BIOME = FOREST; private static final PerlinGen TEMP_NOISE = new PerlinGen(new Random(836430928262265276L), 1); - private static final PerlinGen COLOR_NOISE = new PerlinGen(new Random(6549321755809421L), 1); private static final Biome[] BIOMES = new Biome[256]; private static final Map LOOKUP = Maps.newTreeMap(); @@ -99,16 +96,13 @@ public enum Biome implements Identifyable, Displayable { public final int color; public final float temperature; public final float humidity; - public final int waterColor; - public final int grassColor; - public final int foliageColor; static { for(Biome biome : values()) { BIOMES[biome.id] = biome; - if(LOOKUP.containsKey(biome.name.toLowerCase())) - throw new IllegalStateException("Biom \"" + biome.name + "\" ist als ID " + LOOKUP.get(biome.name.toLowerCase()).id + " und " + biome.id + " definiert"); - LOOKUP.put(biome.name.toLowerCase(), biome); + if(LOOKUP.containsKey(biome.name)) + throw new IllegalStateException("Biom \"" + biome.name + "\" ist als ID " + LOOKUP.get(biome.name).id + " und " + biome.id + " definiert"); + LOOKUP.put(biome.name, biome); } } @@ -158,28 +152,21 @@ public enum Biome implements Identifyable, Displayable { return biome; } - private Biome(int id, String name, String display, int color, float temperature, float humidity, int waterColor, int grassColor, int foliageColor) { - this.id = id; + private Biome(String name, String display, int color, float temperature, float humidity) { + this.id = this.ordinal(); this.name = name; this.display = display; this.temperature = temperature; this.humidity = humidity; this.color = color; - this.waterColor = waterColor; - this.grassColor = grassColor; - this.foliageColor = foliageColor; } - private Biome(int id, String name, String display, int color, float temperature, float humidity) { - this(id, name, display, color, temperature, humidity, 0xffffff, 0xffffffff, 0xffffffff); + private Biome(String name, String display, int color, float temperature) { + this(name, display, color, temperature, 50.0f); } - private Biome(int id, String name, String display, int color, float temperature) { - this(id, name, display, color, temperature, 50.0f, 0xffffff, 0xffffffff, 0xffffffff); - } - - private Biome(int id, String name, String display, int color) { - this(id, name, display, color, 0.0f, 50.0f, 0xffffff, 0xffffffff, 0xffffffff); + private Biome(String name, String display, int color) { + this(name, display, color, 0.0f, 50.0f); } public final float getTemperature(BlockPos pos) { @@ -195,37 +182,9 @@ public enum Biome implements Identifyable, Displayable { return f > 1.0f ? 1.0f : f; } - public boolean isHighHumidity() { - return this.humidity > 85.0f; - } - // skycolor = ((temp + 14) / 40 + 0.15) / 3 - public int getGrassColorAtPos(BlockPos pos) { - if(this.grassColor != 0xffffffff) - return this.grassColor; - if(this == SWAMPLAND || this == SWAMPLANDM) { - double d0 = COLOR_NOISE.generate((double)pos.getX() * 0.0225D, (double)pos.getZ() * 0.0225D); - return d0 < -0.1D ? 5011004 : 6975545; - } - if(this == ELVENFOREST) - return Colorizer.getGrassColor(1.0f, this.humidity * 0.01f); - double d0 = (double)ExtMath.clampf((this.getTemperature(pos) + 14.0f) / 40.0f + 0.15f, 0.0F, 1.0F); - double d1 = (double)ExtMath.clampf(this.humidity * 0.01f, 0.0F, 1.0F); - return this == ROOFEDFOREST || this == ROOFEDFORESTM ? (Colorizer.getGrassColor(d0, d1) & 16711422) + 2634762 >> 1 : Colorizer.getGrassColor(d0, d1); - } - - public int getFoliageColorAtPos(BlockPos pos) { - if(this.foliageColor != 0xffffffff) - return this.foliageColor; - if(this == ELVENFOREST) - return Colorizer.getFoliageColor(1.0f, this.humidity * 0.01f); - double d0 = (double)ExtMath.clampf((this.getTemperature(pos) + 14.0f) / 40.0f + 0.15f, 0.0F, 1.0F); - double d1 = (double)ExtMath.clampf(this.humidity * 0.01f, 0.0F, 1.0F); - return Colorizer.getFoliageColor(d0, d1); - } - - public String getName() { + public String getName() { return this.name; } diff --git a/common/src/main/java/common/block/Block.java b/common/src/main/java/common/block/Block.java index c59f8200..07159065 100755 --- a/common/src/main/java/common/block/Block.java +++ b/common/src/main/java/common/block/Block.java @@ -15,6 +15,7 @@ import java.util.function.Function; import common.attributes.Attribute; import common.attributes.UsageSlot; +import common.biome.Biome; import common.block.artificial.BlockSlab; import common.block.natural.BlockSnow; import common.collect.ImmutableList; @@ -39,7 +40,7 @@ import common.item.StackSize; import common.model.BlockLayer; import common.model.Model; import common.model.ModelProvider; -import common.model.Transform; +import common.model.GuiPosition; import common.properties.Property; import common.rng.Random; import common.tileentity.TileEntity; @@ -1033,14 +1034,14 @@ public class Block { } return light; } - - public BlockLayer getRenderLayer() { - return BlockLayer.SOLID; - } public int getRenderType() { return 3; } + + public BlockLayer getRenderLayer() { + return BlockLayer.SOLID; + } public boolean isXrayVisible() { return false; @@ -1053,41 +1054,18 @@ public class Block { public void getAnimatedTextures(Map map) { } - public int getRenderColor(State state) { - return 16777215; - } - - public int colorMultiplier(IWorldAccess world, BlockPos pos, int pass) { - return 16777215; - } - - public State getEntityState(State state) { - return state; - } - public Model getModel(ModelProvider provider, String name, State state) { return provider.getModel(name).add().all(); } - - public String getFallbackTexture() { - return null; - } - - public void setItemBounds() { - } - public Transform getTransform() { - return Transform.IDENTITY; + public GuiPosition getItemPosition() { + return GuiPosition.NORMAL; } public State getItemState() { return this.getState(); } - public boolean isItemColored() { - return false; - } - public TextColor getItemColor() { return this.radiation > 0.0f ? TextColor.GREEN : null; } diff --git a/common/src/main/java/common/block/artificial/BlockCake.java b/common/src/main/java/common/block/artificial/BlockCake.java index 1c9b5f22..bceb48ca 100755 --- a/common/src/main/java/common/block/artificial/BlockCake.java +++ b/common/src/main/java/common/block/artificial/BlockCake.java @@ -102,16 +102,6 @@ public class BlockCake extends Block this.setBlockBounds(f1, 0.0F, f, 1.0F - f, f2, 1.0F - f); } - /** - * Sets the block's bounds for rendering it as an item - */ - public void setItemBounds() - { - float f = 0.0625F; - float f1 = 0.5F; - this.setBlockBounds(f, 0.0F, f, 1.0F - f, f1, 1.0F - f); - } - public BoundingBox getCollisionBox(World worldIn, BlockPos pos, State state) { float f = 0.0625F; diff --git a/common/src/main/java/common/block/artificial/BlockCarpet.java b/common/src/main/java/common/block/artificial/BlockCarpet.java index ce19450d..d1b4f308 100755 --- a/common/src/main/java/common/block/artificial/BlockCarpet.java +++ b/common/src/main/java/common/block/artificial/BlockCarpet.java @@ -6,7 +6,7 @@ import common.color.DyeColor; import common.item.CheatTab; import common.model.Model; import common.model.ModelProvider; -import common.model.Transform; +import common.model.GuiPosition; import common.util.BlockPos; import common.util.Facing; import common.world.IWorldAccess; @@ -51,14 +51,6 @@ public class BlockCarpet extends Block return false; } - /** - * Sets the block's bounds for rendering it as an item - */ - public void setItemBounds() - { - this.setBlockBoundsFromMeta(); - } - public void setBlockBounds(IWorldAccess worldIn, BlockPos pos) { this.setBlockBoundsFromMeta(); diff --git a/common/src/main/java/common/block/artificial/BlockDoor.java b/common/src/main/java/common/block/artificial/BlockDoor.java index 5f50661e..717ce025 100755 --- a/common/src/main/java/common/block/artificial/BlockDoor.java +++ b/common/src/main/java/common/block/artificial/BlockDoor.java @@ -17,7 +17,7 @@ import common.model.BlockLayer; import common.model.Model; import common.model.ModelProvider; import common.model.ModelRotation; -import common.model.Transform; +import common.model.GuiPosition; import common.properties.Property; import common.properties.PropertyBool; import common.properties.PropertyEnum; @@ -285,8 +285,8 @@ public class BlockDoor extends Block implements Rotatable { } } - public Transform getTransform() { - return Transform.PANE_SIDE; + public GuiPosition getItemPosition() { + return GuiPosition.PANE_SIDE; } public State getItemState() { diff --git a/common/src/main/java/common/block/artificial/BlockFence.java b/common/src/main/java/common/block/artificial/BlockFence.java index a57d1897..018d3879 100755 --- a/common/src/main/java/common/block/artificial/BlockFence.java +++ b/common/src/main/java/common/block/artificial/BlockFence.java @@ -13,7 +13,7 @@ import common.item.tool.ItemLead; import common.model.Model; import common.model.ModelProvider; import common.model.ModelRotation; -import common.model.Transform; +import common.model.GuiPosition; import common.properties.Property; import common.properties.PropertyBool; import common.util.BlockPos; @@ -194,8 +194,8 @@ public class BlockFence extends Block return new Property[] {NORTH, EAST, WEST, SOUTH}; } - public Transform getTransform() { - return Transform.FENCE; + public GuiPosition getItemPosition() { + return GuiPosition.FENCE; } public String getTexture() { diff --git a/common/src/main/java/common/block/artificial/BlockFenceGate.java b/common/src/main/java/common/block/artificial/BlockFenceGate.java index 2a27857e..111ea13b 100755 --- a/common/src/main/java/common/block/artificial/BlockFenceGate.java +++ b/common/src/main/java/common/block/artificial/BlockFenceGate.java @@ -11,7 +11,7 @@ import common.item.CheatTab; import common.model.Model; import common.model.ModelProvider; import common.model.ModelRotation; -import common.model.Transform; +import common.model.GuiPosition; import common.properties.Property; import common.properties.PropertyBool; import common.util.BlockPos; diff --git a/common/src/main/java/common/block/artificial/BlockFloorPortal.java b/common/src/main/java/common/block/artificial/BlockFloorPortal.java index 0f48d034..b227ad26 100755 --- a/common/src/main/java/common/block/artificial/BlockFloorPortal.java +++ b/common/src/main/java/common/block/artificial/BlockFloorPortal.java @@ -16,6 +16,7 @@ import common.util.BlockPos; import common.util.BoundingBox; import common.util.Facing; import common.util.ParticleType; +import common.util.PortalType; import common.world.IWorldAccess; import common.world.AWorldClient; import common.world.State; @@ -88,7 +89,7 @@ public class BlockFloorPortal extends Block // entityIn.travelToDimension(entityIn.dimension == 1 ? 0 : 1, null, 0.0f, 0.0f); // } if(entityIn.getEntityBoundingBox().intersectsWith(this.getCollisionBox(worldIn, pos, state))) - entityIn.setFlatPortal(); + entityIn.setPortal(PortalType.FLOOR); } public void displayTick(AWorldClient worldIn, BlockPos pos, State state, Random rand) diff --git a/common/src/main/java/common/block/artificial/BlockFlowerPot.java b/common/src/main/java/common/block/artificial/BlockFlowerPot.java index dcf1f452..3bebf6aa 100755 --- a/common/src/main/java/common/block/artificial/BlockFlowerPot.java +++ b/common/src/main/java/common/block/artificial/BlockFlowerPot.java @@ -16,7 +16,7 @@ import common.item.ItemStack; import common.model.BlockLayer; import common.model.Model; import common.model.ModelProvider; -import common.model.Transform; +import common.model.GuiPosition; import common.rng.Random; import common.util.BlockPos; import common.util.Facing; @@ -109,18 +109,10 @@ public class BlockFlowerPot extends Block { super(Material.SMALL); this.content = content; - this.setItemBounds(); - POTS.add(this); - } - - /** - * Sets the block's bounds for rendering it as an item - */ - public void setItemBounds() - { float f = 0.375F; float f1 = f / 2.0F; this.setBlockBounds(0.5F - f1, 0.0F, 0.5F - f1, 0.5F + f1, f, 0.5F + f1); + POTS.add(this); } /** @@ -262,7 +254,7 @@ public class BlockFlowerPot extends Block return this.content == null; } - public Transform getTransform() { - return Transform.SMALL; + public GuiPosition getItemPosition() { + return GuiPosition.SMALL; } } diff --git a/common/src/main/java/common/block/artificial/BlockLadder.java b/common/src/main/java/common/block/artificial/BlockLadder.java index 627936a2..19f818f5 100755 --- a/common/src/main/java/common/block/artificial/BlockLadder.java +++ b/common/src/main/java/common/block/artificial/BlockLadder.java @@ -9,7 +9,7 @@ import common.model.BlockLayer; import common.model.Model; import common.model.ModelProvider; import common.model.ModelRotation; -import common.model.Transform; +import common.model.GuiPosition; import common.properties.Property; import common.util.BlockPos; import common.util.BoundingBox; @@ -149,7 +149,7 @@ public class BlockLadder extends Block implements Rotatable .rotate(ModelRotation.getNorthRot(state.getValue(FACING))); } - public Transform getTransform() { - return Transform.PANE_SIDE; + public GuiPosition getItemPosition() { + return GuiPosition.PANE_SIDE; } } diff --git a/common/src/main/java/common/block/artificial/BlockPane.java b/common/src/main/java/common/block/artificial/BlockPane.java index b2463306..5d890ee3 100755 --- a/common/src/main/java/common/block/artificial/BlockPane.java +++ b/common/src/main/java/common/block/artificial/BlockPane.java @@ -12,7 +12,7 @@ import common.model.BlockLayer; import common.model.Model; import common.model.ModelProvider; import common.model.ModelRotation; -import common.model.Transform; +import common.model.GuiPosition; import common.properties.Property; import common.properties.PropertyBool; import common.rng.Random; @@ -121,14 +121,6 @@ public class BlockPane extends Block } } - /** - * Sets the block's bounds for rendering it as an item - */ - public void setItemBounds() - { - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - } - public void setBlockBounds(IWorldAccess worldIn, BlockPos pos) { float f = 0.4375F; @@ -494,8 +486,8 @@ public class BlockPane extends Block return new Property[] {NORTH, SOUTH, WEST, EAST}; } - public Transform getTransform() { - return Transform.PANE; + public GuiPosition getItemPosition() { + return GuiPosition.PANE; } public State getItemState() { diff --git a/common/src/main/java/common/block/artificial/BlockPortal.java b/common/src/main/java/common/block/artificial/BlockPortal.java index 45abcf80..59c2ee16 100755 --- a/common/src/main/java/common/block/artificial/BlockPortal.java +++ b/common/src/main/java/common/block/artificial/BlockPortal.java @@ -1,10 +1,12 @@ package common.block.artificial; +import java.util.List; import java.util.Map; import common.block.Block; import common.block.Material; import common.block.natural.BlockFire; +import common.collect.Lists; import common.entity.Entity; import common.init.Blocks; import common.item.Item; @@ -19,6 +21,7 @@ import common.util.BlockPos; import common.util.BoundingBox; import common.util.Facing; import common.util.ParticleType; +import common.util.PortalType; import common.world.IWorldAccess; import common.world.AWorldClient; import common.world.State; @@ -27,15 +30,25 @@ import common.world.World; public class BlockPortal extends Block { public static final PropertyEnum AXIS = PropertyEnum.create("axis", Facing.Axis.class, Facing.Axis.X, Facing.Axis.Z); - public static final PropertyInteger DIM = PropertyInteger.create("dim", 0, 7); - + public static final BlockPortal[] PORTALS = new BlockPortal[PortalType.values().length - 2]; private static final int[] COLORS = new int[] {0x000000, 0xff0000, 0xffff00, 0x00ff00, 0x00ffff, 0x0000ff, 0xff00ff, 0xffffff}; + + private final PortalType type; + + public static BlockPortal getByType(PortalType type) { + return type.ordinal() >= PORTALS.length ? null : PORTALS[type.ordinal()]; + } - public BlockPortal() + public BlockPortal(PortalType type) { super(Material.PORTAL); - this.setDefaultState(this.getBaseState().withProperty(AXIS, Facing.Axis.X).withProperty(DIM, 0)); -// this.setTickRandomly(); + this.setDefaultState(this.getBaseState().withProperty(AXIS, Facing.Axis.X)); + this.type = type; + PORTALS[type.ordinal()] = this; + } + + public PortalType getType() { + return this.type; } // public void updateTick(IWorldServer worldIn, BlockPos pos, IBlockState state, Random rand) @@ -106,9 +119,9 @@ public class BlockPortal extends Block return BlockLayer.TRANSLUCENT; } - public boolean tryIgnitePortal(World worldIn, BlockPos pos, int dim) + public boolean tryIgnitePortal(World worldIn, BlockPos pos) { - BlockPortal.Size size = new BlockPortal.Size(worldIn, pos, Facing.Axis.X, dim); + BlockPortal.Size size = new BlockPortal.Size(worldIn, pos, Facing.Axis.X, this); if (size.func_150860_b() && size.field_150864_e == 0) { @@ -117,7 +130,7 @@ public class BlockPortal extends Block } else { - BlockPortal.Size size2 = new BlockPortal.Size(worldIn, pos, Facing.Axis.Z, dim); + BlockPortal.Size size2 = new BlockPortal.Size(worldIn, pos, Facing.Axis.Z, this); if (size2.func_150860_b() && size2.field_150864_e == 0) { @@ -137,11 +150,10 @@ public class BlockPortal extends Block public void onUpdate(World worldIn, BlockPos pos, State state, Block neighborBlock) { Facing.Axis enumfacing$axis = (Facing.Axis)state.getValue(AXIS); - int dim = state.getValue(DIM); if (enumfacing$axis == Facing.Axis.X) { - BlockPortal.Size blockportal$size = new BlockPortal.Size(worldIn, pos, Facing.Axis.X, dim); + BlockPortal.Size blockportal$size = new BlockPortal.Size(worldIn, pos, Facing.Axis.X, this); if (!blockportal$size.func_150860_b() || blockportal$size.field_150864_e < blockportal$size.field_150868_h * blockportal$size.height) { @@ -150,7 +162,7 @@ public class BlockPortal extends Block } else if (enumfacing$axis == Facing.Axis.Z) { - BlockPortal.Size blockportal$size1 = new BlockPortal.Size(worldIn, pos, Facing.Axis.Z, dim); + BlockPortal.Size blockportal$size1 = new BlockPortal.Size(worldIn, pos, Facing.Axis.Z, this); if (!blockportal$size1.func_150860_b() || blockportal$size1.field_150864_e < blockportal$size1.field_150868_h * blockportal$size1.height) { @@ -208,7 +220,7 @@ public class BlockPortal extends Block { if (entityIn.vehicle == null && entityIn.passenger == null) { - entityIn.setPortal(state.getValue(DIM)); + entityIn.setPortal(this.type); } } @@ -239,33 +251,23 @@ public class BlockPortal extends Block } } - public int getRenderColor(State state) - { - return COLORS[state.getValue(DIM)]; - } - - public int colorMultiplier(IWorldAccess worldIn, BlockPos pos, int renderPass) - { - return this.getRenderColor(worldIn.getState(pos)); - } - protected Property[] getProperties() { - return new Property[] {AXIS, DIM}; + return new Property[] {AXIS}; } public Model getModel(ModelProvider provider, String name, State state) { return state.getValue(AXIS) == Facing.Axis.X ? provider.getModel(name) .add(0, 0, 6, 16, 16, 10) - .n().uv(0, 0, 16, 16).noCull().tint() - .s().uv(0, 0, 16, 16).noCull().tint() : provider.getModel(name) + .n().uv(0, 0, 16, 16).noCull() + .s().uv(0, 0, 16, 16).noCull() : provider.getModel(name) .add(6, 0, 0, 10, 16, 16) - .w().uv(0, 0, 16, 16).noCull().tint() - .e().uv(0, 0, 16, 16).noCull().tint(); + .w().uv(0, 0, 16, 16).noCull() + .e().uv(0, 0, 16, 16).noCull(); } public void getAnimatedTextures(Map map) { - map.put("portal", 1); + map.put(this.type.getName() + "_portal", 1); } protected boolean hasRegisteredItem() { @@ -332,13 +334,13 @@ public class BlockPortal extends Block private final Facing.Axis axis; private final Facing field_150866_c; private final Facing field_150863_d; - private final int dim; + private final BlockPortal dim; private int field_150864_e = 0; private BlockPos field_150861_f; private int height; private int field_150868_h; - public Size(World worldIn, BlockPos p_i45694_2_, Facing.Axis p_i45694_3_, int dim) + public Size(World worldIn, BlockPos p_i45694_2_, Facing.Axis p_i45694_3_, BlockPortal dim) { this.world = worldIn; this.dim = dim; @@ -424,7 +426,7 @@ public class BlockPortal extends Block break label24; } - if (block == Blocks.portal) + if (block instanceof BlockPortal) { ++this.field_150864_e; } @@ -474,7 +476,7 @@ public class BlockPortal extends Block protected boolean func_150857_a(Block p_150857_1_) { - return p_150857_1_ == Blocks.air || p_150857_1_ instanceof BlockFire || p_150857_1_ == Blocks.portal; + return p_150857_1_ == Blocks.air || p_150857_1_ instanceof BlockFire || p_150857_1_ instanceof BlockPortal; } public boolean func_150860_b() @@ -487,8 +489,7 @@ public class BlockPortal extends Block for (int i = 0; i < this.field_150868_h; ++i) { BlockPos blockpos = this.field_150861_f.offset(this.field_150866_c, i); - State state = Blocks.portal.getState().withProperty(BlockPortal.AXIS, this.axis) - .withProperty(DIM, this.dim); + State state = this.dim.getState().withProperty(BlockPortal.AXIS, this.axis); for (int j = 0; j < this.height; ++j) { diff --git a/common/src/main/java/common/block/artificial/BlockPortalFrame.java b/common/src/main/java/common/block/artificial/BlockPortalFrame.java index 4dc347db..10f1b42b 100755 --- a/common/src/main/java/common/block/artificial/BlockPortalFrame.java +++ b/common/src/main/java/common/block/artificial/BlockPortalFrame.java @@ -43,14 +43,6 @@ public class BlockPortalFrame extends Block implements Rotatable return false; } - /** - * Sets the block's bounds for rendering it as an item - */ - public void setItemBounds() - { - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.8125F, 1.0F); - } - /** * Add all collision boxes of this Block to the list that intersect with the given mask. */ @@ -65,7 +57,7 @@ public class BlockPortalFrame extends Block implements Rotatable super.getCollisionBoxes(worldIn, pos, state, mask, list, collidingEntity); } - this.setItemBounds(); + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.8125F, 1.0F); } /** diff --git a/common/src/main/java/common/block/artificial/BlockSkull.java b/common/src/main/java/common/block/artificial/BlockSkull.java index 0937ae83..bd539ad8 100755 --- a/common/src/main/java/common/block/artificial/BlockSkull.java +++ b/common/src/main/java/common/block/artificial/BlockSkull.java @@ -8,7 +8,7 @@ import common.entity.types.EntityLiving; import common.model.Model; import common.model.ModelProvider; import common.model.ModelRotation; -import common.model.Transform; +import common.model.GuiPosition; import common.properties.Property; import common.util.BlockPos; import common.util.Facing; @@ -56,7 +56,7 @@ public class BlockSkull extends Block implements Rotatable { return true; } - public Transform getTransform() { - return Transform.SMALL; + public GuiPosition getItemPosition() { + return GuiPosition.SMALL; } } diff --git a/common/src/main/java/common/block/artificial/BlockSlab.java b/common/src/main/java/common/block/artificial/BlockSlab.java index 5675a738..85bd812e 100755 --- a/common/src/main/java/common/block/artificial/BlockSlab.java +++ b/common/src/main/java/common/block/artificial/BlockSlab.java @@ -90,10 +90,6 @@ public class BlockSlab extends Block implements Directional { } } - public void setItemBounds() { - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F); - } - public void getCollisionBoxes(World worldIn, BlockPos pos, State state, BoundingBox mask, List list, Entity collidingEntity) { this.setBlockBounds(worldIn, pos); super.getCollisionBoxes(worldIn, pos, state, mask, list, collidingEntity); diff --git a/common/src/main/java/common/block/artificial/BlockStairs.java b/common/src/main/java/common/block/artificial/BlockStairs.java index 11cc288a..6818aead 100755 --- a/common/src/main/java/common/block/artificial/BlockStairs.java +++ b/common/src/main/java/common/block/artificial/BlockStairs.java @@ -15,7 +15,7 @@ import common.item.CheatTab; import common.model.BlockLayer; import common.model.Model; import common.model.ModelProvider; -import common.model.Transform; +import common.model.GuiPosition; import common.properties.Property; import common.properties.PropertyEnum; import common.rng.Random; @@ -775,8 +775,8 @@ public class BlockStairs extends Block implements Rotatable return new Property[] {FACING, HALF, SHAPE}; } - public Transform getTransform() { - return Transform.STAIRS; + public GuiPosition getItemPosition() { + return GuiPosition.STAIRS; } public Model getModel(ModelProvider provider, String name, State state) { diff --git a/common/src/main/java/common/block/artificial/BlockTrapDoor.java b/common/src/main/java/common/block/artificial/BlockTrapDoor.java index 437c87cf..8b87b5b4 100755 --- a/common/src/main/java/common/block/artificial/BlockTrapDoor.java +++ b/common/src/main/java/common/block/artificial/BlockTrapDoor.java @@ -11,7 +11,7 @@ import common.model.BlockLayer; import common.model.Model; import common.model.ModelProvider; import common.model.ModelRotation; -import common.model.Transform; +import common.model.GuiPosition; import common.properties.Property; import common.properties.PropertyBool; import common.properties.PropertyEnum; @@ -86,15 +86,6 @@ public class BlockTrapDoor extends Block implements Rotatable this.setBounds(worldIn.getState(pos)); } - /** - * Sets the block's bounds for rendering it as an item - */ - public void setItemBounds() - { - float f = 0.1875F; - this.setBlockBounds(0.0F, 0.40625F, 0.0F, 1.0F, 0.59375F, 1.0F); - } - public void setBounds(State state) { if (state.getBlock() == this) diff --git a/common/src/main/java/common/block/foliage/BlockBlackenedSoil.java b/common/src/main/java/common/block/foliage/BlockBlackenedSoil.java index 2bfb3175..aded0dd8 100644 --- a/common/src/main/java/common/block/foliage/BlockBlackenedSoil.java +++ b/common/src/main/java/common/block/foliage/BlockBlackenedSoil.java @@ -38,7 +38,7 @@ public class BlockBlackenedSoil extends Block Block block = worldIn.getState(blockpos.up()).getBlock(); State iblockstate = worldIn.getState(blockpos); - if ((iblockstate.getBlock() == Blocks.dirt || iblockstate.getBlock() == Blocks.grass || iblockstate.getBlock() == Blocks.blackened_dirt) && worldIn.getLightFromNeighbors(blockpos.up()) >= 2 && block.getLightOpacity() <= 6) + if ((iblockstate.getBlock() == Blocks.dirt || iblockstate.getBlock() == Blocks.grass || iblockstate.getBlock() == Blocks.swamp || iblockstate.getBlock() == Blocks.blackened_dirt) && worldIn.getLightFromNeighbors(blockpos.up()) >= 2 && block.getLightOpacity() <= 6) { worldIn.setState(blockpos, Blocks.blackened_soil.getState()); worldIn.setBiome(blockpos, Biome.BLACKENED); diff --git a/common/src/main/java/common/block/foliage/BlockBlueShroom.java b/common/src/main/java/common/block/foliage/BlockBlueShroom.java index 7c1a2ed0..bdf46aea 100755 --- a/common/src/main/java/common/block/foliage/BlockBlueShroom.java +++ b/common/src/main/java/common/block/foliage/BlockBlueShroom.java @@ -4,7 +4,7 @@ import common.block.Block; import common.init.Blocks; import common.model.Model; import common.model.ModelProvider; -import common.model.Transform; +import common.model.GuiPosition; import common.rng.Random; import common.util.BlockPos; import common.vars.Vars; @@ -87,7 +87,7 @@ public class BlockBlueShroom extends BlockBush return provider.getModel("blue_mushroom").cross(); } - public Transform getTransform() { - return Transform.CROSS_SMALL; + public GuiPosition getItemPosition() { + return GuiPosition.CROSS_SMALL; } } diff --git a/common/src/main/java/common/block/foliage/BlockDeadBush.java b/common/src/main/java/common/block/foliage/BlockDeadBush.java index fc06e31d..37174a09 100755 --- a/common/src/main/java/common/block/foliage/BlockDeadBush.java +++ b/common/src/main/java/common/block/foliage/BlockDeadBush.java @@ -11,7 +11,7 @@ import common.item.ItemStack; import common.item.tool.ItemShears; import common.model.Model; import common.model.ModelProvider; -import common.model.Transform; +import common.model.GuiPosition; import common.rng.Random; import common.tileentity.TileEntity; import common.util.BlockPos; @@ -77,7 +77,7 @@ public class BlockDeadBush extends BlockBush return provider.getModel("deadbush").cross(); } - public Transform getTransform() { - return Transform.CROSS; + public GuiPosition getItemPosition() { + return GuiPosition.CROSS; } } diff --git a/common/src/main/java/common/block/foliage/BlockDoublePlant.java b/common/src/main/java/common/block/foliage/BlockDoublePlant.java index a29305c4..9e47b265 100755 --- a/common/src/main/java/common/block/foliage/BlockDoublePlant.java +++ b/common/src/main/java/common/block/foliage/BlockDoublePlant.java @@ -1,9 +1,9 @@ package common.block.foliage; +import common.biome.Biome; import common.block.Block; import common.block.Material; import common.block.SoundType; -import common.color.Colorizer; import common.entity.npc.EntityNPC; import common.entity.types.EntityLiving; import common.init.Blocks; @@ -14,7 +14,7 @@ import common.item.StackSize; import common.item.tool.ItemShears; import common.model.Model; import common.model.ModelProvider; -import common.model.Transform; +import common.model.GuiPosition; import common.properties.Property; import common.properties.PropertyEnum; import common.rng.Random; @@ -154,19 +154,6 @@ public class BlockDoublePlant extends BlockBush implements IGrowable } } - public boolean isItemColored() { - return this.type == BlockDoublePlant.EnumPlantType.GRASS || this.type == BlockDoublePlant.EnumPlantType.FERN; - } - - public int getRenderColor(State state) { - return this.type != BlockDoublePlant.EnumPlantType.GRASS && this.type != BlockDoublePlant.EnumPlantType.FERN ? 16777215 : Colorizer.getGrassColor(0.5D, 1.0D); - } - - public int colorMultiplier(IWorldAccess worldIn, BlockPos pos, int renderPass) - { - return this.type != BlockDoublePlant.EnumPlantType.GRASS && this.type != BlockDoublePlant.EnumPlantType.FERN ? 16777215 : Colorizer.getGrassColor(worldIn, pos); - } - public void placeAt(World worldIn, BlockPos lowerPos, int flags) { worldIn.setState(lowerPos, this.getState().withProperty(HALF, BlockDoublePlant.EnumBlockHalf.LOWER), flags); @@ -279,16 +266,13 @@ public class BlockDoublePlant extends BlockBush implements IGrowable .uv(0, 8, 16, 16).noCull() .add(9.6f, -1f, 1f, 9.6f, 15f, 15f).noShade().rotate(8, 8, 8, Axis.Z, 22.5f, true).w("sunflower_back") .uv(0, 0, 16, 16).noCull().e().uv(0, 0, 16, 16).noCull(); - else if(this.type == EnumPlantType.FERN || this.type == EnumPlantType.GRASS) - return provider.getModel(this.type.getName() + "_" + (state.getValue(HALF) == EnumBlockHalf.UPPER - ? "top" : "bottom")).crossTint(); else return provider.getModel(this.type.getName() + "_" + (state.getValue(HALF) == EnumBlockHalf.UPPER ? "top" : "bottom")).cross(); } - public Transform getTransform() { - return Transform.CROSS; + public GuiPosition getItemPosition() { + return GuiPosition.CROSS; } public State getItemState() { diff --git a/common/src/main/java/common/block/foliage/BlockFlower.java b/common/src/main/java/common/block/foliage/BlockFlower.java index bfa4deea..10a12c49 100755 --- a/common/src/main/java/common/block/foliage/BlockFlower.java +++ b/common/src/main/java/common/block/foliage/BlockFlower.java @@ -1,9 +1,10 @@ package common.block.foliage; +import common.block.Block; import common.init.Blocks; import common.model.Model; import common.model.ModelProvider; -import common.model.Transform; +import common.model.GuiPosition; import common.rng.Random; import common.util.BlockPos; import common.util.Identifyable; @@ -31,6 +32,11 @@ public class BlockFlower extends BlockBush public EnumFlowerType getType() { return this.type; } + + protected boolean canPlaceBlockOn(Block ground) + { + return super.canPlaceBlockOn(ground) || ((this.type == EnumFlowerType.BLUE_ORCHID || this.type == EnumFlowerType.BLACK_LOTUS) && ground == Blocks.swamp); + } public void tick(AWorldServer worldIn, BlockPos pos, State state, Random rand) { @@ -47,8 +53,8 @@ public class BlockFlower extends BlockBush return provider.getModel(this.type.getName()).cross(); } - public Transform getTransform() { - return Transform.CROSS_SMALL; + public GuiPosition getItemPosition() { + return GuiPosition.CROSS_SMALL; } public static enum EnumFlowerType implements Identifyable diff --git a/common/src/main/java/common/block/foliage/BlockGrass.java b/common/src/main/java/common/block/foliage/BlockGrass.java index e5ce50a0..c08174b5 100755 --- a/common/src/main/java/common/block/foliage/BlockGrass.java +++ b/common/src/main/java/common/block/foliage/BlockGrass.java @@ -1,9 +1,9 @@ package common.block.foliage; +import common.biome.Biome; import common.biome.IBiome; import common.block.Block; import common.block.Material; -import common.color.Colorizer; import common.init.Blocks; import common.item.CheatTab; import common.item.Item; @@ -32,40 +32,14 @@ public class BlockGrass extends Block implements IGrowable this.setTab(CheatTab.NATURE); } - /** - * Get the actual Block state of this Block at the given position. This applies properties not visible in the - * metadata, such as fence connections. - */ public State getState(State state, IWorldAccess worldIn, BlockPos pos) { Block block = worldIn.getState(pos.up()).getBlock(); return state.withProperty(SNOWY, Boolean.valueOf(block == Blocks.snow || block == Blocks.snow_layer)); } -// public int getBlockColor() -// { -// return ColorizerFoliage.getGrassColor(0.5D, 1.0D); -// } - - public boolean isItemColored() { - return true; - } - - public int getRenderColor(State state) - { - return Colorizer.getGrassColor(0.5D, 1.0D); -// return this.getBlockColor(); - } - - public int colorMultiplier(IWorldAccess worldIn, BlockPos pos, int renderPass) - { - return Colorizer.getGrassColor(worldIn, pos); - } - public void tick(AWorldServer worldIn, BlockPos pos, State state, Random rand) { -// if (!worldIn.client) -// { if (worldIn.getLightFromNeighbors(pos.up()) < 4 && worldIn.getState(pos.up()).getBlock().getLightOpacity() > 2) { if(Vars.grassDecay) @@ -93,20 +67,13 @@ public class BlockGrass extends Block implements IGrowable worldIn.setState(pos, worldIn.rand.chance(20) ? Blocks.coarse_dirt.getState() : Blocks.dirt.getState()); } -// } } - /** - * Get the Item that this Block should drop when harvested. - */ public Item getDrop(State state, Random rand, int fortune) { return Blocks.dirt.getDrop(Blocks.dirt.getState(), rand, fortune); } - /** - * Whether this IGrowable can grow - */ public boolean canGrow(World worldIn, BlockPos pos, State state, boolean isClient) { return true; @@ -122,22 +89,21 @@ public class BlockGrass extends Block implements IGrowable IBiome.getBiome(worldIn.getBiomeGenForCoords(pos)).growGrass(worldIn, pos, state, rand); } - public BlockLayer getRenderLayer() - { - return BlockLayer.CUTOUT_MIPPED; - } - protected Property[] getProperties() { return new Property[] {SNOWY}; } + public BlockLayer getRenderLayer() + { + return BlockLayer.CUTOUT_MIPPED; + } + public Model getModel(ModelProvider provider, String name, State state) { if(state.getValue(SNOWY)) - return provider.getModel("grass_side_snowed").add().nswe().d("dirt").u("grass_top"); + return provider.getModel("dirt").add().d().u("snow").nswe().add().nswe("soil_snowed"); else - return provider.getModel("dirt").add().d().u("grass_top").tint().nswe("grass_side") - .add().nswe("grass_side_overlay").tint(); + return provider.getModel("dirt").add().d().u("grass_top").nswe().add().nswe("grass_side"); } protected Property[] getUnsavedProperties() { diff --git a/common/src/main/java/common/block/foliage/BlockLeaves.java b/common/src/main/java/common/block/foliage/BlockLeaves.java index 511c6d06..54a377b5 100755 --- a/common/src/main/java/common/block/foliage/BlockLeaves.java +++ b/common/src/main/java/common/block/foliage/BlockLeaves.java @@ -2,11 +2,11 @@ package common.block.foliage; import java.util.List; +import common.biome.Biome; import common.block.Block; import common.block.Material; import common.block.SoundType; import common.collect.Lists; -import common.color.Colorizer; import common.entity.npc.EntityNPC; import common.entity.types.EntityLiving; import common.init.Blocks; @@ -277,23 +277,6 @@ public class BlockLeaves extends BlockLeavesBase dropItem(worldIn, pos, new ItemStack(ItemRegistry.byName(this.type.getItem()))); } } - - public boolean isItemColored() { - return true; - } - - public int getRenderColor(State state) - { - return state.getBlock() != this || !this.subType.isTinted() ? 16777215 : - ((this.type.getTintType() == null ? Colorizer.BASIC : this.type.getTintType()).getColor()); - } - - public int colorMultiplier(IWorldAccess worldIn, BlockPos pos, int renderPass) - { - State state = worldIn.getState(pos); - return state.getBlock() != this || !this.subType.isTinted() ? 16777215 : (this.type.getTintType() - == null ? Colorizer.getFoliageColor(worldIn, pos) : this.type.getTintType().getColor()); - } protected Property[] getProperties() { return new Property[] {DECAY, BUSH}; @@ -312,11 +295,6 @@ public class BlockLeaves extends BlockLeavesBase return this.getState().withProperty(DECAY, false).withProperty(BUSH, true); } - public Model getModel(ModelProvider provider, String name, State state) { - return this.subType.isTinted() ? provider.getModel(name).add().all().tint() : - provider.getModel(name).add().all(); - } - public Property[] getIgnoredProperties() { return new Property[] {DECAY, BUSH}; } diff --git a/common/src/main/java/common/block/foliage/BlockLilyPad.java b/common/src/main/java/common/block/foliage/BlockLilyPad.java index 523eb0a9..187efe63 100755 --- a/common/src/main/java/common/block/foliage/BlockLilyPad.java +++ b/common/src/main/java/common/block/foliage/BlockLilyPad.java @@ -17,7 +17,7 @@ import common.item.ItemStack; import common.model.Model; import common.model.ModelProvider; import common.model.ModelRotation; -import common.model.Transform; +import common.model.GuiPosition; import common.properties.Property; import common.util.BlockPos; import common.util.BoundingBox; @@ -50,25 +50,6 @@ public class BlockLilyPad extends BlockBush implements Rotatable { return new BoundingBox((double)pos.getX() + this.minX, (double)pos.getY() + this.minY, (double)pos.getZ() + this.minZ, (double)pos.getX() + this.maxX, (double)pos.getY() + this.maxY, (double)pos.getZ() + this.maxZ); } - -// public int getBlockColor() -// { -// return 7455580; -// } - - public boolean isItemColored() { - return true; - } - - public int getRenderColor(State state) - { - return 7455580; - } - - public int colorMultiplier(IWorldAccess worldIn, BlockPos pos, int renderPass) - { - return 2129968; - } protected boolean canPlaceBlockOn(Block ground) { @@ -102,13 +83,13 @@ public class BlockLilyPad extends BlockBush implements Rotatable public Model getModel(ModelProvider provider, String name, State state) { return provider.getModel("waterlily") .add(0, 0.25f, 0, 16, 0.25f, 16) - .d().uv(16, 16, 0, 0).tint().noCull() - .u().uv(16, 0, 0, 16).tint().noCull() + .d().uv(16, 16, 0, 0).noCull() + .u().uv(16, 0, 0, 16).noCull() .rotate(ModelRotation.getNorthRot(state.getValue(FACING))); } - public Transform getTransform() { - return Transform.SMALL_FLAT; + public GuiPosition getItemPosition() { + return GuiPosition.SMALL_FLAT; } public boolean prePlace(ItemStack itemStackIn, World worldIn, EntityNPC playerIn) diff --git a/common/src/main/java/common/block/foliage/BlockMushroom.java b/common/src/main/java/common/block/foliage/BlockMushroom.java index f1f7a36d..dce8c08c 100755 --- a/common/src/main/java/common/block/foliage/BlockMushroom.java +++ b/common/src/main/java/common/block/foliage/BlockMushroom.java @@ -5,7 +5,7 @@ import common.block.Block; import common.init.Blocks; import common.model.Model; import common.model.ModelProvider; -import common.model.Transform; +import common.model.GuiPosition; import common.rng.Random; import common.util.BlockPos; import common.vars.Vars; @@ -109,7 +109,7 @@ public class BlockMushroom extends BlockBush implements IGrowable return provider.getModel(name).cross(); } - public Transform getTransform() { - return Transform.CROSS_SMALL; + public GuiPosition getItemPosition() { + return GuiPosition.CROSS_SMALL; } } diff --git a/common/src/main/java/common/block/foliage/BlockMycelium.java b/common/src/main/java/common/block/foliage/BlockMycelium.java index 39f2dd1d..f0ccf10a 100755 --- a/common/src/main/java/common/block/foliage/BlockMycelium.java +++ b/common/src/main/java/common/block/foliage/BlockMycelium.java @@ -5,6 +5,7 @@ import common.block.Material; import common.init.Blocks; import common.item.CheatTab; import common.item.Item; +import common.model.BlockLayer; import common.model.Model; import common.model.ModelProvider; import common.properties.Property; @@ -92,11 +93,16 @@ public class BlockMycelium extends Block return new Property[] {SNOWY}; } + public BlockLayer getRenderLayer() + { + return BlockLayer.CUTOUT_MIPPED; + } + public Model getModel(ModelProvider provider, String name, State state) { if(state.getValue(SNOWY)) - return provider.getModel("grass_side_snowed").add().nswe().d("dirt").u("grass_top"); + return provider.getModel("dirt").add().d().u("snow").nswe().add().nswe("soil_snowed"); else - return provider.getModel("mycelium_side").add().nswe().d("dirt").u("mycelium_top"); + return provider.getModel("dirt").add().d().u("mycelium_top").nswe().add().nswe("mycelium_side"); } protected Property[] getUnsavedProperties() { diff --git a/common/src/main/java/common/block/foliage/BlockReed.java b/common/src/main/java/common/block/foliage/BlockReed.java index 49f31d09..91d1c6f1 100755 --- a/common/src/main/java/common/block/foliage/BlockReed.java +++ b/common/src/main/java/common/block/foliage/BlockReed.java @@ -8,7 +8,7 @@ import common.item.StackSize; import common.model.BlockLayer; import common.model.Model; import common.model.ModelProvider; -import common.model.Transform; +import common.model.GuiPosition; import common.properties.Property; import common.properties.PropertyInteger; import common.rng.Random; @@ -78,7 +78,7 @@ public class BlockReed extends Block { return true; } - else if (block != Blocks.grass && block != Blocks.dirt && block != Blocks.sand) + else if (block != Blocks.grass && block != Blocks.swamp && block != Blocks.dirt && block != Blocks.sand) { return false; } @@ -141,11 +141,6 @@ public class BlockReed extends Block return false; } - public int colorMultiplier(IWorldAccess worldIn, BlockPos pos, int renderPass) - { - return worldIn.getBiomeGenForCoords(pos).getGrassColorAtPos(pos); - } - public BlockLayer getRenderLayer() { return BlockLayer.CUTOUT; @@ -157,7 +152,7 @@ public class BlockReed extends Block } public Model getModel(ModelProvider provider, String name, State state) { - return provider.getModel("reeds").crossTint(); + return provider.getModel("reeds").cross(); } public Property[] getIgnoredProperties() { @@ -168,7 +163,7 @@ public class BlockReed extends Block return StackSize.L; } - public Transform getTransform() { - return Transform.CROSS; + public GuiPosition getItemPosition() { + return GuiPosition.CROSS; } } diff --git a/common/src/main/java/common/block/foliage/BlockSapling.java b/common/src/main/java/common/block/foliage/BlockSapling.java index a25552ad..7c1c1407 100755 --- a/common/src/main/java/common/block/foliage/BlockSapling.java +++ b/common/src/main/java/common/block/foliage/BlockSapling.java @@ -3,13 +3,15 @@ package common.block.foliage; import java.util.List; import common.biome.IBiome; +import common.block.Block; +import common.block.foliage.BlockTallGrass.EnumType; import common.collect.Lists; import common.init.Blocks; import common.init.WoodType; import common.item.CheatTab; import common.model.Model; import common.model.ModelProvider; -import common.model.Transform; +import common.model.GuiPosition; import common.properties.Property; import common.properties.PropertyInteger; import common.rng.Random; @@ -37,6 +39,11 @@ public class BlockSapling extends BlockBush implements IGrowable this.setFlammable(15, 100); SAPLINGS.add(this); } + + protected boolean canPlaceBlockOn(Block ground) + { + return super.canPlaceBlockOn(ground) || ground == Blocks.swamp; + } // /** // * Gets the localized name of this block. Used for the statistics page. @@ -124,8 +131,8 @@ public class BlockSapling extends BlockBush implements IGrowable return provider.getModel(name).cross(); } - public Transform getTransform() { - return Transform.CROSS; + public GuiPosition getItemPosition() { + return GuiPosition.CROSS; } public WoodType getWoodType() { diff --git a/common/src/main/java/common/block/foliage/BlockStem.java b/common/src/main/java/common/block/foliage/BlockStem.java index 6f7f7e5f..3c685751 100755 --- a/common/src/main/java/common/block/foliage/BlockStem.java +++ b/common/src/main/java/common/block/foliage/BlockStem.java @@ -87,36 +87,6 @@ public class BlockStem extends BlockBush implements IGrowable worldIn.setState(pos, state.withProperty(AGE, Integer.valueOf(Math.min(7, i))), 2); } - public int getRenderColor(State state) - { - if (state.getBlock() != this) - { - return super.getRenderColor(state); - } - else - { - int i = ((Integer)state.getValue(AGE)).intValue(); - int j = i * 32; - int k = 255 - i * 8; - int l = i * 4; - return j << 16 | k << 8 | l; - } - } - - public int colorMultiplier(IWorldAccess worldIn, BlockPos pos, int renderPass) - { - return this.getRenderColor(worldIn.getState(pos)); - } - - /** - * Sets the block's bounds for rendering it as an item - */ - public void setItemBounds() - { - float f = 0.125F; - this.setBlockBounds(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, 0.25F, 0.5F + f); - } - public void setBlockBounds(IWorldAccess worldIn, BlockPos pos) { this.maxY = (double)((float)(((Integer)worldIn.getState(pos).getValue(AGE)).intValue() * 2 + 2) / 16.0F); @@ -174,68 +144,68 @@ public class BlockStem extends BlockBush implements IGrowable case 0: return provider.getModel(stem) .add(0, -1, 8, 16, 1, 8).rotate(8, 8, 8, Facing.Axis.Y, 45, true) - .n().uv(0, 0, 16, 2).tint().noCull() - .s().uv(16, 0, 0, 2).tint().noCull() + .n().uv(0, 0, 16, 2).noCull() + .s().uv(16, 0, 0, 2).noCull() .add(8, -1, 0, 8, 1, 16).rotate(8, 8, 8, Facing.Axis.Y, 45, true) - .w().uv(0, 0, 16, 2).tint().noCull() - .e().uv(16, 0, 0, 2).tint().noCull(); + .w().uv(0, 0, 16, 2).noCull() + .e().uv(16, 0, 0, 2).noCull(); case 1: return provider.getModel(stem) .add(0, -1, 8, 16, 3, 8).rotate(8, 8, 8, Facing.Axis.Y, 45, true) - .n().uv(0, 0, 16, 4).tint().noCull() - .s().uv(16, 0, 0, 4).tint().noCull() + .n().uv(0, 0, 16, 4).noCull() + .s().uv(16, 0, 0, 4).noCull() .add(8, -1, 0, 8, 3, 16).rotate(8, 8, 8, Facing.Axis.Y, 45, true) - .w().uv(0, 0, 16, 4).tint().noCull() - .e().uv(16, 0, 0, 4).tint().noCull(); + .w().uv(0, 0, 16, 4).noCull() + .e().uv(16, 0, 0, 4).noCull(); case 2: return provider.getModel(stem) .add(0, -1, 8, 16, 5, 8).rotate(8, 8, 8, Facing.Axis.Y, 45, true) - .n().uv(0, 0, 16, 6).tint().noCull() - .s().uv(16, 0, 0, 6).tint().noCull() + .n().uv(0, 0, 16, 6).noCull() + .s().uv(16, 0, 0, 6).noCull() .add(8, -1, 0, 8, 5, 16).rotate(8, 8, 8, Facing.Axis.Y, 45, true) - .w().uv(0, 0, 16, 6).tint().noCull() - .e().uv(16, 0, 0, 6).tint().noCull(); + .w().uv(0, 0, 16, 6).noCull() + .e().uv(16, 0, 0, 6).noCull(); case 3: return provider.getModel(stem) .add(0, -1, 8, 16, 7, 8).rotate(8, 8, 8, Facing.Axis.Y, 45, true) - .n().uv(0, 0, 16, 8).tint().noCull() - .s().uv(16, 0, 0, 8).tint().noCull() + .n().uv(0, 0, 16, 8).noCull() + .s().uv(16, 0, 0, 8).noCull() .add(8, -1, 0, 8, 7, 16).rotate(8, 8, 8, Facing.Axis.Y, 45, true) - .w().uv(0, 0, 16, 8).tint().noCull() - .e().uv(16, 0, 0, 8).tint().noCull(); + .w().uv(0, 0, 16, 8).noCull() + .e().uv(16, 0, 0, 8).noCull(); case 4: return provider.getModel(stem) .add(0, -1, 8, 16, 9, 8).rotate(8, 8, 8, Facing.Axis.Y, 45, true) - .n().uv(0, 0, 16, 10).tint().noCull() - .s().uv(16, 0, 0, 10).tint().noCull() + .n().uv(0, 0, 16, 10).noCull() + .s().uv(16, 0, 0, 10).noCull() .add(8, -1, 0, 8, 9, 16).rotate(8, 8, 8, Facing.Axis.Y, 45, true) - .w().uv(0, 0, 16, 10).tint().noCull() - .e().uv(16, 0, 0, 10).tint().noCull(); + .w().uv(0, 0, 16, 10).noCull() + .e().uv(16, 0, 0, 10).noCull(); case 5: return provider.getModel(stem) .add(0, -1, 8, 16, 11, 8).rotate(8, 8, 8, Facing.Axis.Y, 45, true) - .n().uv(0, 0, 16, 12).tint().noCull() - .s().uv(16, 0, 0, 12).tint().noCull() + .n().uv(0, 0, 16, 12).noCull() + .s().uv(16, 0, 0, 12).noCull() .add(8, -1, 0, 8, 11, 16).rotate(8, 8, 8, Facing.Axis.Y, 45, true) - .w().uv(0, 0, 16, 12).tint().noCull() - .e().uv(16, 0, 0, 12).tint().noCull(); + .w().uv(0, 0, 16, 12).noCull() + .e().uv(16, 0, 0, 12).noCull(); case 6: return provider.getModel(stem) .add(0, -1, 8, 16, 13, 8).rotate(8, 8, 8, Facing.Axis.Y, 45, true) - .n().uv(0, 0, 16, 14).tint().noCull() - .s().uv(16, 0, 0, 14).tint().noCull() + .n().uv(0, 0, 16, 14).noCull() + .s().uv(16, 0, 0, 14).noCull() .add(8, -1, 0, 8, 13, 16).rotate(8, 8, 8, Facing.Axis.Y, 45, true) - .w().uv(0, 0, 16, 14).tint().noCull() - .e().uv(16, 0, 0, 14).tint().noCull(); + .w().uv(0, 0, 16, 14).noCull() + .e().uv(16, 0, 0, 14).noCull(); case 7: default: return provider.getModel(stem) .add(0, -1, 8, 16, 15, 8).rotate(8, 8, 8, Facing.Axis.Y, 45, true) - .n().uv(0, 0, 16, 16).tint().noCull() - .s().uv(16, 0, 0, 16).tint().noCull() + .n().uv(0, 0, 16, 16).noCull() + .s().uv(16, 0, 0, 16).noCull() .add(8, -1, 0, 8, 15, 16).rotate(8, 8, 8, Facing.Axis.Y, 45, true) - .w().uv(0, 0, 16, 16).tint().noCull() - .e().uv(16, 0, 0, 16).tint().noCull(); + .w().uv(0, 0, 16, 16).noCull() + .e().uv(16, 0, 0, 16).noCull(); } } diff --git a/common/src/main/java/common/block/foliage/BlockSwamp.java b/common/src/main/java/common/block/foliage/BlockSwamp.java new file mode 100644 index 00000000..93a626b2 --- /dev/null +++ b/common/src/main/java/common/block/foliage/BlockSwamp.java @@ -0,0 +1,93 @@ +package common.block.foliage; + +import common.block.Block; +import common.block.Material; +import common.entity.Entity; +import common.init.Blocks; +import common.item.CheatTab; +import common.item.Item; +import common.model.BlockLayer; +import common.model.Model; +import common.model.ModelProvider; +import common.properties.Property; +import common.properties.PropertyBool; +import common.rng.Random; +import common.util.BlockPos; +import common.util.BoundingBox; +import common.vars.Vars; +import common.world.AWorldServer; +import common.world.IWorldAccess; +import common.world.State; +import common.world.World; + +public class BlockSwamp extends Block +{ + public static final PropertyBool SNOWY = PropertyBool.create("snowy"); + + public BlockSwamp() + { + super(Material.LOOSE); + this.setDefaultState(this.getBaseState().withProperty(SNOWY, Boolean.valueOf(false))); + this.setTicked(); + this.setTab(CheatTab.NATURE); + } + + public State getState(State state, IWorldAccess worldIn, BlockPos pos) + { + Block block = worldIn.getState(pos.up()).getBlock(); + return state.withProperty(SNOWY, Boolean.valueOf(block == Blocks.snow || block == Blocks.snow_layer)); + } + + public BoundingBox getCollisionBox(World worldIn, BlockPos pos, State state) + { + float f = 0.375F; + return new BoundingBox((double)pos.getX(), (double)pos.getY(), (double)pos.getZ(), (double)(pos.getX() + 1), (double)((float)(pos.getY() + 1) - f), (double)(pos.getZ() + 1)); + } + + public void onCollideUpdate(World worldIn, BlockPos pos, State state, Entity entityIn) + { + entityIn.motionX *= 0.6D; + entityIn.motionZ *= 0.6D; + } + + public BlockLayer getRenderLayer() + { + return BlockLayer.CUTOUT_MIPPED; + } + + public Model getModel(ModelProvider provider, String name, State state) { + if(state.getValue(SNOWY)) + return provider.getModel("dirt").add().d().u("snow").nswe().add().nswe("soil_snowed"); + else + return provider.getModel("dirt").add().d().u("swamp_top").nswe().add().nswe("swamp_side"); + } + + protected Property[] getProperties() + { + return new Property[] {SNOWY}; + } + + protected Property[] getUnsavedProperties() { + return new Property[] {SNOWY}; + } + + public Item getDrop(State state, Random rand, int fortune) + { + return Blocks.dirt.getDrop(Blocks.dirt.getState(), rand, fortune); + } + + public void tick(AWorldServer worldIn, BlockPos pos, State state, Random rand) + { + if (worldIn.getLightFromNeighbors(pos.up()) < 4 && worldIn.getState(pos.up()).getBlock().getLightOpacity() > 2) + { + if(Vars.swampDecay) + worldIn.setState(pos, Blocks.dirt.getState()); + } + else if(Vars.swampDry) { + float temp = worldIn.getTemperatureC(pos); + if(temp >= 38.0f) + worldIn.setState(pos, temp >= 50.0f ? (worldIn.rand.chance(20) ? Blocks.coarse_dirt.getState() : + Blocks.dirt.getState()) : Blocks.grass.getState()); + } + } +} diff --git a/common/src/main/java/common/block/foliage/BlockTallGrass.java b/common/src/main/java/common/block/foliage/BlockTallGrass.java index d7d7844b..e2d1b422 100755 --- a/common/src/main/java/common/block/foliage/BlockTallGrass.java +++ b/common/src/main/java/common/block/foliage/BlockTallGrass.java @@ -1,7 +1,8 @@ package common.block.foliage; +import common.biome.Biome; +import common.block.Block; import common.block.Material; -import common.color.Colorizer; import common.entity.npc.EntityNPC; import common.init.Blocks; import common.init.Items; @@ -10,7 +11,7 @@ import common.item.ItemStack; import common.item.tool.ItemShears; import common.model.Model; import common.model.ModelProvider; -import common.model.Transform; +import common.model.GuiPosition; import common.rng.Random; import common.tileentity.TileEntity; import common.util.BlockPos; @@ -55,6 +56,11 @@ public class BlockTallGrass extends BlockBush implements IGrowable } super.tick(worldIn, pos, state, rand); } + + protected boolean canPlaceBlockOn(Block ground) + { + return super.canPlaceBlockOn(ground) || (this.type == EnumType.SWAMP_GRASS && ground == Blocks.swamp); + } public boolean canBlockStay(World worldIn, BlockPos pos, State state) { @@ -68,27 +74,6 @@ public class BlockTallGrass extends BlockBush implements IGrowable { return true; } - - public boolean isItemColored() { - return true; - } - - public int getRenderColor(State state) - { - if (state.getBlock() != this) - { - return super.getRenderColor(state); - } - else - { - return this.type == EnumType.DEAD_BUSH ? 16777215 : Colorizer.getGrassColor(0.5D, 1.0D); - } - } - - public int colorMultiplier(IWorldAccess worldIn, BlockPos pos, int renderPass) - { - return worldIn.getBiomeGenForCoords(pos).getGrassColorAtPos(pos); - } /** * Get the Item that this Block should drop when harvested. @@ -147,21 +132,19 @@ public class BlockTallGrass extends BlockBush implements IGrowable } public Model getModel(ModelProvider provider, String name, State state) { - if(this.type != EnumType.DEAD_BUSH) - return provider.getModel(this.type.getName()).crossTint(); - else - return provider.getModel(this.type.getName()).cross(); + return provider.getModel(this.type.getName()).cross(); } - public Transform getTransform() { - return Transform.CROSS; + public GuiPosition getItemPosition() { + return GuiPosition.CROSS; } public static enum EnumType implements Identifyable { DEAD_BUSH("dead_bush", "Busch"), GRASS("tallgrass", "Gras"), - FERN("fern", "Farn"); + FERN("fern", "Farn"), + SWAMP_GRASS("swamp_grass", "Sumpfgras"); private final String name; private final String display; diff --git a/common/src/main/java/common/block/foliage/BlockTianSoil.java b/common/src/main/java/common/block/foliage/BlockTianSoil.java index cbbf08bc..b7db746d 100755 --- a/common/src/main/java/common/block/foliage/BlockTianSoil.java +++ b/common/src/main/java/common/block/foliage/BlockTianSoil.java @@ -5,6 +5,7 @@ import common.block.Material; import common.init.Blocks; import common.item.CheatTab; import common.item.Item; +import common.model.BlockLayer; import common.model.Model; import common.model.ModelProvider; import common.properties.Property; @@ -41,11 +42,16 @@ public class BlockTianSoil extends Block return new Property[] {SNOWY}; } + public BlockLayer getRenderLayer() + { + return BlockLayer.CUTOUT_MIPPED; + } + public Model getModel(ModelProvider provider, String name, State state) { if(state.getValue(SNOWY)) - return provider.getModel("tian_soil_side_snowed").add().nswe().d("tian").u("grass_top"); + return provider.getModel("tian").add().d().u("snow").nswe().add().nswe("tian_soil_snowed"); else - return provider.getModel("tian_soil_side").add().nswe().d("tian").u("tian_soil_top"); + return provider.getModel("tian").add().d().u("tian_soil_top").nswe().add().nswe("tian_soil_side"); } protected Property[] getUnsavedProperties() { diff --git a/common/src/main/java/common/block/foliage/BlockVine.java b/common/src/main/java/common/block/foliage/BlockVine.java index d0e5cb89..1d8a6e90 100755 --- a/common/src/main/java/common/block/foliage/BlockVine.java +++ b/common/src/main/java/common/block/foliage/BlockVine.java @@ -1,8 +1,8 @@ package common.block.foliage; +import common.biome.Biome; import common.block.Block; import common.block.Material; -import common.color.Colorizer; import common.entity.npc.EntityNPC; import common.entity.types.EntityLiving; import common.init.Blocks; @@ -15,7 +15,7 @@ import common.model.BlockLayer; import common.model.Model; import common.model.ModelProvider; import common.model.ModelRotation; -import common.model.Transform; +import common.model.GuiPosition; import common.properties.Property; import common.properties.PropertyBool; import common.rng.Random; @@ -37,10 +37,13 @@ public class BlockVine extends Block public static final PropertyBool SOUTH = PropertyBool.create("south"); public static final PropertyBool WEST = PropertyBool.create("west"); public static final PropertyBool[] ALL_FACES = new PropertyBool[] {UP, NORTH, SOUTH, WEST, EAST}; + + private final boolean swamp; - public BlockVine() + public BlockVine(boolean swamp) { super(Material.BUSH); + this.swamp = swamp; this.setDefaultState(this.getBaseState().withProperty(UP, Boolean.valueOf(false)).withProperty(NORTH, Boolean.valueOf(false)).withProperty(EAST, Boolean.valueOf(false)).withProperty(SOUTH, Boolean.valueOf(false)).withProperty(WEST, Boolean.valueOf(false))); this.setTicked(); this.setTab(CheatTab.PLANTS); @@ -56,14 +59,6 @@ public class BlockVine extends Block return state.withProperty(UP, Boolean.valueOf(worldIn.getState(pos.up()).getBlock().isBlockingCube())); } - /** - * Sets the block's bounds for rendering it as an item - */ - public void setItemBounds() - { - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - } - /** * Used to determine ambient occlusion and culling when rebuilding chunks for render */ @@ -218,25 +213,6 @@ public class BlockVine extends Block } } -// public int getBlockColor() -// { -// return ColorizerFoliage.getFoliageColorBasic(); -// } - - public boolean isItemColored() { - return true; - } - - public int getRenderColor(State state) - { - return Colorizer.BASIC.getColor(); - } - - public int colorMultiplier(IWorldAccess worldIn, BlockPos pos, int renderPass) - { - return worldIn.getBiomeGenForCoords(pos).getFoliageColorAtPos(pos); - } - /** * Called when a neighboring block changes. */ @@ -432,7 +408,7 @@ public class BlockVine extends Block if (!worldIn.client && player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() instanceof ItemShears) { // player.triggerAchievement(StatRegistry.mineBlockStatArray[BlockRegistry.getIdFromBlock(this)]); - dropItem(worldIn, pos, new ItemStack(Items.vine)); + dropItem(worldIn, pos, new ItemStack(this.getItem())); } else { @@ -490,11 +466,11 @@ public class BlockVine extends Block } public Model getModel(ModelProvider provider, String name, State state) { - Model model = provider.getModel("vine"); + Model model = provider.getModel(name); if(state.getValue(UP)) model.add(0, 15.2f, 0, 16, 15.2f, 16).noShade() - .d().uv(0, 0, 16, 16).tint().noCull() - .u().uv(0, 0, 16, 16).tint().noCull(); + .d().uv(0, 0, 16, 16).noCull() + .u().uv(0, 0, 16, 16).noCull(); boolean n = state.getValue(NORTH); boolean s = state.getValue(SOUTH); boolean w = state.getValue(WEST); @@ -506,53 +482,53 @@ public class BlockVine extends Block } if(sides == 4) { return model.add(0.8f, 0, 0, 0.8f, 16, 16).noShade() - .w().uv(0, 0, 16, 16).tint().noCull() - .e().uv(0, 0, 16, 16).tint().noCull() + .w().uv(0, 0, 16, 16).noCull() + .e().uv(0, 0, 16, 16).noCull() .add(15.2f, 0, 0, 15.2f, 16, 16).noShade() - .w().uv(0, 0, 16, 16).tint().noCull() - .e().uv(0, 0, 16, 16).tint().noCull() + .w().uv(0, 0, 16, 16).noCull() + .e().uv(0, 0, 16, 16).noCull() .add(0, 0, 15.2f, 16, 16, 15.2f).noShade() - .n().uv(0, 0, 16, 16).tint().noCull() - .s().uv(0, 0, 16, 16).tint().noCull() + .n().uv(0, 0, 16, 16).noCull() + .s().uv(0, 0, 16, 16).noCull() .add(0, 0, 0.8f, 16, 16, 0.8f).noShade() - .n().uv(0, 0, 16, 16).tint().noCull() - .s().uv(0, 0, 16, 16).tint().noCull(); + .n().uv(0, 0, 16, 16).noCull() + .s().uv(0, 0, 16, 16).noCull(); } else if(sides == 1) { return model.add(0, 0, 15.2f, 16, 16, 15.2f).noShade() - .n().uv(0, 0, 16, 16).tint().noCull() - .s().uv(0, 0, 16, 16).tint().noCull() + .n().uv(0, 0, 16, 16).noCull() + .s().uv(0, 0, 16, 16).noCull() .rotate(s ? ModelRotation.X0_Y0 : (n ? ModelRotation.X0_Y180 : (e ? ModelRotation.X0_Y270 : ModelRotation.X0_Y90))); } else if(sides == 2 && ((e != w) || (n != s))) { return model.add(0, 0, 0.8f, 16, 16, 0.8f).noShade() - .n().uv(0, 0, 16, 16).tint().noCull() - .s().uv(0, 0, 16, 16).tint().noCull() + .n().uv(0, 0, 16, 16).noCull() + .s().uv(0, 0, 16, 16).noCull() .add(15.2f, 0, 0, 15.2f, 16, 16).noShade() - .w().uv(0, 0, 16, 16).tint().noCull() - .e().uv(0, 0, 16, 16).tint().noCull() + .w().uv(0, 0, 16, 16).noCull() + .e().uv(0, 0, 16, 16).noCull() .rotate(n && e ? ModelRotation.X0_Y0 : (s && w ? ModelRotation.X0_Y180 : (n && w ? ModelRotation.X0_Y270 : ModelRotation.X0_Y90))); } else if(sides == 2) { return model.add(15.2f, 0, 0, 15.2f, 16, 16).noShade() - .w().uv(0, 0, 16, 16).tint().noCull() - .e().uv(0, 0, 16, 16).tint().noCull() + .w().uv(0, 0, 16, 16).noCull() + .e().uv(0, 0, 16, 16).noCull() .add(0.8f, 0, 0, 0.8f, 16, 16).noShade() - .w().uv(0, 0, 16, 16).tint().noCull() - .e().uv(0, 0, 16, 16).tint().noCull() + .w().uv(0, 0, 16, 16).noCull() + .e().uv(0, 0, 16, 16).noCull() .rotate(e ? ModelRotation.X0_Y0 : ModelRotation.X0_Y90); } else if(sides == 3) { return model.add(15.2f, 0, 0, 15.2f, 16, 16).noShade() - .w().uv(0, 0, 16, 16).tint().noCull() - .e().uv(0, 0, 16, 16).tint().noCull() + .w().uv(0, 0, 16, 16).noCull() + .e().uv(0, 0, 16, 16).noCull() .add(0, 0, 15.2f, 16, 16, 15.2f).noShade() - .n().uv(0, 0, 16, 16).tint().noCull() - .s().uv(0, 0, 16, 16).tint().noCull() + .n().uv(0, 0, 16, 16).noCull() + .s().uv(0, 0, 16, 16).noCull() .add(0, 0, 0.8f, 16, 16, 0.8f).noShade() - .n().uv(0, 0, 16, 16).tint().noCull() - .s().uv(0, 0, 16, 16).tint().noCull() + .n().uv(0, 0, 16, 16).noCull() + .s().uv(0, 0, 16, 16).noCull() .rotate(!w ? ModelRotation.X0_Y0 : (!e ? ModelRotation.X0_Y180 : (!s ? ModelRotation.X0_Y270 : ModelRotation.X0_Y90))); } else { @@ -560,8 +536,8 @@ public class BlockVine extends Block } } - public Transform getTransform() { - return Transform.PANE_SIDE; + public GuiPosition getItemPosition() { + return GuiPosition.PANE_SIDE; } protected Property[] getUnsavedProperties() { diff --git a/common/src/main/java/common/block/foliage/LeavesType.java b/common/src/main/java/common/block/foliage/LeavesType.java index 225087c9..7e3c4a69 100755 --- a/common/src/main/java/common/block/foliage/LeavesType.java +++ b/common/src/main/java/common/block/foliage/LeavesType.java @@ -3,19 +3,17 @@ package common.block.foliage; import common.util.Identifyable; public enum LeavesType implements Identifyable { - SPRING("spring", true, "Frühling"), - SUMMER("summer", true, "Sommer"), - AUTUMN("autumn", false, "Herbst"), - WINTER("winter", false, "Winter"), - SNOWY("snowy", false, "Beschneit"); + SPRING("spring", "Frühling"), + SUMMER("summer", "Sommer"), + AUTUMN("autumn", "Herbst"), + WINTER("winter", "Winter"), + SNOWY("snowy", "Beschneit"); private final String name; - private final boolean tint; private final String display; - private LeavesType(String name, boolean tint, String display) { + private LeavesType(String name, String display) { this.name = name; - this.tint = tint; this.display = display; } @@ -26,10 +24,6 @@ public enum LeavesType implements Identifyable { public String getDisplayName() { return this.display; } - - public boolean isTinted() { - return this.tint; - } public static LeavesType getByName(String name) { for(LeavesType type : values()) { diff --git a/common/src/main/java/common/block/liquid/BlockDynamicLiquid.java b/common/src/main/java/common/block/liquid/BlockDynamicLiquid.java index 7bf0f756..bd16392e 100755 --- a/common/src/main/java/common/block/liquid/BlockDynamicLiquid.java +++ b/common/src/main/java/common/block/liquid/BlockDynamicLiquid.java @@ -317,10 +317,4 @@ public class BlockDynamicLiquid extends BlockLiquid public void getAnimatedTextures(Map map) { map.put(BlockRegistry.getName(this.staticBlock) + "_flow", this.animation); } - - public String getFallbackTexture() { - if(this.cachedTexture == null) - this.cachedTexture = BlockRegistry.getName(this.staticBlock) + "_still"; - return this.cachedTexture; - } } diff --git a/common/src/main/java/common/block/liquid/BlockLiquid.java b/common/src/main/java/common/block/liquid/BlockLiquid.java index b03a5f83..ec16760f 100755 --- a/common/src/main/java/common/block/liquid/BlockLiquid.java +++ b/common/src/main/java/common/block/liquid/BlockLiquid.java @@ -5,7 +5,6 @@ import java.util.List; import common.block.Block; import common.block.Material; import common.collect.Lists; -import common.color.Colorizer; import common.entity.Entity; import common.init.Blocks; import common.init.SoundEvent; @@ -38,8 +37,6 @@ public abstract class BlockLiquid extends Block protected final int flowRate; protected final Object animation; - protected String cachedTexture; - public BlockLiquid(Material materialIn, boolean tick, boolean opaque, int rate, Object animation) { super(materialIn); @@ -61,11 +58,6 @@ public abstract class BlockLiquid extends Block return !this.material.isHotLiquid(); } - public int colorMultiplier(IWorldAccess worldIn, BlockPos pos, int renderPass) - { - return this.material == Material.WATER ? Colorizer.getWaterColor(worldIn, pos) : 16777215; - } - /** * Returns the percentage of the liquid block that is air, based on the given flow decay of the liquid */ @@ -116,7 +108,8 @@ public abstract class BlockLiquid extends Block public boolean canRender(IWorldAccess worldIn, BlockPos pos, Facing side) { - return worldIn.getState(pos).getBlock().getMaterial() == this.material ? false : (side == Facing.UP ? true : super.canRender(worldIn, pos, side)); + Material material = worldIn.getState(pos).getBlock().getMaterial(); + return material.isLiquid() && (material.isColdLiquid() == this.material.isColdLiquid()) ? false : (side == Facing.UP ? true : super.canRender(worldIn, pos, side)); } public boolean shouldRenderSides(IBlockAccess blockAccess, BlockPos pos) @@ -129,7 +122,7 @@ public abstract class BlockLiquid extends Block Block block = iblockstate.getBlock(); Material material = block.getMaterial(); - if (material != this.material && !block.isFullBlock()) + if ((!material.isLiquid() || (material.isColdLiquid() != this.material.isColdLiquid())) && !block.isFullBlock()) { return true; } diff --git a/common/src/main/java/common/block/liquid/BlockStaticLiquid.java b/common/src/main/java/common/block/liquid/BlockStaticLiquid.java index d59ecc14..35a5c3b7 100755 --- a/common/src/main/java/common/block/liquid/BlockStaticLiquid.java +++ b/common/src/main/java/common/block/liquid/BlockStaticLiquid.java @@ -116,10 +116,4 @@ public class BlockStaticLiquid extends BlockLiquid public void getAnimatedTextures(Map map) { map.put(BlockRegistry.getName(this) + "_still", this.animation); } - - public String getFallbackTexture() { - if(this.cachedTexture == null) - this.cachedTexture = BlockRegistry.getName(this) + "_still"; - return this.cachedTexture; - } } diff --git a/common/src/main/java/common/block/natural/BlockBlackFire.java b/common/src/main/java/common/block/natural/BlockBlackFire.java new file mode 100644 index 00000000..3639ad18 --- /dev/null +++ b/common/src/main/java/common/block/natural/BlockBlackFire.java @@ -0,0 +1,12 @@ +package common.block.natural; + +import java.util.Map; + +import common.model.TextureAnimation; + +public class BlockBlackFire extends BlockFire { + public void getAnimatedTextures(Map map) { + map.put("black_fire_layer_0", TextureAnimation.BLACK_FLAME_BASE); + map.put("black_fire_layer_1", TextureAnimation.BLACK_FLAME_OFFSET); + } +} diff --git a/common/src/main/java/common/block/natural/BlockBlackenedDirt.java b/common/src/main/java/common/block/natural/BlockBlackenedDirt.java index 26f74bf7..4ac6d947 100644 --- a/common/src/main/java/common/block/natural/BlockBlackenedDirt.java +++ b/common/src/main/java/common/block/natural/BlockBlackenedDirt.java @@ -34,7 +34,7 @@ public class BlockBlackenedDirt extends Block { worldIn.setState(blockpos, Blocks.blackened_dirt.getState()); } - else if (iblockstate.getBlock() == Blocks.grass && worldIn.getLightFromNeighbors(blockpos.up()) >= 2 && block.getLightOpacity() <= 6) + else if ((iblockstate.getBlock() == Blocks.grass || iblockstate.getBlock() == Blocks.swamp) && worldIn.getLightFromNeighbors(blockpos.up()) >= 2 && block.getLightOpacity() <= 6) { worldIn.setState(blockpos, Blocks.blackened_soil.getState()); worldIn.setBiome(blockpos, Biome.BLACKENED); diff --git a/common/src/main/java/common/block/natural/BlockFire.java b/common/src/main/java/common/block/natural/BlockFire.java index 974cc08f..ab987d56 100755 --- a/common/src/main/java/common/block/natural/BlockFire.java +++ b/common/src/main/java/common/block/natural/BlockFire.java @@ -4,6 +4,7 @@ import java.util.Map; import common.block.Block; import common.block.Material; +import common.block.artificial.BlockPortal; import common.init.Blocks; import common.init.SoundEvent; import common.item.Item; @@ -20,6 +21,7 @@ import common.util.BlockPos; import common.util.BoundingBox; import common.util.Facing; import common.util.ParticleType; +import common.util.PortalType; import common.vars.Vars; import common.world.IBlockAccess; import common.world.IWorldAccess; @@ -161,10 +163,10 @@ public class BlockFire extends Block // } } - boolean flag1 = worldIn.isBlockinHighHumidity(pos); + boolean cold = worldIn.getTemperatureC(pos) < 10.0f; int j = 0; - if (flag1) + if (cold) { j = -50; } @@ -201,7 +203,7 @@ public class BlockFire extends Block { int l1 = (k1 + 40 + /* worldIn.getDifficulty().getId() */ 3 * 7) / (i + 30); - if (flag1) + if (cold) { l1 /= 2; } @@ -331,7 +333,7 @@ public class BlockFire extends Block public void onAdded(AWorldServer worldIn, BlockPos pos, State state) { if ( // (worldIn.dimension.getDimensionId() < -1 || worldIn.dimension.getDimensionId() > 0) || - !Blocks.portal.tryIgnitePortal(worldIn, pos, worldIn.rand.zrange(8))) + !BlockPortal.getByType(PortalType.values()[worldIn.rand.zrange(PortalType.values().length - 2)]).tryIgnitePortal(worldIn, pos)) { if (!worldIn.isBlockSolid(pos.down()) && !this.canNeighborCatchFire(worldIn, pos)) { @@ -441,482 +443,482 @@ public class BlockFire extends Block private static Model fire_nsu2_flip(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .s().uv(16, 0, 0, 16).noCull().tint() + .s().uv(16, 0, 0, 16).noCull() .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .n().uv(16, 0, 0, 16).noCull().tint() + .n().uv(16, 0, 0, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .s().uv(16, 0, 0, 16).noCull().tint() + .s().uv(16, 0, 0, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .n().uv(16, 0, 0, 16).noCull().tint() + .n().uv(16, 0, 0, 16).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(8, 16, 16, Facing.Axis.X, -22.5f, true) - .d().uv(0, 0, 16, 16).rot(180).noCull().tint() + .d().uv(0, 0, 16, 16).rot(180).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(8, 16, 0, Facing.Axis.X, 22.5f, true) - .d().uv(0, 0, 16, 16).noCull().tint(); + .d().uv(0, 0, 16, 16).noCull(); } private static Model fire_nu1(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .s().uv(0, 0, 16, 16).noCull().tint() + .s().uv(0, 0, 16, 16).noCull() .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .n().uv(0, 0, 16, 16).noCull().tint() + .n().uv(0, 0, 16, 16).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(16, 16, 8, Facing.Axis.Z, 22.5f, true) - .d().uv(0, 0, 16, 16).rot(270).noCull().tint() + .d().uv(0, 0, 16, 16).rot(270).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(0, 16, 8, Facing.Axis.Z, -22.5f, true) - .d().uv(0, 0, 16, 16).rot(90).noCull().tint(); + .d().uv(0, 0, 16, 16).rot(90).noCull(); } private static Model fire_nseu2_flip(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .s().uv(16, 0, 0, 16).noCull().tint() + .s().uv(16, 0, 0, 16).noCull() .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .n().uv(16, 0, 0, 16).noCull().tint() + .n().uv(16, 0, 0, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .s().uv(16, 0, 0, 16).noCull().tint() + .s().uv(16, 0, 0, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .n().uv(16, 0, 0, 16).noCull().tint() + .n().uv(16, 0, 0, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .e().uv(16, 0, 0, 16).noCull().tint() + .e().uv(16, 0, 0, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .w().uv(16, 0, 0, 16).noCull().tint() + .w().uv(16, 0, 0, 16).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(8, 16, 16, Facing.Axis.X, -22.5f, true) - .d().uv(0, 0, 16, 16).rot(180).noCull().tint() + .d().uv(0, 0, 16, 16).rot(180).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(8, 16, 0, Facing.Axis.X, 22.5f, true) - .d().uv(0, 0, 16, 16).noCull().tint(); + .d().uv(0, 0, 16, 16).noCull(); } private static Model fire_neu1_flip(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .s().uv(16, 0, 0, 16).noCull().tint() + .s().uv(16, 0, 0, 16).noCull() .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .n().uv(16, 0, 0, 16).noCull().tint() + .n().uv(16, 0, 0, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .e().uv(16, 0, 0, 16).noCull().tint() + .e().uv(16, 0, 0, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .w().uv(16, 0, 0, 16).noCull().tint() + .w().uv(16, 0, 0, 16).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(16, 16, 8, Facing.Axis.Z, 22.5f, true) - .d().uv(0, 0, 16, 16).rot(270).noCull().tint() + .d().uv(0, 0, 16, 16).rot(270).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(0, 16, 8, Facing.Axis.Z, -22.5f, true) - .d().uv(0, 0, 16, 16).rot(90).noCull().tint(); + .d().uv(0, 0, 16, 16).rot(90).noCull(); } private static Model fire_nsu2(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .s().uv(0, 0, 16, 16).noCull().tint() + .s().uv(0, 0, 16, 16).noCull() .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .n().uv(0, 0, 16, 16).noCull().tint() + .n().uv(0, 0, 16, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .s().uv(0, 0, 16, 16).noCull().tint() + .s().uv(0, 0, 16, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .n().uv(0, 0, 16, 16).noCull().tint() + .n().uv(0, 0, 16, 16).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(8, 16, 16, Facing.Axis.X, -22.5f, true) - .d().uv(0, 0, 16, 16).rot(180).noCull().tint() + .d().uv(0, 0, 16, 16).rot(180).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(8, 16, 0, Facing.Axis.X, 22.5f, true) - .d().uv(0, 0, 16, 16).noCull().tint(); + .d().uv(0, 0, 16, 16).noCull(); } private static Model fire_nu2_flip(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .s().uv(16, 0, 0, 16).noCull().tint() + .s().uv(16, 0, 0, 16).noCull() .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .n().uv(16, 0, 0, 16).noCull().tint() + .n().uv(16, 0, 0, 16).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(8, 16, 16, Facing.Axis.X, -22.5f, true) - .d().uv(0, 0, 16, 16).rot(180).noCull().tint() + .d().uv(0, 0, 16, 16).rot(180).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(8, 16, 0, Facing.Axis.X, 22.5f, true) - .d().uv(0, 0, 16, 16).noCull().tint(); + .d().uv(0, 0, 16, 16).noCull(); } private static Model fire_neu2_flip(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .s().uv(16, 0, 0, 16).noCull().tint() + .s().uv(16, 0, 0, 16).noCull() .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .n().uv(16, 0, 0, 16).noCull().tint() + .n().uv(16, 0, 0, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .e().uv(16, 0, 0, 16).noCull().tint() + .e().uv(16, 0, 0, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .w().uv(16, 0, 0, 16).noCull().tint() + .w().uv(16, 0, 0, 16).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(8, 16, 16, Facing.Axis.X, -22.5f, true) - .d().uv(0, 0, 16, 16).rot(180).noCull().tint() + .d().uv(0, 0, 16, 16).rot(180).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(8, 16, 0, Facing.Axis.X, 22.5f, true) - .d().uv(0, 0, 16, 16).noCull().tint(); + .d().uv(0, 0, 16, 16).noCull(); } private static Model fire_nsewu2_flip(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .s().uv(16, 0, 0, 16).noCull().tint() + .s().uv(16, 0, 0, 16).noCull() .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .n().uv(16, 0, 0, 16).noCull().tint() + .n().uv(16, 0, 0, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .s().uv(16, 0, 0, 16).noCull().tint() + .s().uv(16, 0, 0, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .n().uv(16, 0, 0, 16).noCull().tint() + .n().uv(16, 0, 0, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .e().uv(16, 0, 0, 16).noCull().tint() + .e().uv(16, 0, 0, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .w().uv(16, 0, 0, 16).noCull().tint() + .w().uv(16, 0, 0, 16).noCull() .add(0.01f, 1, 0, 0.01f, 23.4f, 16).noShade() - .e().uv(16, 0, 0, 16).noCull().tint() + .e().uv(16, 0, 0, 16).noCull() .add(15.99f, 1, 0, 0.01f, 23.4f, 16).noShade() - .w().uv(16, 0, 0, 16).noCull().tint() + .w().uv(16, 0, 0, 16).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(8, 16, 16, Facing.Axis.X, -22.5f, true) - .d().uv(0, 0, 16, 16).rot(180).noCull().tint() + .d().uv(0, 0, 16, 16).rot(180).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(8, 16, 0, Facing.Axis.X, 22.5f, true) - .d().uv(0, 0, 16, 16).noCull().tint(); + .d().uv(0, 0, 16, 16).noCull(); } private static Model fire_nsewu2(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .s().uv(0, 0, 16, 16).noCull().tint() + .s().uv(0, 0, 16, 16).noCull() .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .n().uv(0, 0, 16, 16).noCull().tint() + .n().uv(0, 0, 16, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .s().uv(0, 0, 16, 16).noCull().tint() + .s().uv(0, 0, 16, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .n().uv(0, 0, 16, 16).noCull().tint() + .n().uv(0, 0, 16, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .e().uv(0, 0, 16, 16).noCull().tint() + .e().uv(0, 0, 16, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .w().uv(0, 0, 16, 16).noCull().tint() + .w().uv(0, 0, 16, 16).noCull() .add(0.01f, 1, 0, 0.01f, 23.4f, 16).noShade() - .e().uv(0, 0, 16, 16).noCull().tint() + .e().uv(0, 0, 16, 16).noCull() .add(15.99f, 1, 0, 0.01f, 23.4f, 16).noShade() - .w().uv(0, 0, 16, 16).noCull().tint() + .w().uv(0, 0, 16, 16).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(8, 16, 16, Facing.Axis.X, -22.5f, true) - .d().uv(0, 0, 16, 16).rot(180).noCull().tint() + .d().uv(0, 0, 16, 16).rot(180).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(8, 16, 0, Facing.Axis.X, 22.5f, true) - .d().uv(0, 0, 16, 16).noCull().tint(); + .d().uv(0, 0, 16, 16).noCull(); } private static Model fire_nsew(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .s().uv(0, 0, 16, 16).noCull().tint() + .s().uv(0, 0, 16, 16).noCull() .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .n().uv(0, 0, 16, 16).noCull().tint() + .n().uv(0, 0, 16, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .s().uv(0, 0, 16, 16).noCull().tint() + .s().uv(0, 0, 16, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .n().uv(0, 0, 16, 16).noCull().tint() + .n().uv(0, 0, 16, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .e().uv(0, 0, 16, 16).noCull().tint() + .e().uv(0, 0, 16, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .w().uv(0, 0, 16, 16).noCull().tint() + .w().uv(0, 0, 16, 16).noCull() .add(0.01f, 1, 0, 0.01f, 23.4f, 16).noShade() - .e().uv(0, 0, 16, 16).noCull().tint() + .e().uv(0, 0, 16, 16).noCull() .add(15.99f, 1, 0, 0.01f, 23.4f, 16).noShade() - .w().uv(0, 0, 16, 16).noCull().tint(); + .w().uv(0, 0, 16, 16).noCull(); } private static Model fire_floor(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 0, 8.8f, 16, 22.4f, 8.8f).noShade().rotate(8, 8, 8, Facing.Axis.X, -22.5f, true) - .s().uv(0, 0, 16, 16).noCull().tint() + .s().uv(0, 0, 16, 16).noCull() .add(0, 0, 7.2f, 16, 22.4f, 7.2f).noShade().rotate(8, 8, 8, Facing.Axis.X, 22.5f, true) - .n().uv(0, 0, 16, 16).noCull().tint() + .n().uv(0, 0, 16, 16).noCull() .add(8.8f, 0, 0, 8.8f, 22.4f, 16).noShade().rotate(8, 8, 8, Facing.Axis.Z, -22.5f, true) - .w().uv(0, 0, 16, 16).noCull().tint() + .w().uv(0, 0, 16, 16).noCull() .add(7.2f, 0, 0, 7.2f, 22.4f, 16).noShade().rotate(8, 8, 8, Facing.Axis.Z, 22.5f, true) - .e().uv(0, 0, 16, 16).noCull().tint() + .e().uv(0, 0, 16, 16).noCull() .add(0, 0, 15.99f, 16, 22.4f, 15.99f).noShade() - .s().uv(0, 0, 16, 16).noCull().tint() + .s().uv(0, 0, 16, 16).noCull() .add(0, 0, 0.01f, 16, 22.4f, 0.01f).noShade() - .n().uv(0, 0, 16, 16).noCull().tint() + .n().uv(0, 0, 16, 16).noCull() .add(0.01f, 0, 0, 0.01f, 22.4f, 16).noShade() - .w().uv(0, 0, 16, 16).noCull().tint() + .w().uv(0, 0, 16, 16).noCull() .add(15.99f, 0, 0, 15.99f, 22.4f, 16).noShade() - .e().uv(0, 0, 16, 16).noCull().tint(); + .e().uv(0, 0, 16, 16).noCull(); } private static Model fire_u1(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 16, 0, 16, 16, 16).noShade().rotate(16, 16, 8, Facing.Axis.Z, 22.5f, true) - .d().uv(0, 0, 16, 16).rot(270).noCull().tint() + .d().uv(0, 0, 16, 16).rot(270).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(0, 16, 8, Facing.Axis.Z, -22.5f, true) - .d().uv(0, 0, 16, 16).rot(90).noCull().tint(); + .d().uv(0, 0, 16, 16).rot(90).noCull(); } private static Model fire_n_flip(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .s().uv(16, 0, 0, 16).noCull().tint() + .s().uv(16, 0, 0, 16).noCull() .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .n().uv(16, 0, 0, 16).noCull().tint(); + .n().uv(16, 0, 0, 16).noCull(); } private static Model fire_ne(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .s().uv(0, 0, 16, 16).noCull().tint() + .s().uv(0, 0, 16, 16).noCull() .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .n().uv(0, 0, 16, 16).noCull().tint() + .n().uv(0, 0, 16, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .e().uv(0, 0, 16, 16).noCull().tint() + .e().uv(0, 0, 16, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .w().uv(0, 0, 16, 16).noCull().tint(); + .w().uv(0, 0, 16, 16).noCull(); } private static Model fire_nsew_flip(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .s().uv(16, 0, 0, 16).noCull().tint() + .s().uv(16, 0, 0, 16).noCull() .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .n().uv(16, 0, 0, 16).noCull().tint() + .n().uv(16, 0, 0, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .s().uv(16, 0, 0, 16).noCull().tint() + .s().uv(16, 0, 0, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .n().uv(16, 0, 0, 16).noCull().tint() + .n().uv(16, 0, 0, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .e().uv(16, 0, 0, 16).noCull().tint() + .e().uv(16, 0, 0, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .w().uv(16, 0, 0, 16).noCull().tint() + .w().uv(16, 0, 0, 16).noCull() .add(0.01f, 1, 0, 0.01f, 23.4f, 16).noShade() - .e().uv(16, 0, 0, 16).noCull().tint() + .e().uv(16, 0, 0, 16).noCull() .add(15.99f, 1, 0, 0.01f, 23.4f, 16).noShade() - .w().uv(16, 0, 0, 16).noCull().tint(); + .w().uv(16, 0, 0, 16).noCull(); } private static Model fire_nse(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .s().uv(0, 0, 16, 16).noCull().tint() + .s().uv(0, 0, 16, 16).noCull() .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .n().uv(0, 0, 16, 16).noCull().tint() + .n().uv(0, 0, 16, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .s().uv(0, 0, 16, 16).noCull().tint() + .s().uv(0, 0, 16, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .n().uv(0, 0, 16, 16).noCull().tint() + .n().uv(0, 0, 16, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .e().uv(0, 0, 16, 16).noCull().tint() + .e().uv(0, 0, 16, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .w().uv(0, 0, 16, 16).noCull().tint(); + .w().uv(0, 0, 16, 16).noCull(); } private static Model fire_nse_flip(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .s().uv(16, 0, 0, 16).noCull().tint() + .s().uv(16, 0, 0, 16).noCull() .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .n().uv(16, 0, 0, 16).noCull().tint() + .n().uv(16, 0, 0, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .s().uv(16, 0, 0, 16).noCull().tint() + .s().uv(16, 0, 0, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .n().uv(16, 0, 0, 16).noCull().tint() + .n().uv(16, 0, 0, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .e().uv(16, 0, 0, 16).noCull().tint() + .e().uv(16, 0, 0, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .w().uv(16, 0, 0, 16).noCull().tint(); + .w().uv(16, 0, 0, 16).noCull(); } private static Model fire_nsu1_flip(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .s().uv(16, 0, 0, 16).noCull().tint() + .s().uv(16, 0, 0, 16).noCull() .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .n().uv(16, 0, 0, 16).noCull().tint() + .n().uv(16, 0, 0, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .s().uv(16, 0, 0, 16).noCull().tint() + .s().uv(16, 0, 0, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .n().uv(16, 0, 0, 16).noCull().tint() + .n().uv(16, 0, 0, 16).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(16, 16, 8, Facing.Axis.Z, 22.5f, true) - .d().uv(0, 0, 16, 16).rot(270).noCull().tint() + .d().uv(0, 0, 16, 16).rot(270).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(0, 16, 8, Facing.Axis.Z, -22.5f, true) - .d().uv(0, 0, 16, 16).rot(90).noCull().tint(); + .d().uv(0, 0, 16, 16).rot(90).noCull(); } private static Model fire_n(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .s().uv(0, 0, 16, 16).noCull().tint() + .s().uv(0, 0, 16, 16).noCull() .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .n().uv(0, 0, 16, 16).noCull().tint(); + .n().uv(0, 0, 16, 16).noCull(); } private static Model fire_ns(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .s().uv(0, 0, 16, 16).noCull().tint() + .s().uv(0, 0, 16, 16).noCull() .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .n().uv(0, 0, 16, 16).noCull().tint() + .n().uv(0, 0, 16, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .s().uv(0, 0, 16, 16).noCull().tint() + .s().uv(0, 0, 16, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .n().uv(0, 0, 16, 16).noCull().tint(); + .n().uv(0, 0, 16, 16).noCull(); } private static Model fire_neu1(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .s().uv(0, 0, 16, 16).noCull().tint() + .s().uv(0, 0, 16, 16).noCull() .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .n().uv(0, 0, 16, 16).noCull().tint() + .n().uv(0, 0, 16, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .e().uv(0, 0, 16, 16).noCull().tint() + .e().uv(0, 0, 16, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .w().uv(0, 0, 16, 16).noCull().tint() + .w().uv(0, 0, 16, 16).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(16, 16, 8, Facing.Axis.Z, 22.5f, true) - .d().uv(0, 0, 16, 16).rot(270).noCull().tint() + .d().uv(0, 0, 16, 16).rot(270).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(0, 16, 8, Facing.Axis.Z, -22.5f, true) - .d().uv(0, 0, 16, 16).rot(90).noCull().tint(); + .d().uv(0, 0, 16, 16).rot(90).noCull(); } private static Model fire_u2(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 16, 0, 16, 16, 16).noShade().rotate(8, 16, 16, Facing.Axis.X, -22.5f, true) - .d().uv(0, 0, 16, 16).rot(180).noCull().tint() + .d().uv(0, 0, 16, 16).rot(180).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(8, 16, 0, Facing.Axis.X, 22.5f, true) - .d().uv(0, 0, 16, 16).noCull().tint(); + .d().uv(0, 0, 16, 16).noCull(); } private static Model fire_nseu2(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .s().uv(0, 0, 16, 16).noCull().tint() + .s().uv(0, 0, 16, 16).noCull() .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .n().uv(0, 0, 16, 16).noCull().tint() + .n().uv(0, 0, 16, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .s().uv(0, 0, 16, 16).noCull().tint() + .s().uv(0, 0, 16, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .n().uv(0, 0, 16, 16).noCull().tint() + .n().uv(0, 0, 16, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .e().uv(0, 0, 16, 16).noCull().tint() + .e().uv(0, 0, 16, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .w().uv(0, 0, 16, 16).noCull().tint() + .w().uv(0, 0, 16, 16).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(8, 16, 16, Facing.Axis.X, -22.5f, true) - .d().uv(0, 0, 16, 16).rot(180).noCull().tint() + .d().uv(0, 0, 16, 16).rot(180).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(8, 16, 0, Facing.Axis.X, 22.5f, true) - .d().uv(0, 0, 16, 16).noCull().tint(); + .d().uv(0, 0, 16, 16).noCull(); } private static Model fire_neu2(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .s().uv(0, 0, 16, 16).noCull().tint() + .s().uv(0, 0, 16, 16).noCull() .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .n().uv(0, 0, 16, 16).noCull().tint() + .n().uv(0, 0, 16, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .e().uv(0, 0, 16, 16).noCull().tint() + .e().uv(0, 0, 16, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .w().uv(0, 0, 16, 16).noCull().tint() + .w().uv(0, 0, 16, 16).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(8, 16, 16, Facing.Axis.X, -22.5f, true) - .d().uv(0, 0, 16, 16).rot(180).noCull().tint() + .d().uv(0, 0, 16, 16).rot(180).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(8, 16, 0, Facing.Axis.X, 22.5f, true) - .d().uv(0, 0, 16, 16).noCull().tint(); + .d().uv(0, 0, 16, 16).noCull(); } private static Model fire_nu2(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .s().uv(0, 0, 16, 16).noCull().tint() + .s().uv(0, 0, 16, 16).noCull() .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .n().uv(0, 0, 16, 16).noCull().tint() + .n().uv(0, 0, 16, 16).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(8, 16, 16, Facing.Axis.X, -22.5f, true) - .d().uv(0, 0, 16, 16).rot(180).noCull().tint() + .d().uv(0, 0, 16, 16).rot(180).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(8, 16, 0, Facing.Axis.X, 22.5f, true) - .d().uv(0, 0, 16, 16).noCull().tint(); + .d().uv(0, 0, 16, 16).noCull(); } private static Model fire_nseu1(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .s().uv(0, 0, 16, 16).noCull().tint() + .s().uv(0, 0, 16, 16).noCull() .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .n().uv(0, 0, 16, 16).noCull().tint() + .n().uv(0, 0, 16, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .s().uv(0, 0, 16, 16).noCull().tint() + .s().uv(0, 0, 16, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .n().uv(0, 0, 16, 16).noCull().tint() + .n().uv(0, 0, 16, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .e().uv(0, 0, 16, 16).noCull().tint() + .e().uv(0, 0, 16, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .w().uv(0, 0, 16, 16).noCull().tint() + .w().uv(0, 0, 16, 16).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(16, 16, 8, Facing.Axis.Z, 22.5f, true) - .d().uv(0, 0, 16, 16).rot(270).noCull().tint() + .d().uv(0, 0, 16, 16).rot(270).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(0, 16, 8, Facing.Axis.Z, -22.5f, true) - .d().uv(0, 0, 16, 16).rot(90).noCull().tint(); + .d().uv(0, 0, 16, 16).rot(90).noCull(); } private static Model fire_ns_flip(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .s().uv(16, 0, 0, 16).noCull().tint() + .s().uv(16, 0, 0, 16).noCull() .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .n().uv(16, 0, 0, 16).noCull().tint() + .n().uv(16, 0, 0, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .s().uv(16, 0, 0, 16).noCull().tint() + .s().uv(16, 0, 0, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .n().uv(16, 0, 0, 16).noCull().tint(); + .n().uv(16, 0, 0, 16).noCull(); } private static Model fire_nsewu1(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .s().uv(0, 0, 16, 16).noCull().tint() + .s().uv(0, 0, 16, 16).noCull() .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .n().uv(0, 0, 16, 16).noCull().tint() + .n().uv(0, 0, 16, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .s().uv(0, 0, 16, 16).noCull().tint() + .s().uv(0, 0, 16, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .n().uv(0, 0, 16, 16).noCull().tint() + .n().uv(0, 0, 16, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .e().uv(0, 0, 16, 16).noCull().tint() + .e().uv(0, 0, 16, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .w().uv(0, 0, 16, 16).noCull().tint() + .w().uv(0, 0, 16, 16).noCull() .add(0.01f, 1, 0, 0.01f, 23.4f, 16).noShade() - .e().uv(0, 0, 16, 16).noCull().tint() + .e().uv(0, 0, 16, 16).noCull() .add(15.99f, 1, 0, 0.01f, 23.4f, 16).noShade() - .w().uv(0, 0, 16, 16).noCull().tint() + .w().uv(0, 0, 16, 16).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(16, 16, 8, Facing.Axis.Z, 22.5f, true) - .d().uv(0, 0, 16, 16).rot(270).noCull().tint() + .d().uv(0, 0, 16, 16).rot(270).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(0, 16, 8, Facing.Axis.Z, -22.5f, true) - .d().uv(0, 0, 16, 16).rot(90).noCull().tint(); + .d().uv(0, 0, 16, 16).rot(90).noCull(); } private static Model fire_nsu1(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .s().uv(0, 0, 16, 16).noCull().tint() + .s().uv(0, 0, 16, 16).noCull() .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .n().uv(0, 0, 16, 16).noCull().tint() + .n().uv(0, 0, 16, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .s().uv(0, 0, 16, 16).noCull().tint() + .s().uv(0, 0, 16, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .n().uv(0, 0, 16, 16).noCull().tint() + .n().uv(0, 0, 16, 16).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(16, 16, 8, Facing.Axis.Z, 22.5f, true) - .d().uv(0, 0, 16, 16).rot(270).noCull().tint() + .d().uv(0, 0, 16, 16).rot(270).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(0, 16, 8, Facing.Axis.Z, -22.5f, true) - .d().uv(0, 0, 16, 16).rot(90).noCull().tint(); + .d().uv(0, 0, 16, 16).rot(90).noCull(); } private static Model fire_nsewu1_flip(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .s().uv(16, 0, 0, 16).noCull().tint() + .s().uv(16, 0, 0, 16).noCull() .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .n().uv(16, 0, 0, 16).noCull().tint() + .n().uv(16, 0, 0, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .s().uv(16, 0, 0, 16).noCull().tint() + .s().uv(16, 0, 0, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .n().uv(16, 0, 0, 16).noCull().tint() + .n().uv(16, 0, 0, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .e().uv(16, 0, 0, 16).noCull().tint() + .e().uv(16, 0, 0, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .w().uv(16, 0, 0, 16).noCull().tint() + .w().uv(16, 0, 0, 16).noCull() .add(0.01f, 1, 0, 0.01f, 23.4f, 16).noShade() - .e().uv(16, 0, 0, 16).noCull().tint() + .e().uv(16, 0, 0, 16).noCull() .add(15.99f, 1, 0, 0.01f, 23.4f, 16).noShade() - .w().uv(16, 0, 0, 16).noCull().tint() + .w().uv(16, 0, 0, 16).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(16, 16, 8, Facing.Axis.Z, 22.5f, true) - .d().uv(0, 0, 16, 16).rot(270).noCull().tint() + .d().uv(0, 0, 16, 16).rot(270).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(0, 16, 8, Facing.Axis.Z, -22.5f, true) - .d().uv(0, 0, 16, 16).rot(90).noCull().tint(); + .d().uv(0, 0, 16, 16).rot(90).noCull(); } private static Model fire_ne_flip(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .s().uv(16, 0, 0, 16).noCull().tint() + .s().uv(16, 0, 0, 16).noCull() .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .n().uv(16, 0, 0, 16).noCull().tint() + .n().uv(16, 0, 0, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .e().uv(16, 0, 0, 16).noCull().tint() + .e().uv(16, 0, 0, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .w().uv(16, 0, 0, 16).noCull().tint(); + .w().uv(16, 0, 0, 16).noCull(); } private static Model fire_nseu1_flip(String fire) { return ModelProvider.getModelProvider().getModel(fire) .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .s().uv(16, 0, 0, 16).noCull().tint() + .s().uv(16, 0, 0, 16).noCull() .add(0, 1, 0.01f, 16, 23.4f, 0.01f).noShade() - .n().uv(16, 0, 0, 16).noCull().tint() + .n().uv(16, 0, 0, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .s().uv(16, 0, 0, 16).noCull().tint() + .s().uv(16, 0, 0, 16).noCull() .add(0, 1, 15.99f, 16, 23.4f, 15.99f).noShade() - .n().uv(16, 0, 0, 16).noCull().tint() + .n().uv(16, 0, 0, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .e().uv(16, 0, 0, 16).noCull().tint() + .e().uv(16, 0, 0, 16).noCull() .add(15.99f, 1, 0, 15.99f, 23.4f, 16).noShade() - .w().uv(16, 0, 0, 16).noCull().tint() + .w().uv(16, 0, 0, 16).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(16, 16, 8, Facing.Axis.Z, 22.5f, true) - .d().uv(0, 0, 16, 16).rot(270).noCull().tint() + .d().uv(0, 0, 16, 16).rot(270).noCull() .add(0, 16, 0, 16, 16, 16).noShade().rotate(0, 16, 8, Facing.Axis.Z, -22.5f, true) - .d().uv(0, 0, 16, 16).rot(90).noCull().tint(); + .d().uv(0, 0, 16, 16).rot(90).noCull(); } protected static Model getFireModel(String tex, boolean flip, int upper, boolean n, boolean s, boolean w, boolean e) { if(!e && !flip && !n && !s && upper == 0 && !w) @@ -1116,7 +1118,7 @@ public class BlockFire extends Block } public Model getModel(ModelProvider provider, String name, State state) { - return getFireModel(state.getValue(ALT) ? "fire_layer_1" : "fire_layer_0", state.getValue(FLIP), state.getValue(UPPER), + return getFireModel(state.getValue(ALT) ? name + "_layer_1" : name + "_layer_0", state.getValue(FLIP), state.getValue(UPPER), state.getValue(NORTH), state.getValue(SOUTH), state.getValue(WEST), state.getValue(EAST)); } @@ -1125,8 +1127,8 @@ public class BlockFire extends Block } public void getAnimatedTextures(Map map) { - map.put("fire_layer_0", TextureAnimation.FIRE1); - map.put("fire_layer_1", TextureAnimation.FIRE2); + map.put("fire_layer_0", TextureAnimation.FLAME_BASE); + map.put("fire_layer_1", TextureAnimation.FLAME_OFFSET); } public boolean canExtinguish() { diff --git a/common/src/main/java/common/block/natural/BlockPodzol.java b/common/src/main/java/common/block/natural/BlockPodzol.java index 48319ab2..dd63c2ea 100644 --- a/common/src/main/java/common/block/natural/BlockPodzol.java +++ b/common/src/main/java/common/block/natural/BlockPodzol.java @@ -6,6 +6,7 @@ import common.init.Blocks; import common.init.Items; import common.item.CheatTab; import common.item.Item; +import common.model.BlockLayer; import common.model.Model; import common.model.ModelProvider; import common.properties.Property; @@ -37,10 +38,17 @@ public class BlockPodzol extends Block { return Items.dirt; } - public Model getModel(ModelProvider provider, String name, State state) { - return state.getValue(SNOWY) ? provider.getModel("grass_side_snowed").add().nswe().d("dirt").u("grass_top") - : provider.getModel("dirt_podzol_side").add().nswe().d("dirt").u("dirt_podzol_top"); - } + public BlockLayer getRenderLayer() + { + return BlockLayer.CUTOUT_MIPPED; + } + + public Model getModel(ModelProvider provider, String name, State state) { + if(state.getValue(SNOWY)) + return provider.getModel("dirt").add().d().u("snow").nswe().add().nswe("soil_snowed"); + else + return provider.getModel("dirt").add().d().u("podzol_top").nswe().add().nswe("podzol_side"); + } protected Property[] getUnsavedProperties() { return new Property[] {SNOWY}; diff --git a/common/src/main/java/common/block/natural/BlockSnow.java b/common/src/main/java/common/block/natural/BlockSnow.java index 995ff950..cd7bbfec 100755 --- a/common/src/main/java/common/block/natural/BlockSnow.java +++ b/common/src/main/java/common/block/natural/BlockSnow.java @@ -10,7 +10,7 @@ import common.item.Item; import common.item.ItemStack; import common.model.Model; import common.model.ModelProvider; -import common.model.Transform; +import common.model.GuiPosition; import common.properties.Property; import common.properties.PropertyInteger; import common.rng.Random; @@ -37,7 +37,7 @@ public class BlockSnow extends Block this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.125F, 1.0F); this.setTicked(); this.setTab(CheatTab.DECORATION); - this.setItemBounds(); + this.getBoundsForLayers(0); } public boolean isPassable(IBlockAccess worldIn, BlockPos pos) @@ -67,14 +67,6 @@ public class BlockSnow extends Block return false; } - /** - * Sets the block's bounds for rendering it as an item - */ - public void setItemBounds() - { - this.getBoundsForLayers(0); - } - public void setBlockBounds(IWorldAccess worldIn, BlockPos pos) { State iblockstate = worldIn.getState(pos); diff --git a/common/src/main/java/common/block/natural/BlockSoulFire.java b/common/src/main/java/common/block/natural/BlockSoulFire.java index 9cacaeb4..d65388f1 100644 --- a/common/src/main/java/common/block/natural/BlockSoulFire.java +++ b/common/src/main/java/common/block/natural/BlockSoulFire.java @@ -1,14 +1,18 @@ package common.block.natural; +import java.util.Map; + +import common.model.TextureAnimation; import common.rng.Random; import common.util.BlockPos; import common.world.World; -public class BlockSoulFire extends BlockTintedFire { - public BlockSoulFire() { - super(0x4010ff); - } - +public class BlockSoulFire extends BlockFire { + public void getAnimatedTextures(Map map) { + map.put("soul_fire_layer_0", TextureAnimation.BLUE_FLAME_BASE); + map.put("soul_fire_layer_1", TextureAnimation.BLUE_FLAME_OFFSET); + } + protected void catchOnFire(World world, BlockPos pos, int chance, Random rand, int age) { } diff --git a/common/src/main/java/common/block/natural/BlockSoulSand.java b/common/src/main/java/common/block/natural/BlockSoulSand.java index b4da5d2a..d1da31d5 100755 --- a/common/src/main/java/common/block/natural/BlockSoulSand.java +++ b/common/src/main/java/common/block/natural/BlockSoulSand.java @@ -23,9 +23,6 @@ public class BlockSoulSand extends Block return new BoundingBox((double)pos.getX(), (double)pos.getY(), (double)pos.getZ(), (double)(pos.getX() + 1), (double)((float)(pos.getY() + 1) - f), (double)(pos.getZ() + 1)); } - /** - * Called When an Entity Collided with the Block - */ public void onCollideUpdate(World worldIn, BlockPos pos, State state, Entity entityIn) { entityIn.motionX *= 0.4D; diff --git a/common/src/main/java/common/block/natural/BlockTintedFire.java b/common/src/main/java/common/block/natural/BlockTintedFire.java deleted file mode 100644 index 3a9a2185..00000000 --- a/common/src/main/java/common/block/natural/BlockTintedFire.java +++ /dev/null @@ -1,36 +0,0 @@ -package common.block.natural; - -import java.util.Map; - -import common.model.Model; -import common.model.ModelProvider; -import common.model.TextureAnimation; -import common.util.BlockPos; -import common.world.IWorldAccess; -import common.world.State; - -public class BlockTintedFire extends BlockFire { - private final int tint; - - public BlockTintedFire(int tint) { - this.tint = tint; - } - - public int getRenderColor(State state) { - return this.tint; - } - - public int colorMultiplier(IWorldAccess worldIn, BlockPos pos, int renderPass) { - return this.tint; - } - - public Model getModel(ModelProvider provider, String name, State state) { - return getFireModel(state.getValue(ALT) ? "flame_layer_1" : "flame_layer_0", state.getValue(FLIP), state.getValue(UPPER), - state.getValue(NORTH), state.getValue(SOUTH), state.getValue(WEST), state.getValue(EAST)); - } - - public void getAnimatedTextures(Map map) { - map.put("flame_layer_0", TextureAnimation.FLAME1); - map.put("flame_layer_1", TextureAnimation.FLAME2); - } -} diff --git a/common/src/main/java/common/block/natural/BlockWeb.java b/common/src/main/java/common/block/natural/BlockWeb.java index d7577406..a41d638a 100755 --- a/common/src/main/java/common/block/natural/BlockWeb.java +++ b/common/src/main/java/common/block/natural/BlockWeb.java @@ -9,7 +9,7 @@ import common.item.Item; import common.model.BlockLayer; import common.model.Model; import common.model.ModelProvider; -import common.model.Transform; +import common.model.GuiPosition; import common.rng.Random; import common.util.BlockPos; import common.util.BoundingBox; @@ -72,7 +72,7 @@ public class BlockWeb extends Block return provider.getModel("web").cross(); } - public Transform getTransform() { - return Transform.CROSS; + public GuiPosition getItemPosition() { + return GuiPosition.CROSS; } } diff --git a/common/src/main/java/common/block/tech/BlockAnvil.java b/common/src/main/java/common/block/tech/BlockAnvil.java index 94638dbb..44e50ff1 100755 --- a/common/src/main/java/common/block/tech/BlockAnvil.java +++ b/common/src/main/java/common/block/tech/BlockAnvil.java @@ -14,7 +14,7 @@ import common.item.CheatTab; import common.model.Model; import common.model.ModelProvider; import common.model.ModelRotation; -import common.model.Transform; +import common.model.GuiPosition; import common.properties.Property; import common.util.BlockPos; import common.util.ExtMath; @@ -113,14 +113,6 @@ public class BlockAnvil extends BlockFalling implements Rotatable return true; } - /** - * Possibly modify the given BlockState before rendering it on an Entity (Minecarts, Endermen, ...) - */ - public State getEntityState(State state) - { - return this.getState().withProperty(FACING, Facing.SOUTH); - } - protected Property[] getProperties() { return new Property[] {FACING}; diff --git a/common/src/main/java/common/block/tech/BlockBasePressurePlate.java b/common/src/main/java/common/block/tech/BlockBasePressurePlate.java index c78eaf82..6635bc1c 100755 --- a/common/src/main/java/common/block/tech/BlockBasePressurePlate.java +++ b/common/src/main/java/common/block/tech/BlockBasePressurePlate.java @@ -9,7 +9,7 @@ import common.item.CheatTab; import common.item.Item; import common.model.Model; import common.model.ModelProvider; -import common.model.Transform; +import common.model.GuiPosition; import common.rng.Random; import common.util.BlockPos; import common.util.BoundingBox; @@ -205,17 +205,6 @@ public abstract class BlockBasePressurePlate extends Block return true; } - /** - * Sets the block's bounds for rendering it as an item - */ - public void setItemBounds() - { - float f = 0.5F; - float f1 = 0.125F; - float f2 = 0.5F; - this.setBlockBounds(0.0F, 0.375F, 0.0F, 1.0F, 0.625F, 1.0F); - } - public int getMobilityFlag() { return 1; @@ -242,8 +231,8 @@ public abstract class BlockBasePressurePlate extends Block .e().uv(1, 15, 15, 16).noCull(); } - public Transform getTransform() { - return Transform.SMALL_FLAT; + public GuiPosition getItemPosition() { + return GuiPosition.SMALL_FLAT; } public abstract String getTexture(); diff --git a/common/src/main/java/common/block/tech/BlockBrewingStand.java b/common/src/main/java/common/block/tech/BlockBrewingStand.java index 986c6db3..09ca3d3d 100755 --- a/common/src/main/java/common/block/tech/BlockBrewingStand.java +++ b/common/src/main/java/common/block/tech/BlockBrewingStand.java @@ -391,16 +391,8 @@ public class BlockBrewingStand extends Block implements ITileEntityProvider { this.setBlockBounds(0.4375F, 0.0F, 0.4375F, 0.5625F, 0.875F, 0.5625F); super.getCollisionBoxes(worldIn, pos, state, mask, list, collidingEntity); - this.setItemBounds(); - super.getCollisionBoxes(worldIn, pos, state, mask, list, collidingEntity); - } - - /** - * Sets the block's bounds for rendering it as an item - */ - public void setItemBounds() - { this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.125F, 1.0F); + super.getCollisionBoxes(worldIn, pos, state, mask, list, collidingEntity); } public boolean onUse(World worldIn, BlockPos pos, State state, EntityNPC playerIn, Facing side, float hitX, float hitY, float hitZ) diff --git a/common/src/main/java/common/block/tech/BlockButton.java b/common/src/main/java/common/block/tech/BlockButton.java index f50d95b6..8536a9c9 100755 --- a/common/src/main/java/common/block/tech/BlockButton.java +++ b/common/src/main/java/common/block/tech/BlockButton.java @@ -16,7 +16,7 @@ import common.item.Item; import common.model.Model; import common.model.ModelProvider; import common.model.ModelRotation; -import common.model.Transform; +import common.model.GuiPosition; import common.properties.Property; import common.properties.PropertyBool; import common.rng.Random; @@ -238,17 +238,6 @@ public class BlockButton extends Block implements Directional // } } - /** - * Sets the block's bounds for rendering it as an item - */ - public void setItemBounds() - { - float f = 0.1875F; - float f1 = 0.125F; - float f2 = 0.125F; - this.setBlockBounds(0.5F - f, 0.5F - f1, 0.5F - f2, 0.5F + f, 0.5F + f1, 0.5F + f2); - } - /** * Called When an Entity Collided with the Block */ @@ -340,7 +329,7 @@ public class BlockButton extends Block implements Directional .rotate(getRotation(state.getValue(FACING))); } - public Transform getTransform() { - return Transform.PANE_SIDE; + public GuiPosition getItemPosition() { + return GuiPosition.PANE_SIDE; } } diff --git a/common/src/main/java/common/block/tech/BlockCauldron.java b/common/src/main/java/common/block/tech/BlockCauldron.java index ae10f31b..b2b05042 100755 --- a/common/src/main/java/common/block/tech/BlockCauldron.java +++ b/common/src/main/java/common/block/tech/BlockCauldron.java @@ -430,14 +430,6 @@ public class BlockCauldron extends Block super.getCollisionBoxes(worldIn, pos, state, mask, list, collidingEntity); this.setBlockBounds(0.0F, 0.0F, 1.0F - f, 1.0F, 1.0F, 1.0F); super.getCollisionBoxes(worldIn, pos, state, mask, list, collidingEntity); - this.setItemBounds(); - } - - /** - * Sets the block's bounds for rendering it as an item - */ - public void setItemBounds() - { this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); } diff --git a/common/src/main/java/common/block/tech/BlockDispenser.java b/common/src/main/java/common/block/tech/BlockDispenser.java index 49e30ccd..eb6c2c45 100755 --- a/common/src/main/java/common/block/tech/BlockDispenser.java +++ b/common/src/main/java/common/block/tech/BlockDispenser.java @@ -159,14 +159,6 @@ public class BlockDispenser extends Block implements ITileEntityProvider, Direct return new Vec3(d0, d1, d2); } - /** - * Possibly modify the given BlockState before rendering it on an Entity (Minecarts, Endermen, ...) - */ - public State getEntityState(State state) - { - return this.getState().withProperty(FACING, Facing.SOUTH); - } - protected Property[] getProperties() { return new Property[] {FACING}; diff --git a/common/src/main/java/common/block/tech/BlockDisplay.java b/common/src/main/java/common/block/tech/BlockDisplay.java index 9d6b4e47..f3548c79 100644 --- a/common/src/main/java/common/block/tech/BlockDisplay.java +++ b/common/src/main/java/common/block/tech/BlockDisplay.java @@ -13,7 +13,7 @@ import common.item.CheatTab; import common.model.Model; import common.model.ModelProvider; import common.model.ModelRotation; -import common.model.Transform; +import common.model.GuiPosition; import common.properties.Property; import common.util.BlockPos; import common.util.BoundingBox; @@ -119,8 +119,8 @@ public abstract class BlockDisplay extends Block implements Rotatable return provider.getModel("iron_block").add(0, 0, 15, 16, 16, 16).n("display_area").noCull().s().du().we().rotate(ModelRotation.getNorthRot(state.getValue(FACING))); } - public Transform getTransform() { - return Transform.PANE_SIDE; + public GuiPosition getItemPosition() { + return GuiPosition.PANE_SIDE; } protected abstract BlockDisplay getOtherBlock(); diff --git a/common/src/main/java/common/block/tech/BlockFurnace.java b/common/src/main/java/common/block/tech/BlockFurnace.java index 84df6236..162e1b3d 100755 --- a/common/src/main/java/common/block/tech/BlockFurnace.java +++ b/common/src/main/java/common/block/tech/BlockFurnace.java @@ -192,14 +192,6 @@ public class BlockFurnace extends Block implements ITileEntityProvider, Rotatabl return Items.furnace; } - /** - * Possibly modify the given BlockState before rendering it on an Entity (Minecarts, Endermen, ...) - */ - public State getEntityState(State state) - { - return this.getState().withProperty(FACING, Facing.SOUTH); - } - protected Property[] getProperties() { return new Property[] {FACING}; diff --git a/common/src/main/java/common/block/tech/BlockLever.java b/common/src/main/java/common/block/tech/BlockLever.java index 43933525..f99e5dc0 100755 --- a/common/src/main/java/common/block/tech/BlockLever.java +++ b/common/src/main/java/common/block/tech/BlockLever.java @@ -10,7 +10,7 @@ import common.item.Item; import common.model.Model; import common.model.ModelProvider; import common.model.ModelRotation; -import common.model.Transform; +import common.model.GuiPosition; import common.properties.Property; import common.properties.PropertyBool; import common.properties.PropertyEnum; @@ -289,8 +289,8 @@ public class BlockLever extends Block .rotate(getRotation(state.getValue(FACING))); } - public Transform getTransform() { - return Transform.PANE_SIDE; + public GuiPosition getItemPosition() { + return GuiPosition.PANE_SIDE; } public static enum EnumOrientation implements Identifyable, DirectionVec diff --git a/common/src/main/java/common/block/tech/BlockPistonBase.java b/common/src/main/java/common/block/tech/BlockPistonBase.java index 530af1ba..86082a7d 100755 --- a/common/src/main/java/common/block/tech/BlockPistonBase.java +++ b/common/src/main/java/common/block/tech/BlockPistonBase.java @@ -423,14 +423,6 @@ public class BlockPistonBase extends Block implements Directional } } - /** - * Sets the block's bounds for rendering it as an item - */ - public void setItemBounds() - { - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - } - /** * Add all collision boxes of this Block to the list that intersect with the given mask. */ @@ -646,14 +638,6 @@ public class BlockPistonBase extends Block implements Directional } } - /** - * Possibly modify the given BlockState before rendering it on an Entity (Minecarts, Endermen, ...) - */ - public State getEntityState(State state) - { - return this.getState().withProperty(FACING, Facing.UP); - } - protected Property[] getProperties() { return new Property[] {FACING, EXTENDED}; diff --git a/common/src/main/java/common/block/tech/BlockRail.java b/common/src/main/java/common/block/tech/BlockRail.java index 13de9f1a..07f0bb33 100755 --- a/common/src/main/java/common/block/tech/BlockRail.java +++ b/common/src/main/java/common/block/tech/BlockRail.java @@ -11,7 +11,7 @@ import common.model.BlockLayer; import common.model.Model; import common.model.ModelProvider; import common.model.ModelRotation; -import common.model.Transform; +import common.model.GuiPosition; import common.properties.Property; import common.properties.PropertyEnum; import common.util.BlockPos; @@ -215,8 +215,8 @@ public class BlockRail extends Block } } - public Transform getTransform() { - return Transform.SMALL_FLAT; + public GuiPosition getItemPosition() { + return GuiPosition.SMALL_FLAT; } protected void onNeighborChangedInternal(World worldIn, BlockPos pos, State state, Block neighborBlock) diff --git a/common/src/main/java/common/block/tech/BlockTorch.java b/common/src/main/java/common/block/tech/BlockTorch.java index 9ceb0fc4..6100bc4b 100755 --- a/common/src/main/java/common/block/tech/BlockTorch.java +++ b/common/src/main/java/common/block/tech/BlockTorch.java @@ -13,7 +13,7 @@ import common.model.BlockLayer; import common.model.Model; import common.model.ModelProvider; import common.model.ModelRotation; -import common.model.Transform; +import common.model.GuiPosition; import common.properties.Property; import common.util.BlockPos; import common.util.BoundingBox; @@ -260,7 +260,7 @@ public abstract class BlockTorch extends Block implements Directional .rotate(ModelRotation.getEastRot(state.getValue(FACING), false)); } - public Transform getTransform() { - return Transform.SMALL; + public GuiPosition getItemPosition() { + return GuiPosition.SMALL; } } diff --git a/common/src/main/java/common/block/tech/BlockTripWire.java b/common/src/main/java/common/block/tech/BlockTripWire.java index 1208c52d..beb8af0f 100755 --- a/common/src/main/java/common/block/tech/BlockTripWire.java +++ b/common/src/main/java/common/block/tech/BlockTripWire.java @@ -16,7 +16,7 @@ import common.model.BlockLayer; import common.model.Model; import common.model.ModelProvider; import common.model.ModelRotation; -import common.model.Transform; +import common.model.GuiPosition; import common.properties.Property; import common.properties.PropertyBool; import common.rng.Random; @@ -649,7 +649,7 @@ public class BlockTripWire extends Block return new Property[] {NORTH, SOUTH, WEST, EAST}; } - public Transform getTransform() { - return Transform.THIN_WIRE; + public GuiPosition getItemPosition() { + return GuiPosition.THIN_WIRE; } } diff --git a/common/src/main/java/common/block/tech/BlockTripWireHook.java b/common/src/main/java/common/block/tech/BlockTripWireHook.java index 0d04ec28..6a84bf7c 100755 --- a/common/src/main/java/common/block/tech/BlockTripWireHook.java +++ b/common/src/main/java/common/block/tech/BlockTripWireHook.java @@ -12,7 +12,7 @@ import common.model.BlockLayer; import common.model.Model; import common.model.ModelProvider; import common.model.ModelRotation; -import common.model.Transform; +import common.model.GuiPosition; import common.properties.Property; import common.properties.PropertyBool; import common.rng.Random; @@ -547,8 +547,8 @@ public class BlockTripWireHook extends Block implements Rotatable return model.rotate(ModelRotation.getNorthRot(state.getValue(FACING))); } - public Transform getTransform() { - return Transform.PANE_SIDE; + public GuiPosition getItemPosition() { + return GuiPosition.PANE_SIDE; } protected Property[] getUnsavedProperties() { diff --git a/common/src/main/java/common/block/tech/BlockWire.java b/common/src/main/java/common/block/tech/BlockWire.java index b4380ca8..8161c32c 100755 --- a/common/src/main/java/common/block/tech/BlockWire.java +++ b/common/src/main/java/common/block/tech/BlockWire.java @@ -13,7 +13,7 @@ import common.model.BlockLayer; import common.model.Model; import common.model.ModelProvider; import common.model.ModelRotation; -import common.model.Transform; +import common.model.GuiPosition; import common.properties.Property; import common.properties.PropertyBool; import common.rng.Random; @@ -543,7 +543,7 @@ public class BlockWire extends Block return new Property[] {DOWN, UP, EAST, NORTH, SOUTH, WEST}; } - public Transform getTransform() { - return Transform.WIRE; + public GuiPosition getItemPosition() { + return GuiPosition.WIRE; } } diff --git a/common/src/main/java/common/color/Colorizer.java b/common/src/main/java/common/color/Colorizer.java deleted file mode 100755 index dcae2c95..00000000 --- a/common/src/main/java/common/color/Colorizer.java +++ /dev/null @@ -1,91 +0,0 @@ -package common.color; - -import common.biome.Biome; -import common.util.BlockPos; -import common.world.IWorldAccess; - -public enum Colorizer { - NONE(0xffffff), BASIC(0x37b500), PINE(0x3f993f), BIRCH(0x68a723); - - private interface ColorResolver { - int getColorAtPos(Biome biome, BlockPos pos); - } - - private static final ColorResolver GRASS_COLOR = new ColorResolver() { - public int getColorAtPos(Biome biome, BlockPos pos) { - return biome.getGrassColorAtPos(pos); - } - }; - private static final ColorResolver FOLIAGE_COLOR = new ColorResolver() { - public int getColorAtPos(Biome biome, BlockPos pos) { - return biome.getFoliageColorAtPos(pos); - } - }; - private static final ColorResolver WATER_COLOR_MULTIPLIER = new ColorResolver() { - public int getColorAtPos(Biome biome, BlockPos pos) { - return biome.waterColor; - } - }; - private static final int[] GRASS = new int[65536]; - private static final int[] FOLIAGE = new int[65536]; - - private final int color; - - public static int[] getGrassMap() { - return GRASS; - } - - public static int[] getFoliageMap() { - return FOLIAGE; - } - - public static int getGrassColor(double temp, double rain) { - rain = rain * temp; - int i = (int)((1.0D - temp) * 255.0D); - int j = (int)((1.0D - rain) * 255.0D); - int k = j << 8 | i; - return k > GRASS.length ? 0xFFFF00FF : GRASS[k]; - } - - public static int getFoliageColor(double temp, double rain) { - rain = rain * temp; - int i = (int)((1.0D - temp) * 255.0D); - int j = (int)((1.0D - rain) * 255.0D); - return FOLIAGE[j << 8 | i]; - } - - private static int getColor(IWorldAccess access, BlockPos pos, ColorResolver resolver) { - int r = 0; - int g = 0; - int b = 0; - - for(BlockPos.MutableBlockPos loc : BlockPos.getAllInBoxMutable(pos.add(-1, 0, -1), pos.add(1, 0, 1))) { - int c = resolver.getColorAtPos(access.getBiomeGenForCoords(loc), loc); - r += (c & 16711680) >> 16; - g += (c & 65280) >> 8; - b += c & 255; - } - - return (r / 9 & 255) << 16 | (g / 9 & 255) << 8 | b / 9 & 255; - } - - public static int getGrassColor(IWorldAccess access, BlockPos pos) { - return getColor(access, pos, GRASS_COLOR); - } - - public static int getFoliageColor(IWorldAccess access, BlockPos pos) { - return getColor(access, pos, FOLIAGE_COLOR); - } - - public static int getWaterColor(IWorldAccess access, BlockPos pos) { - return getColor(access, pos, WATER_COLOR_MULTIPLIER); - } - - private Colorizer(int color) { - this.color = color; - } - - public int getColor() { - return this.color; - } -} diff --git a/common/src/main/java/common/entity/Entity.java b/common/src/main/java/common/entity/Entity.java index 0fd725cf..48d6fe84 100755 --- a/common/src/main/java/common/entity/Entity.java +++ b/common/src/main/java/common/entity/Entity.java @@ -1923,50 +1923,11 @@ public abstract class Entity return null; } - /** - * Marks the entity as being inside a portal, activating teleportation logic in onEntityUpdate() in the following - * tick(s). - * - * @param pos The postion of the portal that the entity is in - */ - public void setPortal(int dim) + public void setPortal(PortalType dim) { -// if (this.portalTimer > 0) -// { -// this.portalTimer = this.getPortalCooldown(); -// } -// else -// { -// if (!this.worldObj.client && !pos.equals(this.portalPos)) -// { -// this.portalPos = pos; -// BlockPattern.PatternHelper blockpattern$patternhelper = Blocks.portal.func_181089_f(this.worldObj, pos); -// double d0 = blockpattern$patternhelper.getFinger().getAxis() == EnumFacing.Axis.X ? (double)blockpattern$patternhelper.getPos().getZ() : (double)blockpattern$patternhelper.getPos().getX(); -// double d1 = blockpattern$patternhelper.getFinger().getAxis() == EnumFacing.Axis.X ? this.posZ : this.posX; -// d1 = Math.abs(MathHelper.func_181160_c(d1 - (double)(blockpattern$patternhelper.getFinger().rotateY().getAxisDirection() == EnumFacing.AxisDirection.NEGATIVE ? 1 : 0), d0, d0 - (double)blockpattern$patternhelper.getPalmLength())); -// double d2 = MathHelper.func_181160_c(this.posY - 1.0D, (double)blockpattern$patternhelper.getPos().getY(), (double)(blockpattern$patternhelper.getPos().getY() - blockpattern$patternhelper.getThumbLength())); -// this.portalVec = new Vec3(d1, d2, 0.0D); -// this.portalDir = blockpattern$patternhelper.getFinger(); -// } -// if(!this.worldObj.client) this.unmount(); - this.inPortal = PortalType.values()[dim]; -// } - } - - public void setFlatPortal() - { -// if (this.portalTimer > 0) -// { -// this.portalTimer = this.getPortalCooldown(); -// } -// else -// { - if(!this.worldObj.client) - this.unmount(); - this.inPortal = PortalType.FLOOR; -// } + this.inPortal = dim; } public void unmount() diff --git a/common/src/main/java/common/entity/animal/EntitySheep.java b/common/src/main/java/common/entity/animal/EntitySheep.java index b8fff03e..7aeaaf82 100755 --- a/common/src/main/java/common/entity/animal/EntitySheep.java +++ b/common/src/main/java/common/entity/animal/EntitySheep.java @@ -288,7 +288,7 @@ public class EntitySheep extends EntityAnimal public static DyeColor getRandomSheepColor(Random random, Biome biome) { - if(biome == Biome.SNOWLAND) + if(biome == Biome.SNOW) return DyeColor.WHITE; int i = random.zrange(140); return i < 20 ? DyeColor.BLACK : diff --git a/common/src/main/java/common/entity/npc/EntitySlime.java b/common/src/main/java/common/entity/npc/EntitySlime.java index 9fead9ce..c1dc448d 100755 --- a/common/src/main/java/common/entity/npc/EntitySlime.java +++ b/common/src/main/java/common/entity/npc/EntitySlime.java @@ -385,7 +385,7 @@ public class EntitySlime extends EntityNPC // { Biome biomegenbase = this.worldObj.getBiomeGenForCoords(blockpos); - if (biomegenbase == Biome.SWAMPLAND && this.posY > 50.0D && this.posY < 70.0D && this.rand.floatv() < 0.5F && this.rand.floatv() < this.worldObj.getMoonPhase() && this.worldObj.getLightFromNeighbors(new BlockPos(this)) <= this.rand.zrange(8)) + if (biomegenbase == Biome.SWAMP && this.posY > 50.0D && this.posY < 70.0D && this.rand.floatv() < 0.5F && this.rand.floatv() < this.worldObj.getMoonPhase() && this.worldObj.getLightFromNeighbors(new BlockPos(this)) <= this.rand.zrange(8)) { return super.getCanSpawnHere(); } diff --git a/common/src/main/java/common/entity/types/EntityThrowable.java b/common/src/main/java/common/entity/types/EntityThrowable.java index c910c334..a2ae3133 100755 --- a/common/src/main/java/common/entity/types/EntityThrowable.java +++ b/common/src/main/java/common/entity/types/EntityThrowable.java @@ -14,6 +14,7 @@ import common.util.BoundingBox; import common.util.ExtMath; import common.util.HitPosition; import common.util.ParticleType; +import common.util.PortalType; import common.util.Vec3; import common.world.State; import common.world.World; @@ -224,13 +225,13 @@ public abstract class EntityThrowable extends Entity implements IProjectile if (movingobjectposition != null) { State state; - if (movingobjectposition.type == HitPosition.ObjectType.BLOCK && (state = this.worldObj.getState(movingobjectposition.block)).getBlock() == Blocks.portal) + if (movingobjectposition.type == HitPosition.ObjectType.BLOCK && (state = this.worldObj.getState(movingobjectposition.block)).getBlock() instanceof BlockPortal portal) { - this.setPortal(state.getValue(BlockPortal.DIM)); + this.setPortal(portal.getType()); } else if (movingobjectposition.type == HitPosition.ObjectType.BLOCK && this.worldObj.getState(movingobjectposition.block).getBlock() == Blocks.floor_portal) { - this.setFlatPortal(); + this.setPortal(PortalType.FLOOR); } else { diff --git a/common/src/main/java/common/init/BlockRegistry.java b/common/src/main/java/common/init/BlockRegistry.java index af7ea4b2..553f3dbf 100755 --- a/common/src/main/java/common/init/BlockRegistry.java +++ b/common/src/main/java/common/init/BlockRegistry.java @@ -58,6 +58,7 @@ import common.block.foliage.BlockPumpkin; import common.block.foliage.BlockReed; import common.block.foliage.BlockSapling; import common.block.foliage.BlockStem; +import common.block.foliage.BlockSwamp; import common.block.foliage.BlockTallGrass; import common.block.foliage.BlockTianSoil; import common.block.foliage.BlockVine; @@ -88,7 +89,7 @@ import common.block.natural.BlockSnowBlock; import common.block.natural.BlockSoulFire; import common.block.natural.BlockSoulSand; import common.block.natural.BlockStone; -import common.block.natural.BlockTintedFire; +import common.block.natural.BlockBlackFire; import common.block.natural.BlockWeb; import common.block.tech.BlockActiveDisplay; import common.block.tech.BlockAnvil; @@ -133,6 +134,7 @@ import common.item.CheatTab; import common.log.Log; import common.model.TextureAnimation; import common.properties.Property; +import common.util.PortalType; import common.util.Util; import common.world.State; @@ -287,9 +289,9 @@ public abstract class BlockRegistry { .setDisplay("Schwarzbruchstein").setTab(CheatTab.ROCK)); - registerFluid("water", "Wasser", true, LiquidType.WATER, false, 0, 5, 0.0f, TextureAnimation.WATER, TextureAnimation.WATERFLOW); + registerFluid("water", "Wasser", true, LiquidType.WATER, false, 0, 5, 0.0f, TextureAnimation.WATER_STILL, TextureAnimation.WATER_FLOW); registerFluid("lava", "Lava", false, LiquidType.LAVA, true, 15, -30, 0.0f, 2, 3); - registerFluid("magma", "Magma", false, LiquidType.HOT, true, 15, 40, 0.0f, TextureAnimation.LAVA, TextureAnimation.LAVAFLOW); + registerFluid("magma", "Magma", false, LiquidType.HOT, true, 15, 40, 0.0f, TextureAnimation.MAGMA_STILL, TextureAnimation.MAGMA_FLOW); registerFluid("plasma", "Plasma", false, LiquidType.HOT, false, 15, 15, 0.0f, 2, 2); registerFluid("mercury", "Quecksilber", false, LiquidType.COLD, true, 0, 40, 0.0f, 8, 4); registerFluid("hydrogen", "Wasserstoff", false, LiquidType.COLD, true, 0, 50, 0.0f, 8, 4); @@ -298,7 +300,8 @@ public abstract class BlockRegistry { registerFluid("goo", "Klebrige Masse", false, LiquidType.COLD, true, 0, 60, 0.0f, 10, 5); registerFluid("nukage", "Radioaktive Masse", false, LiquidType.COLD, true, 10, 10, 4.0f, 2, 2); registerFluid("blood", "Blut", false, LiquidType.COLD, false, 0, 10, 0.0f, 2, 1); - registerFluid("springwater", "Klares Wasser", true, LiquidType.COLD, false, 0, 5, 0.0f, 1, 1); + registerFluid("spring_water", "Klares Wasser", true, LiquidType.COLD, false, 0, 5, 0.0f, 1, 1); + registerFluid("swamp_water", "Sumpfwasser", true, LiquidType.COLD, false, 0, 5, 0.0f, TextureAnimation.SWAMP_WATER_STILL, TextureAnimation.SWAMP_WATER_FLOW); register("coal_ore", (new BlockOre()).setHardness(3.0F).setResistance(5.0F).setSound(SoundType.STONE).setDisplay("Steinkohle")); @@ -341,6 +344,7 @@ public abstract class BlockRegistry { register("slime_block", (new BlockSlime()).setDisplay("Schleimblock").setSound(SoundType.SLIME)); register("blackened_dirt", (new BlockBlackenedDirt()).setHardness(0.5F).setSound(SoundType.GRAVEL).setDisplay("Schwarzerde").setShovelHarvestable()); register("blackened_soil", (new BlockBlackenedSoil()).setHardness(0.6F).setSound(SoundType.GRASS).setDisplay("Schwarzgrund").setShovelHarvestable()); + register("swamp", (new BlockSwamp()).setHardness(0.6F).setSound(SoundType.GRASS).setDisplay("Sumpf").setShovelHarvestable()); @@ -358,7 +362,8 @@ public abstract class BlockRegistry { Block cactus = (new BlockCactus()).setHardness(0.4F).setSound(SoundType.CLOTH).setDisplay("Kaktus"); register("cactus", cactus); register("reeds", (new BlockReed()).setHardness(0.0F).setSound(SoundType.GRASS).setDisplay("Zuckerrohr").setTab(CheatTab.PLANTS)); - register("vine", (new BlockVine()).setHardness(0.2F).setSound(SoundType.GRASS).setDisplay("Ranken").setShearsEfficiency(0)); + register("vine", (new BlockVine(false)).setHardness(0.2F).setSound(SoundType.GRASS).setDisplay("Ranken").setShearsEfficiency(0)); + register("swamp_vine", (new BlockVine(true)).setHardness(0.2F).setSound(SoundType.GRASS).setDisplay("Sumpfranken").setShearsEfficiency(0)); register("waterlily", (new BlockLilyPad()).setHardness(0.0F).setSound(SoundType.GRASS).setDisplay("Seerosenblatt")); @@ -394,7 +399,7 @@ public abstract class BlockRegistry { } register("soul_fire", (new BlockSoulFire()).setHardness(0.0F).setLight(1.0F).setSound(SoundType.CLOTH).setDisplay("Feuer der Seelen")); - register("black_fire", (new BlockTintedFire(0x202020)).setHardness(0.0F).setLight(1.0F).setSound(SoundType.CLOTH).setDisplay("Dunkles Feuer")); + register("black_fire", (new BlockBlackFire()).setHardness(0.0F).setLight(1.0F).setSound(SoundType.CLOTH).setDisplay("Dunkles Feuer")); register("web", (new BlockWeb()).setOpacity(1).setHardness(4.0F).setDisplay("Spinnennetz")); register("fire", (new BlockFire()).setHardness(0.0F).setLight(1.0F).setSound(SoundType.CLOTH).setDisplay("Feuer")); @@ -453,8 +458,11 @@ public abstract class BlockRegistry { "x" + (density * 16) + ")")); } - register("portal", (new BlockPortal()).setHardness(0.0F).setSound(SoundType.GLASS).setLight(0.75F).setDisplay("Portal")); - register("floor_portal", (new BlockFloorPortal(Material.PORTAL)).setHardness(0.0F).setDisplay("Portal")); + for(PortalType portal : PortalType.values()) { + if(portal != PortalType.FLOOR && portal != PortalType.VOID) + register(portal.getName() + "_portal", (new BlockPortal(portal)).setHardness(0.0F).setSound(SoundType.GLASS).setLight(0.75F).setDisplay(portal.getDisplay())); + } + register(PortalType.FLOOR.getName() + "_portal", (new BlockFloorPortal(Material.PORTAL)).setHardness(0.0F).setDisplay(PortalType.FLOOR.getDisplay())); register("portal_frame", (new BlockPortalFrame()).setSound(SoundType.GLASS).setLight(0.125F).setHardness(5.0F) .setDisplay("Portalrahmen").setResistance(2000.0F).setTab(CheatTab.TECHNOLOGY)); diff --git a/common/src/main/java/common/init/Blocks.java b/common/src/main/java/common/init/Blocks.java index 53f03b0d..778ae51f 100755 --- a/common/src/main/java/common/init/Blocks.java +++ b/common/src/main/java/common/init/Blocks.java @@ -73,7 +73,7 @@ public abstract class Blocks { public static final BlockStairs black_brick_stairs = get("black_brick_stairs"); public static final BlockCarpet black_carpet = get("black_carpet"); public static final BlockColoredClay black_clay = get("black_clay"); - public static final BlockTintedFire black_fire = get("black_fire"); + public static final BlockBlackFire black_fire = get("black_fire"); public static final BlockStainedGlass black_glass = get("black_glass"); public static final BlockStainedGlassPane black_glass_pane = get("black_glass_pane"); public static final BlockFlower black_lotus = get("black_lotus"); @@ -232,7 +232,7 @@ public abstract class Blocks { public static final BlockDynamicLiquid flowing_mercury = get("flowing_mercury"); public static final BlockDynamicLiquid flowing_nukage = get("flowing_nukage"); public static final BlockDynamicLiquid flowing_slime = get("flowing_slime"); - public static final BlockDynamicLiquid flowing_springwater = get("flowing_springwater"); + public static final BlockDynamicLiquid flowing_spring_water = get("flowing_spring_water"); public static final BlockDynamicLiquid flowing_water = get("flowing_water"); public static final BlockFurnace furnace = get("furnace"); public static final BlockGlass glass = get("glass"); @@ -391,7 +391,6 @@ public abstract class Blocks { public static final BlockMetalOre plutonium_ore = get("plutonium_ore"); public static final BlockPodzol podzol = get("podzol"); public static final BlockFlower poppy = get("poppy"); - public static final BlockPortal portal = get("portal"); public static final BlockPortalFrame portal_frame = get("portal_frame"); public static final BlockMetalBlock potassium_block = get("potassium_block"); public static final BlockMetalOre potassium_ore = get("potassium_ore"); @@ -463,7 +462,7 @@ public abstract class Blocks { public static final BlockSoulSand soul_sand = get("soul_sand"); public static final BlockWart soul_warts = get("soul_warts"); public static final Block sponge = get("sponge"); - public static final BlockStaticLiquid springwater = get("springwater"); + public static final BlockStaticLiquid spring_water = get("spring_water"); public static final BlockDoor spruce_door = get("spruce_door"); public static final BlockFence spruce_fence = get("spruce_fence"); public static final BlockFenceGate spruce_fence_gate = get("spruce_fence_gate"); @@ -591,6 +590,32 @@ public abstract class Blocks { public static final BlockWire wire = get("wire"); public static final BlockStaticLiquid plasma = get("plasma"); public static final BlockDynamicLiquid flowing_plasma = get("flowing_plasma"); + public static final BlockStaticLiquid swamp_water = get("swamp_water"); + public static final BlockDynamicLiquid flowing_swamp_water = get("flowing_swamp_water"); + public static final BlockDoor swamp_oak_door = get("swamp_oak_door"); + public static final BlockFence swamp_oak_fence = get("swamp_oak_fence"); + public static final BlockFenceGate swamp_oak_fence_gate = get("swamp_oak_fence_gate"); + public static final BlockLeaves swamp_oak_leaves_autumn = get("swamp_oak_leaves_autumn"); + public static final BlockLeaves swamp_oak_leaves_snowy = get("swamp_oak_leaves_snowy"); + public static final BlockLeaves swamp_oak_leaves_spring = get("swamp_oak_leaves_spring"); + public static final BlockLeaves swamp_oak_leaves_summer = get("swamp_oak_leaves_summer"); + public static final BlockLeaves swamp_oak_leaves_winter = get("swamp_oak_leaves_winter"); + public static final BlockLog swamp_oak_log = get("swamp_oak_log"); + public static final Block swamp_oak_planks = get("swamp_oak_planks"); + public static final BlockSapling swamp_oak_sapling = get("swamp_oak_sapling"); + public static final BlockSlab swamp_oak_slab = get("swamp_oak_slab"); + public static final BlockStairs swamp_oak_stairs = get("swamp_oak_stairs"); + public static final BlockTallGrass swamp_grass = get("swamp_grass"); + public static final BlockVine swamp_vine = get("swamp_vine"); + public static final BlockSwamp swamp = get("swamp"); + public static final BlockPortal arcane_portal = get("arcane_portal"); + public static final BlockPortal chaos_portal = get("chaos_portal"); + public static final BlockPortal crimson_portal = get("crimson_portal"); + public static final BlockPortal dark_portal = get("dark_portal"); + public static final BlockPortal deep_portal = get("deep_portal"); + public static final BlockPortal light_portal = get("light_portal"); + public static final BlockPortal radiating_portal = get("radiating_portal"); + public static final BlockPortal shining_portal = get("shining_portal"); private static T get(String id) { T block = (T)BlockRegistry.byNameExact(id); diff --git a/common/src/main/java/common/init/CraftingRegistry.java b/common/src/main/java/common/init/CraftingRegistry.java index 284d8475..ed6ce1dd 100755 --- a/common/src/main/java/common/init/CraftingRegistry.java +++ b/common/src/main/java/common/init/CraftingRegistry.java @@ -150,7 +150,9 @@ public abstract class CraftingRegistry add(new ItemStack(Items.quartz_pillar, 2), "#", "#", '#', Items.quartz_block); add(new ItemStack(Items.stonebrick, 4), "##", "##", '#', Items.stone); addShapeless(new ItemStack(Items.mossy_stonebrick), Items.stonebrick, Items.vine); + addShapeless(new ItemStack(Items.mossy_stonebrick), Items.stonebrick, Items.swamp_vine); addShapeless(new ItemStack(Items.mossy_cobblestone), Items.cobblestone, Items.vine); + addShapeless(new ItemStack(Items.mossy_cobblestone), Items.cobblestone, Items.swamp_vine); add(new ItemStack(Items.iron_bars, 16), "###", "###", '#', Items.iron_ingot); add(new ItemStack(Items.glass_pane, 16), "###", "###", '#', Items.glass); add(new ItemStack(Items.lamp, 1), " R ", "RGR", " R ", 'R', Items.charged_powder, 'G', Items.glowstone); diff --git a/common/src/main/java/common/init/Items.java b/common/src/main/java/common/init/Items.java index c0b3be01..8bfdac91 100755 --- a/common/src/main/java/common/init/Items.java +++ b/common/src/main/java/common/init/Items.java @@ -651,7 +651,7 @@ public abstract class Items { public static final ItemBucket recursive_mercury_bucket = get("recursive_mercury_bucket"); public static final ItemBucket recursive_nukage_bucket = get("recursive_nukage_bucket"); public static final ItemBucket recursive_slime_bucket = get("recursive_slime_bucket"); - public static final ItemBucket recursive_springwater_bucket = get("recursive_springwater_bucket"); + public static final ItemBucket recursive_spring_water_bucket = get("recursive_spring_water_bucket"); public static final ItemBucket recursive_water_bucket = get("recursive_water_bucket"); public static final Item red_bed = get("red_bed"); public static final Item red_button = get("red_button"); @@ -711,7 +711,7 @@ public abstract class Items { public static final Item speckled_melon = get("speckled_melon"); public static final ItemFood spider_eye = get("spider_eye"); public static final Item sponge = get("sponge"); - public static final ItemBucket springwater_bucket = get("springwater_bucket"); + public static final ItemBucket spring_water_bucket = get("spring_water_bucket"); public static final Item spruce_door = get("spruce_door"); public static final Item spruce_fence = get("spruce_fence"); public static final Item spruce_fence_gate = get("spruce_fence_gate"); @@ -991,6 +991,24 @@ public abstract class Items { public static final Item tian_torch = get("tian_torch"); public static final ItemBucket plasma_bucket = get("plasma_bucket"); public static final ItemBucket recursive_plasma_bucket = get("recursive_plasma_bucket"); + public static final ItemBucket swamp_water_bucket = get("swamp_water_bucket"); + public static final ItemBucket recursive_swamp_water_bucket = get("recursive_swamp_water_bucket"); + public static final Item swamp_grass = get("swamp_grass"); + public static final Item swamp_oak_door = get("swamp_oak_door"); + public static final Item swamp_oak_fence = get("swamp_oak_fence"); + public static final Item swamp_oak_fence_gate = get("swamp_oak_fence_gate"); + public static final Item swamp_oak_leaves_autumn = get("swamp_oak_leaves_autumn"); + public static final Item swamp_oak_leaves_snowy = get("swamp_oak_leaves_snowy"); + public static final Item swamp_oak_leaves_spring = get("swamp_oak_leaves_spring"); + public static final Item swamp_oak_leaves_summer = get("swamp_oak_leaves_summer"); + public static final Item swamp_oak_leaves_winter = get("swamp_oak_leaves_winter"); + public static final Item swamp_oak_log = get("swamp_oak_log"); + public static final Item swamp_oak_planks = get("swamp_oak_planks"); + public static final Item swamp_oak_sapling = get("swamp_oak_sapling"); + public static final Item swamp_oak_slab = get("swamp_oak_slab"); + public static final Item swamp_oak_stairs = get("swamp_oak_stairs"); + public static final Item swamp_vine = get("swamp_vine"); + public static final Item swamp = get("swamp"); private static T get(String id) { T item = (T)ItemRegistry.byName(id); diff --git a/common/src/main/java/common/init/UniverseRegistry.java b/common/src/main/java/common/init/UniverseRegistry.java index 226474cf..0a5ae0f1 100755 --- a/common/src/main/java/common/init/UniverseRegistry.java +++ b/common/src/main/java/common/init/UniverseRegistry.java @@ -406,12 +406,12 @@ public abstract class UniverseRegistry { registerPlanet("Terra", new Planet(6378136, 8766144L, 24000L, 28.0f, 9.81f, 259.15f) .setPerlinGen(Blocks.stone.getState(), Blocks.water.getState(), 63) .setBiomeReplacer(Blocks.gravel.getState()) - .setBiomeGen(Biome.FOREST, false, 4, 4, 6, 50, 50, Biome.MUSHROOMPLAINS).enableMobs().enableSnow() - .setFrostBiomes(Biome.ICEPLAINS, Biome.ICEPLAINS, Biome.ICEPLAINS, Biome.COLDTAIGA, Biome.MEGATAIGA) - .setColdBiomes(Biome.FOREST, Biome.EXTREMEHILLS, Biome.TAIGA, Biome.PLAINS) - .setMediumBiomes(Biome.FOREST, Biome.ROOFEDFOREST, Biome.EXTREMEHILLS, Biome.PLAINS, Biome.BIRCHFOREST, - Biome.SWAMPLAND, Biome.JUNGLE) - .setHotBiomes(Biome.DESERT, Biome.DESERT, Biome.DESERT, Biome.SAVANNA, Biome.SAVANNA, Biome.PLAINS) + .setBiomeGen(Biome.FOREST, false, 4, 4, 6, 50, 50, Biome.MUSHROOM).enableMobs().enableSnow() + .setFrostBiomes(Biome.ICE, Biome.ICE, Biome.ICE, Biome.ICE_TAIGA, Biome.LARGE_TAIGA) + .setColdBiomes(Biome.FOREST, Biome.HILLS, Biome.TAIGA, Biome.PLAIN) + .setMediumBiomes(Biome.FOREST, Biome.DARK_FOREST, Biome.HILLS, Biome.PLAIN, Biome.BIRCH_FOREST, + Biome.SWAMP, Biome.TROPIC) + .setHotBiomes(Biome.DESERT, Biome.DESERT, Biome.DESERT, Biome.SAVANNA, Biome.SAVANNA, Biome.PLAIN) .enableCavesRavines(Blocks.lava.getState()).setDungeons(8) .addLake(Blocks.water.getState(), null, Blocks.grass.getState(), 4, 0, 255, false) .addLake(Blocks.lava.getState(), Blocks.stone.getState(), null, 8, 8, 255, true) @@ -490,7 +490,7 @@ public abstract class UniverseRegistry { registerStar("Gi'rok", 603421976, 232.0f, 5220.0f, () -> { registerPlanet("gharoth", "Elbenplanet Gharoth", new Planet(2806382, 4837386L, 52960L, 30.0f, 10.0f, 257.3f) .setSimpleGen(Blocks.dirt.getState(), Blocks.water.getState(), 64) - .setSimpleReplacer(Blocks.gravel.getState(), Blocks.sand.getState()).setBiome(Biome.ELVENFOREST) + .setSimpleReplacer(Blocks.gravel.getState(), Blocks.sand.getState()).setBiome(Biome.ELVEN_FOREST) .enableCaves(Blocks.air.getState()).setDungeons(4).enableMobs().enableSnow() .addLake(Blocks.water.getState(), null, Blocks.grass.getState(), 4, 0, 255, false) .addLake(Blocks.lava.getState(), null, null, 8, 8, 255, true) @@ -511,9 +511,9 @@ public abstract class UniverseRegistry { .addOre(Blocks.ardite_ore.getState(), 0, 2, 3, 0, 12, false) .addOre(Blocks.nichun_ore.getState(), 0, 10, 1, 0, 10, false), () -> { registerMoon("yrdinath", "Eismond Yrdinath", new Moon(0xccccff, 2503812, 46743637L, 17460L, 2.5f, 239.15f, Blocks.snow, Blocks.ice) - .setBiome(Biome.SNOWLAND).enableMobs().enableSnow().setDefaultWeather(Weather.SNOW)); + .setBiome(Biome.SNOW).enableMobs().enableSnow().setDefaultWeather(Weather.SNOW)); registerMoon("mythril", "Eismond Mythril", new Moon(0xbbbbff, 2213749, 42659432L, 15330L, 2.25f, 221.65f, Blocks.snow, Blocks.ice) - .setBiome(Biome.SNOWLAND).enableMobs().enableSnow().setDefaultWeather(Weather.SNOW)); + .setBiome(Biome.SNOW).enableMobs().enableSnow().setDefaultWeather(Weather.SNOW)); }); registerPlanet("mesar", "Wüstenplanet Me'sar", new Planet(0xff7f3f, 0xff6022, 0xff6f00, 9823183, 56643366L, 87340L, 11.0f, 333.15f) .setPerlinGen(Blocks.rock.getState(), Blocks.air.getState(), 63) @@ -557,10 +557,10 @@ public abstract class UniverseRegistry { registerDomain("Tian'Xin", () -> { registerArea("Ni'enrath", new Area(0x7f00ff, 532109, 276.15f, 1).setLightColor(0x07000f).setBlockColor(0xcf6fff) - .setPerlinGen(Blocks.tian.getState(), Blocks.springwater.getState(), 63).setBiome(Biome.TIAN) + .setPerlinGen(Blocks.tian.getState(), Blocks.spring_water.getState(), 63).setBiome(Biome.TIAN) .setBiomeReplacer(Blocks.tian.getState()).enableLongCaves().enableMobs().enableSnow() - .addLake(Blocks.springwater.getState(), Blocks.tian.getState(), Blocks.tian.getState(), 4, 0, 255, false) - .addLiquid(Blocks.flowing_springwater.getState(), 50, 8, 255, false)); + .addLake(Blocks.spring_water.getState(), Blocks.tian.getState(), Blocks.tian.getState(), 4, 0, 255, false) + .addLiquid(Blocks.flowing_spring_water.getState(), 50, 8, 255, false)); }); registerDomain("Digital", () -> { registerArea("Cyberspace", new Area(0x000000, 16777216, 293.15f, 15).setLightColor(0x00ff00).setBlockColor(0xff0000).enableBlockLightSubtraction() @@ -572,27 +572,27 @@ public abstract class UniverseRegistry { .enableWorldCeiling().enableDenseFog() .setCavernGen(Blocks.hellrock.getState(), Blocks.lava.getState(), 63) .setSurfaceReplacer(Blocks.gravel.getState(), Blocks.soul_sand.getState()) - .setBiome(Biome.UPPERHELL)); + .setBiome(Biome.UPPER_HELL)); registerArea("kyroth", "Kreis Kyroth", new Area(0x990000, 86742970, 387.15f, 3).enableLongCaves().enableMobs() .setSimpleGen(Blocks.hellrock.getState(), Blocks.lava.getState(), 64) .setSimpleReplacer(Blocks.obsidian.getState(), Blocks.soul_sand.getState()) - .setBiome(Biome.LOWERHELL) + .setBiome(Biome.LOWER_HELL) .addLake(Blocks.lava.getState(), null, null, 4, 8, 255, false) .addLiquid(Blocks.flowing_lava.getState(), 40, 8, 255, true)); registerArea("ahrd", "Kreis Ahrd", new Area(0xcc0000, 67028432, 467.15f, 15).enableLongCaves().enableMobs() .setPerlinGen(Blocks.hellrock.getState(), Blocks.lava.getState(), 63) - .setBiomeReplacer(Blocks.soul_sand.getState()).setBiome(Biome.HELLHILLS) + .setBiomeReplacer(Blocks.soul_sand.getState()).setBiome(Biome.HELL_HILLS) .addLake(Blocks.lava.getState(), Blocks.soul_sand.getState(), Blocks.soul_sand.getState(), 2, 8, 255, false).addLiquid(Blocks.flowing_lava.getState(), 80, 8, 255, true)); registerArea("mizorath", "Kreis Mizorath", new Area(0xff0000, 54029584, 1067.15f, 15).enableMobs() .setPerlinGen(Blocks.hellrock.getState(), Blocks.blood.getState(), 63) - .setBiomeReplacer(Blocks.soul_sand.getState()).setBiome(Biome.SOULPLAINS)); + .setBiomeReplacer(Blocks.soul_sand.getState()).setBiome(Biome.SOUL_PLAINS)); registerArea("dargoth", "Kreis Dargoth", new Area(0xff3f0c, 43293629, 1707.15f, 15).enableMobs() .setPerlinGen(Blocks.hellrock.getState(), Blocks.magma.getState(), 63) - .setBiomeReplacer(Blocks.soul_sand.getState()).setBiome(Biome.SOULPLAINS)); + .setBiomeReplacer(Blocks.soul_sand.getState()).setBiome(Biome.SOUL_PLAINS)); registerArea("aasirith", "Kreis Aasirith", new Area(0x191919, 36291872, 2482.0f, 1).enableLongCaves().enableMobs() .setPerlinGen(Blocks.rock.getState(), Blocks.magma.getState(), 63) - .setBiomeReplacer(Blocks.ash.getState()).setBiome(Biome.ASHLAND) + .setBiomeReplacer(Blocks.ash.getState()).setBiome(Biome.ASH) .addLake(Blocks.lava.getState(), Blocks.rock.getState(), Blocks.rock.getState(), 2, 8, 255, false).addLiquid(Blocks.flowing_lava.getState(), 80, 8, 255, true)); }); diff --git a/common/src/main/java/common/init/WoodType.java b/common/src/main/java/common/init/WoodType.java index a7b97b1f..1965ee79 100755 --- a/common/src/main/java/common/init/WoodType.java +++ b/common/src/main/java/common/init/WoodType.java @@ -1,43 +1,36 @@ package common.init; -import common.color.Colorizer; - public enum WoodType { - OAK("oak", "Eichen", null, 20, "apple", 200), - SPRUCE("spruce", "Fichten", Colorizer.PINE, 20), - BIRCH("birch", "Birken", Colorizer.BIRCH, 20), - JUNGLE("jungle", "Tropen", null, 40, "cocoa_powder", 350), - ACACIA("acacia", "Akazien", null, 20), - DARK_OAK("dark_oak", "Schwarzeichen", null, 20), - CHERRY("cherry", "Kirsch", Colorizer.NONE, 20), - MAPLE("maple", "Ahorn", Colorizer.NONE, 20), - TIAN("tian", "Tian", Colorizer.NONE, 80), - BLACKWOOD("blackwood", "Schwarz", Colorizer.NONE, 60); + OAK("oak", "Eichen", 20, "apple", 200), + SPRUCE("spruce", "Fichten", 20), + BIRCH("birch", "Birken", 20), + JUNGLE("jungle", "Tropen", 40, "cocoa_powder", 350), + ACACIA("acacia", "Akazien", 20), + DARK_OAK("dark_oak", "Schwarzeichen", 20), + CHERRY("cherry", "Kirsch", 20), + MAPLE("maple", "Ahorn", 20), + TIAN("tian", "Tian", 80), + BLACKWOOD("blackwood", "Schwarz", 60), + SWAMP_OAK("swamp_oak", "Sumpfeichen", 20); private final String name; - private final Colorizer tintType; private final int sapChance; private final int dropChance; private final String item; private final String display; - private WoodType(String name, String display, Colorizer tint, int sapChance) { - this(name, display, tint, sapChance, null, 0); + private WoodType(String name, String display, int sapChance) { + this(name, display, sapChance, null, 0); } - private WoodType(String name, String display, Colorizer tint, int sapChance, String item, int dropChance) { + private WoodType(String name, String display, int sapChance, String item, int dropChance) { this.name = name; - this.tintType = tint; this.sapChance = sapChance; this.dropChance = dropChance; this.item = item; this.display = display; } - public Colorizer getTintType() { - return this.tintType; - } - public int getSaplingChance() { return this.sapChance; } diff --git a/common/src/main/java/common/item/Item.java b/common/src/main/java/common/item/Item.java index 785b7395..5e5a0ed3 100755 --- a/common/src/main/java/common/item/Item.java +++ b/common/src/main/java/common/item/Item.java @@ -13,7 +13,7 @@ import common.entity.types.EntityLiving; import common.entity.types.IProjectile; import common.model.Model; import common.model.ModelProvider; -import common.model.Transform; +import common.model.GuiPosition; import common.tileentity.TileEntity; import common.util.BlockPos; import common.util.ExtMath; @@ -287,8 +287,6 @@ public class Item { } public int getRenderColor(ItemStack stack, int pass) { - if(this.block != null && this.block.isItemColored()) - return this.block.getRenderColor(this.block.getState()); if(pass > 0) return 16777215; int i = stack.getDyeColor(); @@ -307,7 +305,7 @@ public class Item { return null; } - public Transform getCustomTransform() { + public GuiPosition getCustomPosition() { return null; } diff --git a/common/src/main/java/common/item/consumable/ItemSoup.java b/common/src/main/java/common/item/consumable/ItemSoup.java index 2705cc88..cc23c6df 100755 --- a/common/src/main/java/common/item/consumable/ItemSoup.java +++ b/common/src/main/java/common/item/consumable/ItemSoup.java @@ -3,7 +3,7 @@ package common.item.consumable; import common.entity.npc.EntityNPC; import common.init.Items; import common.item.ItemStack; -import common.model.Transform; +import common.model.GuiPosition; import common.world.World; public class ItemSoup extends ItemFood diff --git a/common/src/main/java/common/item/material/ItemSeeds.java b/common/src/main/java/common/item/material/ItemSeeds.java index 67e24046..d8858ef2 100755 --- a/common/src/main/java/common/item/material/ItemSeeds.java +++ b/common/src/main/java/common/item/material/ItemSeeds.java @@ -6,7 +6,7 @@ import common.entity.npc.EntityNPC; import common.item.CheatTab; import common.item.Item; import common.item.ItemStack; -import common.model.Transform; +import common.model.GuiPosition; import common.util.BlockPos; import common.util.Facing; import common.world.World; diff --git a/common/src/main/java/common/item/projectile/ItemDie.java b/common/src/main/java/common/item/projectile/ItemDie.java index 9f17b508..fe873459 100755 --- a/common/src/main/java/common/item/projectile/ItemDie.java +++ b/common/src/main/java/common/item/projectile/ItemDie.java @@ -13,7 +13,7 @@ import common.item.Item; import common.item.ItemStack; import common.model.Model; import common.model.ModelProvider; -import common.model.Transform; +import common.model.GuiPosition; import common.tileentity.TileEntity; import common.util.BlockPos; import common.util.Facing; @@ -85,8 +85,8 @@ public class ItemDie extends Item .du("items/die_d" + this.sides + "_top").uv(0, 0, 16, 16); } - public Transform getCustomTransform() { - return Transform.DICE; + public GuiPosition getCustomPosition() { + return GuiPosition.DICE; } public ItemStack dispenseStack(World world, TileEntity source, Vec3 position, BlockPos blockpos, Facing facing, ItemStack stack) { diff --git a/common/src/main/java/common/item/tool/ItemCarrotOnAStick.java b/common/src/main/java/common/item/tool/ItemCarrotOnAStick.java index c448fb56..5978d43d 100755 --- a/common/src/main/java/common/item/tool/ItemCarrotOnAStick.java +++ b/common/src/main/java/common/item/tool/ItemCarrotOnAStick.java @@ -7,7 +7,7 @@ import common.item.CheatTab; import common.item.Item; import common.item.ItemStack; import common.item.WieldType; -import common.model.Transform; +import common.model.GuiPosition; import common.world.World; public class ItemCarrotOnAStick extends Item diff --git a/common/src/main/java/common/item/tool/ItemEditor.java b/common/src/main/java/common/item/tool/ItemEditor.java index 8d4682ac..08dedfb0 100755 --- a/common/src/main/java/common/item/tool/ItemEditor.java +++ b/common/src/main/java/common/item/tool/ItemEditor.java @@ -5,7 +5,7 @@ import common.item.CheatTab; import common.item.Item; import common.item.ItemControl; import common.item.ItemStack; -import common.model.Transform; +import common.model.GuiPosition; import common.util.BlockPos; import common.world.World; diff --git a/common/src/main/java/common/item/tool/ItemFishingRod.java b/common/src/main/java/common/item/tool/ItemFishingRod.java index ae53fbff..1d95b3c5 100755 --- a/common/src/main/java/common/item/tool/ItemFishingRod.java +++ b/common/src/main/java/common/item/tool/ItemFishingRod.java @@ -7,7 +7,7 @@ import common.item.CheatTab; import common.item.Item; import common.item.ItemStack; import common.item.WieldType; -import common.model.Transform; +import common.model.GuiPosition; import common.world.World; public class ItemFishingRod extends Item diff --git a/common/src/main/java/common/item/tool/ItemHoe.java b/common/src/main/java/common/item/tool/ItemHoe.java index 0bd395e7..518c6ecd 100755 --- a/common/src/main/java/common/item/tool/ItemHoe.java +++ b/common/src/main/java/common/item/tool/ItemHoe.java @@ -8,7 +8,7 @@ import common.item.CheatTab; import common.item.Item; import common.item.ItemStack; import common.item.WieldType; -import common.model.Transform; +import common.model.GuiPosition; import common.util.BlockPos; import common.util.Facing; import common.world.State; diff --git a/common/src/main/java/common/item/tool/ItemMagnet.java b/common/src/main/java/common/item/tool/ItemMagnet.java index b125f932..146f8b40 100755 --- a/common/src/main/java/common/item/tool/ItemMagnet.java +++ b/common/src/main/java/common/item/tool/ItemMagnet.java @@ -10,7 +10,7 @@ import common.item.CheatTab; import common.item.Item; import common.item.ItemStack; import common.item.WieldType; -import common.model.Transform; +import common.model.GuiPosition; import common.util.BoundingBox; import common.util.Vec3; import common.world.World; diff --git a/common/src/main/java/common/item/tool/ItemTool.java b/common/src/main/java/common/item/tool/ItemTool.java index 578a9f10..ab477c2d 100755 --- a/common/src/main/java/common/item/tool/ItemTool.java +++ b/common/src/main/java/common/item/tool/ItemTool.java @@ -7,7 +7,7 @@ import common.item.CheatTab; import common.item.Item; import common.item.ItemStack; import common.item.WieldType; -import common.model.Transform; +import common.model.GuiPosition; import common.util.BlockPos; import common.world.World; diff --git a/common/src/main/java/common/item/tool/ItemWand.java b/common/src/main/java/common/item/tool/ItemWand.java index 2c75541d..a3647a25 100755 --- a/common/src/main/java/common/item/tool/ItemWand.java +++ b/common/src/main/java/common/item/tool/ItemWand.java @@ -9,7 +9,7 @@ import common.item.Item; import common.item.ItemControl; import common.item.ItemStack; import common.item.WieldType; -import common.model.Transform; +import common.model.GuiPosition; import common.util.BlockPos; import common.util.ExtMath; import common.util.Facing; diff --git a/common/src/main/java/common/item/weapon/ItemBow.java b/common/src/main/java/common/item/weapon/ItemBow.java index a3ef230f..14f1b8fe 100755 --- a/common/src/main/java/common/item/weapon/ItemBow.java +++ b/common/src/main/java/common/item/weapon/ItemBow.java @@ -11,7 +11,7 @@ import common.item.Item; import common.item.ItemAction; import common.item.ItemStack; import common.item.WieldType; -import common.model.Transform; +import common.model.GuiPosition; import common.world.World; public class ItemBow extends Item diff --git a/common/src/main/java/common/item/weapon/ItemGunBase.java b/common/src/main/java/common/item/weapon/ItemGunBase.java index 4003dd14..5e4588e4 100755 --- a/common/src/main/java/common/item/weapon/ItemGunBase.java +++ b/common/src/main/java/common/item/weapon/ItemGunBase.java @@ -11,7 +11,7 @@ import common.item.Item; import common.item.ItemAction; import common.item.ItemStack; import common.item.WieldType; -import common.model.Transform; +import common.model.GuiPosition; import common.rng.Random; import common.world.World; diff --git a/common/src/main/java/common/item/weapon/ItemSword.java b/common/src/main/java/common/item/weapon/ItemSword.java index 7a3b3f43..d59269f8 100755 --- a/common/src/main/java/common/item/weapon/ItemSword.java +++ b/common/src/main/java/common/item/weapon/ItemSword.java @@ -11,7 +11,7 @@ import common.item.Item; import common.item.ItemAction; import common.item.ItemStack; import common.item.WieldType; -import common.model.Transform; +import common.model.GuiPosition; import common.util.BlockPos; import common.world.World; diff --git a/common/src/main/java/common/model/Transform.java b/common/src/main/java/common/model/GuiPosition.java similarity index 89% rename from common/src/main/java/common/model/Transform.java rename to common/src/main/java/common/model/GuiPosition.java index a9d88a13..9a669e9a 100755 --- a/common/src/main/java/common/model/Transform.java +++ b/common/src/main/java/common/model/GuiPosition.java @@ -1,7 +1,7 @@ package common.model; -public enum Transform { - IDENTITY(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f), +public enum GuiPosition { + NORMAL(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f), DICE(135.0f, -55.0f, 180.0f, 0.0f, 0.0f, 0.0f, 2.75f), STAIRS(0.0f, 180.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f), SMALL(0.0f, 0.0f, 0.0f, 0.0f, 0.25f, 0.0f, 1.25f), @@ -22,7 +22,7 @@ public enum Transform { private final float translationZ; private final float scale; - private Transform(float rx, float ry, float rz, float tx, float ty, float tz, float scale) { + private GuiPosition(float rx, float ry, float rz, float tx, float ty, float tz, float scale) { this.rotationX = rx; this.rotationY = ry; this.rotationZ = rz; diff --git a/common/src/main/java/common/model/Model.java b/common/src/main/java/common/model/Model.java index ba446c87..27ca079f 100644 --- a/common/src/main/java/common/model/Model.java +++ b/common/src/main/java/common/model/Model.java @@ -10,7 +10,6 @@ public abstract class Model { public abstract Model rotate(float x, float y, float z, Facing.Axis axisIn, float angleIn, boolean rescaleIn); public abstract Model face(String texture, Facing... faces); public abstract Model cull(Facing cull); - public abstract Model tint(); public abstract Model rot(int rot); public abstract Model uv(float x1, float y1, float x2, float y2); public abstract String getPrimary(); @@ -48,14 +47,6 @@ public abstract class Model { .we().uv(0, 0, 16, 16).noCull(); } - public Model crossTint() { - return this - .add(0.8f, 0f, 8f, 15.2f, 16f, 8f).noShade().rotate(8, 8, 8, Facing.Axis.Y, 45, true) - .ns().uv(0, 0, 16, 16).noCull().tint() - .add(8f, 0f, 0.8f, 8f, 16f, 15.2f).noShade().rotate(8, 8, 8, Facing.Axis.Y, 45, true) - .we().uv(0, 0, 16, 16).noCull().tint(); - } - public Model stairs(boolean upper, boolean inner, boolean outer, boolean left, Facing dir, String down, String up) { this.add(0, 0, 0, 16, 8, 16).d(down).uv(0, 0, 16, 16).u(up).noCull().uv(0, 0, 16, 16).nswe().uv(0, 8, 16, 16); if(outer) diff --git a/common/src/main/java/common/model/ModelProvider.java b/common/src/main/java/common/model/ModelProvider.java index ab32f33e..22f71b88 100644 --- a/common/src/main/java/common/model/ModelProvider.java +++ b/common/src/main/java/common/model/ModelProvider.java @@ -35,10 +35,6 @@ public interface ModelProvider { return this; } - public Model tint() { - return this; - } - public Model rot(int rot) { return this; } diff --git a/common/src/main/java/common/model/TextureAnimation.java b/common/src/main/java/common/model/TextureAnimation.java index e8591430..3daf629e 100644 --- a/common/src/main/java/common/model/TextureAnimation.java +++ b/common/src/main/java/common/model/TextureAnimation.java @@ -1,5 +1,5 @@ package common.model; public enum TextureAnimation { - FIRE1, FIRE2, FLAME1, FLAME2, LAVAFLOW, LAVA, WATERFLOW, WATER; + FLAME_BASE, FLAME_OFFSET, BLACK_FLAME_BASE, BLACK_FLAME_OFFSET, BLUE_FLAME_BASE, BLUE_FLAME_OFFSET, MAGMA_FLOW, MAGMA_STILL, WATER_FLOW, WATER_STILL, SWAMP_WATER_FLOW, SWAMP_WATER_STILL; } diff --git a/common/src/main/java/common/util/PortalType.java b/common/src/main/java/common/util/PortalType.java index 91b7cd46..bf1d236d 100755 --- a/common/src/main/java/common/util/PortalType.java +++ b/common/src/main/java/common/util/PortalType.java @@ -1,5 +1,30 @@ package common.util; -public enum PortalType { - STAND_BLACK, STAND_RED, STAND_YELLOW, STAND_GREEN, STAND_CYAN, STAND_BLUE, STAND_MAGENTA, STAND_WHITE, FLOOR, VOID; +public enum PortalType implements Identifyable, Displayable { + DARK("dark", "Dunkles Portal"), + CRIMSON("crimson", "Crimson-Portal"), + SHINING("shining", "Schillernes Portal"), + ARCANE("arcane", "Geheimnisvolles Portal"), + RADIATING("radiating", "Strahlendes Portal"), + CHAOS("chaos", "Chaos-Portal"), + DEEP("deep", "Tiefes Portal"), + LIGHT("light", "Helles Portal"), + FLOOR("floor", "Flaches Portal"), + VOID("void", "Aus der Welt Fallen"); + + private final String name; + private final String display; + + private PortalType(String name, String display) { + this.name = name; + this.display = display; + } + + public String getName() { + return this.name; + } + + public String getDisplay() { + return this.display; + } } diff --git a/common/src/main/java/common/vars/Vars.java b/common/src/main/java/common/vars/Vars.java index 5dce0a3a..527ce181 100755 --- a/common/src/main/java/common/vars/Vars.java +++ b/common/src/main/java/common/vars/Vars.java @@ -141,10 +141,14 @@ public abstract class Vars { public static boolean darkDirtSpread = true; @Var(name = "grassDecay") public static boolean grassDecay = true; + @Var(name = "swampDecay") + public static boolean swampDecay = true; @Var(name = "blackenedSoilDecay") public static boolean darkSoilDecay = true; @Var(name = "grassDrying") public static boolean grassDry = true; + @Var(name = "swampDrying") + public static boolean swampDry = true; @Var(name = "tallgrassDrying") public static boolean tallgrassDry = true; @Var(name = "flowerDrying") diff --git a/common/src/main/java/common/world/AWorldServer.java b/common/src/main/java/common/world/AWorldServer.java index a4e32de6..b0a1a1ce 100644 --- a/common/src/main/java/common/world/AWorldServer.java +++ b/common/src/main/java/common/world/AWorldServer.java @@ -45,7 +45,6 @@ public abstract class AWorldServer extends World { public abstract void sendToAllTrackingEntity(Entity entityIn, Packet packet); public abstract boolean isDaytime(); public abstract int getSkylightSubtracted(); - public abstract boolean isBlockinHighHumidity(BlockPos pos); public abstract T findNearestEntityWithinAABB(Class entityType, BoundingBox aabb, T closestTo); public abstract void setBiome(BlockPos pos, Biome biome); public abstract void markChunkDirty(BlockPos pos); diff --git a/server/src/main/java/server/Server.java b/server/src/main/java/server/Server.java index 01de8f26..961b9381 100755 --- a/server/src/main/java/server/Server.java +++ b/server/src/main/java/server/Server.java @@ -96,7 +96,6 @@ import common.util.Var; import common.util.WorldPos; import common.vars.Vars; import common.world.World; -import server.biome.GenBiome; import server.clipboard.ReorderRegistry; import server.clipboard.RotationRegistry; import server.command.CommandEnvironment; @@ -109,6 +108,7 @@ import server.vars.SVar; import server.vars.SVars; import server.world.Region; import server.world.WorldServer; +import server.worldgen.biome.GenBiome; public final class Server implements IThreadListener, Executor { private final Thread thread = Thread.currentThread(); diff --git a/server/src/main/java/server/clipboard/ReorderRegistry.java b/server/src/main/java/server/clipboard/ReorderRegistry.java index d4748093..3a124dc4 100755 --- a/server/src/main/java/server/clipboard/ReorderRegistry.java +++ b/server/src/main/java/server/clipboard/ReorderRegistry.java @@ -8,6 +8,7 @@ import common.block.artificial.BlockBed; import common.block.artificial.BlockCarpet; import common.block.artificial.BlockDoor; import common.block.artificial.BlockFlowerPot; +import common.block.artificial.BlockPortal; import common.block.foliage.BlockDoublePlant; import common.block.foliage.BlockFlower; import common.block.tech.BlockAnvil; @@ -74,9 +75,12 @@ public abstract class ReorderRegistry { // PLACE_LAST.add(Blocks.lit_t); PLACE_LAST.add(Blocks.stone_button); PLACE_LAST.add(Blocks.snow_layer); - PLACE_LAST.add(Blocks.portal); + for(BlockPortal portal : BlockPortal.PORTALS) { + PLACE_LAST.add(portal); + } PLACE_LAST.add(Blocks.trapdoor); PLACE_LAST.add(Blocks.vine); + PLACE_LAST.add(Blocks.swamp_vine); PLACE_LAST.add(Blocks.waterlily); PLACE_LAST.add(Blocks.soul_warts); PLACE_LAST.add(Blocks.piston); diff --git a/server/src/main/java/server/world/Spawner.java b/server/src/main/java/server/world/Spawner.java index 32e19bde..6e650221 100755 --- a/server/src/main/java/server/world/Spawner.java +++ b/server/src/main/java/server/world/Spawner.java @@ -14,9 +14,9 @@ import common.util.BlockPos; import common.util.ChunkPos; import common.util.ExtMath; import common.world.World; -import server.biome.GenBiome; -import server.biome.RngSpawn; import server.vars.SVars; +import server.worldgen.biome.GenBiome; +import server.worldgen.biome.RngSpawn; public abstract class Spawner { private static final int MOB_COUNT_DIV = (int)Math.pow(17.0D, 2.0D); diff --git a/server/src/main/java/server/world/WorldServer.java b/server/src/main/java/server/world/WorldServer.java index 8b563bb6..368fc3c0 100755 --- a/server/src/main/java/server/world/WorldServer.java +++ b/server/src/main/java/server/world/WorldServer.java @@ -76,8 +76,6 @@ import common.world.State; import common.world.Weather; import common.world.World; import server.Server; -import server.biome.GenBiome; -import server.biome.RngSpawn; import server.clipboard.ClipboardBlock; import server.init.TeleportRegistry; import server.network.Player; @@ -105,6 +103,8 @@ import server.worldgen.ReplacerAltBiome; import server.worldgen.ReplacerAltSurface; import server.worldgen.ReplacerBiome; import server.worldgen.ReplacerTopLayer; +import server.worldgen.biome.GenBiome; +import server.worldgen.biome.RngSpawn; import server.worldgen.caves.MapGenBigCaves; import server.worldgen.caves.MapGenCaves; import server.worldgen.caves.MapGenRavine; @@ -2111,11 +2111,6 @@ public final class WorldServer extends AWorldServer { this.subtract = newSkylightSubtracted; } - public boolean isBlockinHighHumidity(BlockPos pos) { - Biome biomegenbase = this.getBiomeGenForCoords(pos); - return biomegenbase.isHighHumidity(); - } - public boolean canStrikeAt(BlockPos strikePosition) { if(!this.canSeeSky(strikePosition)) { return false; diff --git a/server/src/main/java/server/worldgen/FeatureLakes.java b/server/src/main/java/server/worldgen/FeatureLakes.java index 2f6fa824..e641cf41 100755 --- a/server/src/main/java/server/worldgen/FeatureLakes.java +++ b/server/src/main/java/server/worldgen/FeatureLakes.java @@ -7,8 +7,8 @@ import common.rng.Random; import common.util.BlockPos; import common.world.LightType; import common.world.State; -import server.biome.GenBiome; import server.world.WorldServer; +import server.worldgen.biome.GenBiome; public class FeatureLakes { diff --git a/server/src/main/java/server/worldgen/GeneratorPerlin.java b/server/src/main/java/server/worldgen/GeneratorPerlin.java index e02d8eea..1a4bd0e8 100755 --- a/server/src/main/java/server/worldgen/GeneratorPerlin.java +++ b/server/src/main/java/server/worldgen/GeneratorPerlin.java @@ -7,8 +7,8 @@ import common.rng.OctaveGen; import common.rng.Random; import common.util.ExtMath; import common.world.State; -import server.biome.GenBiome; import server.world.WorldServer; +import server.worldgen.biome.GenBiome; public class GeneratorPerlin implements ChunkGenerator { diff --git a/server/src/main/java/server/worldgen/MobConstants.java b/server/src/main/java/server/worldgen/MobConstants.java index 2300bf6e..fdf88815 100644 --- a/server/src/main/java/server/worldgen/MobConstants.java +++ b/server/src/main/java/server/worldgen/MobConstants.java @@ -5,7 +5,7 @@ import common.entity.npc.EntityMage; import common.entity.npc.EntityTiefling; import common.entity.npc.EntityUndead; import common.rng.WeightedList; -import server.biome.RngSpawn; +import server.worldgen.biome.RngSpawn; public abstract class MobConstants { public static final WeightedList MAGEHUT_MOBS = new WeightedList(new RngSpawn(EntityMage.class, 1, 1, 1)); diff --git a/server/src/main/java/server/worldgen/ReplacerAltBiome.java b/server/src/main/java/server/worldgen/ReplacerAltBiome.java index 8543e230..66549f0f 100755 --- a/server/src/main/java/server/worldgen/ReplacerAltBiome.java +++ b/server/src/main/java/server/worldgen/ReplacerAltBiome.java @@ -7,8 +7,8 @@ import common.rng.NoiseGen; import common.rng.OctaveGen; import common.rng.Random; import common.world.State; -import server.biome.GenBiome; import server.world.WorldServer; +import server.worldgen.biome.GenBiome; public class ReplacerAltBiome implements BlockReplacer { diff --git a/server/src/main/java/server/worldgen/ReplacerBiome.java b/server/src/main/java/server/worldgen/ReplacerBiome.java index 894b8df6..945755b4 100755 --- a/server/src/main/java/server/worldgen/ReplacerBiome.java +++ b/server/src/main/java/server/worldgen/ReplacerBiome.java @@ -3,8 +3,8 @@ package server.worldgen; import common.biome.Biome; import common.rng.PerlinGen; import common.rng.Random; -import server.biome.GenBiome; import server.world.WorldServer; +import server.worldgen.biome.GenBiome; public class ReplacerBiome implements BlockReplacer { diff --git a/server/src/main/java/server/biome/BiomeBeach.java b/server/src/main/java/server/worldgen/biome/BiomeBeach.java similarity index 85% rename from server/src/main/java/server/biome/BiomeBeach.java rename to server/src/main/java/server/worldgen/biome/BiomeBeach.java index a4dbee58..751fc627 100755 --- a/server/src/main/java/server/biome/BiomeBeach.java +++ b/server/src/main/java/server/worldgen/biome/BiomeBeach.java @@ -1,4 +1,4 @@ -package server.biome; +package server.worldgen.biome; import common.biome.Biome; import common.init.Blocks; @@ -8,7 +8,7 @@ public class BiomeBeach extends GenBiome { public BiomeBeach(boolean cold) { - super(cold ? Biome.COLDBEACH : Biome.BEACH); + super(cold ? Biome.ICE_BEACH : Biome.BEACH); this.topBlock = Blocks.sand.getState(); this.fillerBlock = Blocks.sand.getState(); this.treesPerChunk = -999; diff --git a/server/src/main/java/server/biome/BiomeBlackened.java b/server/src/main/java/server/worldgen/biome/BiomeBlackened.java similarity index 97% rename from server/src/main/java/server/biome/BiomeBlackened.java rename to server/src/main/java/server/worldgen/biome/BiomeBlackened.java index 653d486e..45c4c826 100644 --- a/server/src/main/java/server/biome/BiomeBlackened.java +++ b/server/src/main/java/server/worldgen/biome/BiomeBlackened.java @@ -1,4 +1,4 @@ -package server.biome; +package server.worldgen.biome; import common.biome.Biome; import common.block.foliage.BlockFlower; diff --git a/server/src/main/java/server/biome/BiomeChaos.java b/server/src/main/java/server/worldgen/biome/BiomeChaos.java similarity index 97% rename from server/src/main/java/server/biome/BiomeChaos.java rename to server/src/main/java/server/worldgen/biome/BiomeChaos.java index 0bd3c457..df4cfe53 100755 --- a/server/src/main/java/server/biome/BiomeChaos.java +++ b/server/src/main/java/server/worldgen/biome/BiomeChaos.java @@ -1,4 +1,4 @@ -package server.biome; +package server.worldgen.biome; import common.biome.Biome; import common.entity.Entity; diff --git a/server/src/main/java/server/biome/BiomeDesert.java b/server/src/main/java/server/worldgen/biome/BiomeDesert.java similarity index 92% rename from server/src/main/java/server/biome/BiomeDesert.java rename to server/src/main/java/server/worldgen/biome/BiomeDesert.java index 0171ff5c..1b680803 100755 --- a/server/src/main/java/server/biome/BiomeDesert.java +++ b/server/src/main/java/server/worldgen/biome/BiomeDesert.java @@ -1,4 +1,4 @@ -package server.biome; +package server.worldgen.biome; import common.biome.Biome; import common.init.Blocks; @@ -12,7 +12,7 @@ public class BiomeDesert extends GenBiome { public BiomeDesert(boolean hills) { - super(hills ? Biome.DESERTHILLS : Biome.DESERT); + super(hills ? Biome.DESERT_HILLS : Biome.DESERT); this.topBlock = Blocks.sand.getState(); this.fillerBlock = Blocks.sand.getState(); this.treesPerChunk = -999; diff --git a/server/src/main/java/server/biome/BiomeExterminated.java b/server/src/main/java/server/worldgen/biome/BiomeExterminated.java similarity index 94% rename from server/src/main/java/server/biome/BiomeExterminated.java rename to server/src/main/java/server/worldgen/biome/BiomeExterminated.java index 78b55fde..dec157ed 100755 --- a/server/src/main/java/server/biome/BiomeExterminated.java +++ b/server/src/main/java/server/worldgen/biome/BiomeExterminated.java @@ -1,4 +1,4 @@ -package server.biome; +package server.worldgen.biome; import common.biome.Biome; import common.init.Blocks; diff --git a/server/src/main/java/server/biome/BiomeForest.java b/server/src/main/java/server/worldgen/biome/BiomeForest.java similarity index 98% rename from server/src/main/java/server/biome/BiomeForest.java rename to server/src/main/java/server/worldgen/biome/BiomeForest.java index af373827..ee8f3469 100755 --- a/server/src/main/java/server/biome/BiomeForest.java +++ b/server/src/main/java/server/worldgen/biome/BiomeForest.java @@ -1,4 +1,4 @@ -package server.biome; +package server.worldgen.biome; import common.biome.Biome; import common.block.foliage.BlockDoublePlant; @@ -210,7 +210,7 @@ public class BiomeForest extends GenBiome } else { - return this.base != Biome.BIRCHFOREST && this.base != Biome.BIRCHFORESTHILLS ? new BiomeMutated(base, this) + return this.base != Biome.BIRCH_FOREST && this.base != Biome.BIRCH_HILLS ? new BiomeMutated(base, this) { public void decorate(WorldServer worldIn, Random rand, BlockPos pos) { diff --git a/server/src/main/java/server/biome/BiomeHell.java b/server/src/main/java/server/worldgen/biome/BiomeHell.java similarity index 99% rename from server/src/main/java/server/biome/BiomeHell.java rename to server/src/main/java/server/worldgen/biome/BiomeHell.java index 37388adc..65d3ad8c 100755 --- a/server/src/main/java/server/biome/BiomeHell.java +++ b/server/src/main/java/server/worldgen/biome/BiomeHell.java @@ -1,4 +1,4 @@ -package server.biome; +package server.worldgen.biome; import common.biome.Biome; import common.entity.npc.EntityBloodElf; diff --git a/server/src/main/java/server/biome/BiomeHills.java b/server/src/main/java/server/worldgen/biome/BiomeHills.java similarity index 99% rename from server/src/main/java/server/biome/BiomeHills.java rename to server/src/main/java/server/worldgen/biome/BiomeHills.java index 1ec2ed97..ee65713f 100755 --- a/server/src/main/java/server/biome/BiomeHills.java +++ b/server/src/main/java/server/worldgen/biome/BiomeHills.java @@ -1,4 +1,4 @@ -package server.biome; +package server.worldgen.biome; import common.biome.Biome; import common.init.Blocks; diff --git a/server/src/main/java/server/biome/BiomeJungle.java b/server/src/main/java/server/worldgen/biome/BiomeJungle.java similarity index 98% rename from server/src/main/java/server/biome/BiomeJungle.java rename to server/src/main/java/server/worldgen/biome/BiomeJungle.java index 3b22efa3..4697daa2 100755 --- a/server/src/main/java/server/biome/BiomeJungle.java +++ b/server/src/main/java/server/worldgen/biome/BiomeJungle.java @@ -1,4 +1,4 @@ -package server.biome; +package server.worldgen.biome; import common.biome.Biome; import common.entity.animal.EntityChicken; diff --git a/server/src/main/java/server/biome/BiomeMesa.java b/server/src/main/java/server/worldgen/biome/BiomeMesa.java similarity index 99% rename from server/src/main/java/server/biome/BiomeMesa.java rename to server/src/main/java/server/worldgen/biome/BiomeMesa.java index 9440b4b0..0d1fb243 100755 --- a/server/src/main/java/server/biome/BiomeMesa.java +++ b/server/src/main/java/server/worldgen/biome/BiomeMesa.java @@ -1,4 +1,4 @@ -package server.biome; +package server.worldgen.biome; import java.util.Arrays; diff --git a/server/src/main/java/server/biome/BiomeMoon.java b/server/src/main/java/server/worldgen/biome/BiomeMoon.java similarity index 95% rename from server/src/main/java/server/biome/BiomeMoon.java rename to server/src/main/java/server/worldgen/biome/BiomeMoon.java index cab5cfc7..3a970da0 100755 --- a/server/src/main/java/server/biome/BiomeMoon.java +++ b/server/src/main/java/server/worldgen/biome/BiomeMoon.java @@ -1,4 +1,4 @@ -package server.biome; +package server.worldgen.biome; import common.biome.Biome; import common.init.Blocks; diff --git a/server/src/main/java/server/biome/BiomeMushroom.java b/server/src/main/java/server/worldgen/biome/BiomeMushroom.java similarity index 90% rename from server/src/main/java/server/biome/BiomeMushroom.java rename to server/src/main/java/server/worldgen/biome/BiomeMushroom.java index 5e9633f3..bcae4661 100755 --- a/server/src/main/java/server/biome/BiomeMushroom.java +++ b/server/src/main/java/server/worldgen/biome/BiomeMushroom.java @@ -1,4 +1,4 @@ -package server.biome; +package server.worldgen.biome; import common.biome.Biome; import common.entity.npc.EntityDwarf; @@ -7,7 +7,7 @@ import common.rng.WeightedList; public class BiomeMushroom extends GenBiome { public BiomeMushroom() { - super(Biome.MUSHROOMPLAINS); + super(Biome.MUSHROOM); this.treesPerChunk = -100; this.flowersPerChunk = -100; this.grassPerChunk = -100; diff --git a/server/src/main/java/server/biome/BiomeMutated.java b/server/src/main/java/server/worldgen/biome/BiomeMutated.java similarity index 98% rename from server/src/main/java/server/biome/BiomeMutated.java rename to server/src/main/java/server/worldgen/biome/BiomeMutated.java index 91b3dfb3..5534dda8 100755 --- a/server/src/main/java/server/biome/BiomeMutated.java +++ b/server/src/main/java/server/worldgen/biome/BiomeMutated.java @@ -1,4 +1,4 @@ -package server.biome; +package server.worldgen.biome; import common.biome.Biome; import common.rng.Random; diff --git a/server/src/main/java/server/biome/BiomeNone.java b/server/src/main/java/server/worldgen/biome/BiomeNone.java similarity index 95% rename from server/src/main/java/server/biome/BiomeNone.java rename to server/src/main/java/server/worldgen/biome/BiomeNone.java index f3ef796e..9f1278e4 100755 --- a/server/src/main/java/server/biome/BiomeNone.java +++ b/server/src/main/java/server/worldgen/biome/BiomeNone.java @@ -1,4 +1,4 @@ -package server.biome; +package server.worldgen.biome; import common.biome.Biome; import common.init.Blocks; diff --git a/server/src/main/java/server/biome/BiomePlains.java b/server/src/main/java/server/worldgen/biome/BiomePlains.java similarity index 98% rename from server/src/main/java/server/biome/BiomePlains.java rename to server/src/main/java/server/worldgen/biome/BiomePlains.java index db96fa6c..5c2d60ad 100755 --- a/server/src/main/java/server/biome/BiomePlains.java +++ b/server/src/main/java/server/worldgen/biome/BiomePlains.java @@ -1,4 +1,4 @@ -package server.biome; +package server.worldgen.biome; import common.biome.Biome; import common.block.foliage.BlockFlower; @@ -23,7 +23,7 @@ public class BiomePlains extends GenBiome protected BiomePlains() { - super(Biome.PLAINS); + super(Biome.PLAIN); this.setScaling(Scaling.PLAINS_LOW); this.mobs.add(new RngSpawn(EntityHorse.class, 5, 2, 6)); this.treesPerChunk = -999; diff --git a/server/src/main/java/server/biome/BiomeSavanna.java b/server/src/main/java/server/worldgen/biome/BiomeSavanna.java similarity index 96% rename from server/src/main/java/server/biome/BiomeSavanna.java rename to server/src/main/java/server/worldgen/biome/BiomeSavanna.java index 78b6bd2a..7b2b5583 100755 --- a/server/src/main/java/server/biome/BiomeSavanna.java +++ b/server/src/main/java/server/worldgen/biome/BiomeSavanna.java @@ -1,4 +1,4 @@ -package server.biome; +package server.worldgen.biome; import common.biome.Biome; import common.entity.animal.EntityHorse; @@ -16,7 +16,7 @@ public class BiomeSavanna extends GenBiome protected BiomeSavanna(boolean plateau) { - super(plateau ? Biome.SAVANNAPLATEAU : Biome.SAVANNA); + super(plateau ? Biome.SAVANNA_PLATEAU : Biome.SAVANNA); this.mobs.add(new RngSpawn(EntityHorse.class, 1, 2, 6)); this.treesPerChunk = 1; this.flowersPerChunk = 4; diff --git a/server/src/main/java/server/biome/BiomeSnow.java b/server/src/main/java/server/worldgen/biome/BiomeSnow.java similarity index 98% rename from server/src/main/java/server/biome/BiomeSnow.java rename to server/src/main/java/server/worldgen/biome/BiomeSnow.java index ea236f24..91adb979 100755 --- a/server/src/main/java/server/biome/BiomeSnow.java +++ b/server/src/main/java/server/worldgen/biome/BiomeSnow.java @@ -1,4 +1,4 @@ -package server.biome; +package server.worldgen.biome; import common.biome.Biome; import common.init.Blocks; diff --git a/server/src/main/java/server/biome/BiomeSnowLand.java b/server/src/main/java/server/worldgen/biome/BiomeSnowLand.java similarity index 90% rename from server/src/main/java/server/biome/BiomeSnowLand.java rename to server/src/main/java/server/worldgen/biome/BiomeSnowLand.java index 37295eaa..e9c3903f 100755 --- a/server/src/main/java/server/biome/BiomeSnowLand.java +++ b/server/src/main/java/server/worldgen/biome/BiomeSnowLand.java @@ -1,4 +1,4 @@ -package server.biome; +package server.worldgen.biome; import common.biome.Biome; import common.entity.animal.EntitySheep; @@ -10,7 +10,7 @@ public class BiomeSnowLand extends GenBiome { public BiomeSnowLand() { - super(Biome.SNOWLAND); + super(Biome.SNOW); this.topBlock = Blocks.snow.getState(); this.fillerBlock = Blocks.snow.getState(); this.mushroomsPerChunk = -1; diff --git a/server/src/main/java/server/biome/BiomeSpace.java b/server/src/main/java/server/worldgen/biome/BiomeSpace.java similarity index 97% rename from server/src/main/java/server/biome/BiomeSpace.java rename to server/src/main/java/server/worldgen/biome/BiomeSpace.java index 75c8f3bb..925b1fe5 100755 --- a/server/src/main/java/server/biome/BiomeSpace.java +++ b/server/src/main/java/server/worldgen/biome/BiomeSpace.java @@ -1,4 +1,4 @@ -package server.biome; +package server.worldgen.biome; import common.biome.Biome; import common.init.Blocks; diff --git a/server/src/main/java/server/biome/BiomeStoneBeach.java b/server/src/main/java/server/worldgen/biome/BiomeStoneBeach.java similarity index 88% rename from server/src/main/java/server/biome/BiomeStoneBeach.java rename to server/src/main/java/server/worldgen/biome/BiomeStoneBeach.java index 47a4c5b5..0734b434 100755 --- a/server/src/main/java/server/biome/BiomeStoneBeach.java +++ b/server/src/main/java/server/worldgen/biome/BiomeStoneBeach.java @@ -1,4 +1,4 @@ -package server.biome; +package server.worldgen.biome; import common.biome.Biome; import common.init.Blocks; @@ -8,7 +8,7 @@ public class BiomeStoneBeach extends GenBiome { public BiomeStoneBeach() { - super(Biome.STONEBEACH); + super(Biome.STONE_BEACH); // this.mobs.clear(); this.topBlock = Blocks.stone.getState(); this.fillerBlock = Blocks.stone.getState(); diff --git a/server/src/main/java/server/biome/BiomeSwamp.java b/server/src/main/java/server/worldgen/biome/BiomeSwamp.java similarity index 72% rename from server/src/main/java/server/biome/BiomeSwamp.java rename to server/src/main/java/server/worldgen/biome/BiomeSwamp.java index 157ec583..066615ab 100755 --- a/server/src/main/java/server/biome/BiomeSwamp.java +++ b/server/src/main/java/server/worldgen/biome/BiomeSwamp.java @@ -1,4 +1,4 @@ -package server.biome; +package server.worldgen.biome; import common.biome.Biome; import common.block.foliage.BlockFlower; @@ -10,13 +10,19 @@ import common.util.BlockPos; import common.util.Facing; import server.world.WorldServer; import server.worldgen.ChunkPrimer; +import server.worldgen.FeatureGenerator; +import server.worldgen.foliage.WorldGenTallGrass; +import server.worldgen.tree.WorldGenSwamp; import server.worldgen.tree.WorldGenTree; public class BiomeSwamp extends GenBiome { + protected final WorldGenSwamp worldGeneratorSwamp = new WorldGenSwamp(); + protected BiomeSwamp() { - super(Biome.SWAMPLAND); + super(Biome.SWAMP); + this.topBlock = Blocks.swamp.getState(); this.treesPerChunk = 2; this.flowersPerChunk = 1; this.deadBushPerChunk = 1; @@ -40,9 +46,15 @@ public class BiomeSwamp extends GenBiome { return BlockFlower.EnumFlowerType.BLUE_ORCHID; } + + public FeatureGenerator getRandomWorldGenForGrass(Random rand) + { + return new WorldGenTallGrass(Blocks.swamp_grass); + } public void genTerrainBlocks(WorldServer worldIn, Random rand, ChunkPrimer chunkPrimerIn, int x, int z, double noiseVal) { + int sea = worldIn.getSeaLevel() - 1; double d0 = GRASS_NOISE.generate((double)x * 0.25D, (double)z * 0.25D); if (d0 > 0.0D) @@ -54,9 +66,10 @@ public class BiomeSwamp extends GenBiome { if (chunkPrimerIn.get(j, k, i).getBlock() != Blocks.air) { - if (k == 62 && chunkPrimerIn.get(j, k, i).getBlock() != Blocks.water) + if (k == sea) { - chunkPrimerIn.set(j, k, i, Blocks.water.getState()); + if(!chunkPrimerIn.get(j, k, i).getBlock().getMaterial().isLiquid() || k <= 0 || !chunkPrimerIn.get(j, k - 1, i).getBlock().getMaterial().isLiquid()) + chunkPrimerIn.set(j, k, i, Blocks.swamp_water.getState()); if (d0 < 0.12D) { diff --git a/server/src/main/java/server/biome/BiomeTaiga.java b/server/src/main/java/server/worldgen/biome/BiomeTaiga.java similarity index 95% rename from server/src/main/java/server/biome/BiomeTaiga.java rename to server/src/main/java/server/worldgen/biome/BiomeTaiga.java index e5167526..ca604fe1 100755 --- a/server/src/main/java/server/biome/BiomeTaiga.java +++ b/server/src/main/java/server/worldgen/biome/BiomeTaiga.java @@ -1,4 +1,4 @@ -package server.biome; +package server.worldgen.biome; import common.biome.Biome; import common.entity.animal.EntityWolf; @@ -107,6 +107,6 @@ public class BiomeTaiga extends GenBiome protected GenBiome createMutatedBiome(Biome base) { - return this.base == Biome.MEGATAIGA ? (new BiomeTaiga(base, 2)).setScaling(this.depth, this.scale) : super.createMutatedBiome(base); + return this.base == Biome.LARGE_TAIGA ? (new BiomeTaiga(base, 2)).setScaling(this.depth, this.scale) : super.createMutatedBiome(base); } } diff --git a/server/src/main/java/server/biome/BiomeTian.java b/server/src/main/java/server/worldgen/biome/BiomeTian.java similarity index 99% rename from server/src/main/java/server/biome/BiomeTian.java rename to server/src/main/java/server/worldgen/biome/BiomeTian.java index 3fbd6702..a2ff2485 100755 --- a/server/src/main/java/server/biome/BiomeTian.java +++ b/server/src/main/java/server/worldgen/biome/BiomeTian.java @@ -1,4 +1,4 @@ -package server.biome; +package server.worldgen.biome; import common.biome.Biome; import common.block.foliage.BlockFlower; diff --git a/server/src/main/java/server/biome/BiomeWater.java b/server/src/main/java/server/worldgen/biome/BiomeWater.java similarity index 94% rename from server/src/main/java/server/biome/BiomeWater.java rename to server/src/main/java/server/worldgen/biome/BiomeWater.java index 007ecccb..141bcc3f 100755 --- a/server/src/main/java/server/biome/BiomeWater.java +++ b/server/src/main/java/server/worldgen/biome/BiomeWater.java @@ -1,4 +1,4 @@ -package server.biome; +package server.worldgen.biome; import common.biome.Biome; import common.entity.npc.EntityMerfolk; diff --git a/server/src/main/java/server/biome/GenBiome.java b/server/src/main/java/server/worldgen/biome/GenBiome.java similarity index 91% rename from server/src/main/java/server/biome/GenBiome.java rename to server/src/main/java/server/worldgen/biome/GenBiome.java index a56355c6..31b162e8 100755 --- a/server/src/main/java/server/biome/GenBiome.java +++ b/server/src/main/java/server/worldgen/biome/GenBiome.java @@ -1,4 +1,4 @@ -package server.biome; +package server.worldgen.biome; import common.biome.Biome; import common.biome.IBiome; @@ -63,7 +63,7 @@ public abstract class GenBiome implements IBiome { public static final GenBiome plains = (new BiomePlains()); public static final GenBiome desert = (new BiomeDesert(false)).setScaling(Scaling.PLAINS_LOW); - public static final GenBiome extremeHills = (new BiomeHills(Biome.EXTREMEHILLS, false)).setScaling(Scaling.HILLS_LARGE); + public static final GenBiome extremeHills = (new BiomeHills(Biome.HILLS, false)).setScaling(Scaling.HILLS_LARGE); public static final GenBiome forest = (new BiomeForest(Biome.FOREST, 0)); public static final GenBiome taiga = (new BiomeTaiga(Biome.TAIGA, 0)).setScaling(Scaling.PLAINS_MEDIUM); public static final GenBiome swampland = (new BiomeSwamp()).setScaling(Scaling.SEA_POND); @@ -72,46 +72,46 @@ public abstract class GenBiome implements IBiome { public static final GenBiome exterminated = (new BiomeExterminated()); public static final GenBiome space = (new BiomeSpace()); - public static final GenBiome frozenSea = (new BiomeWater(Biome.FROZENSEA, false)).enableColdBeach().setScaling(Scaling.SEA_MEDIUM); - public static final GenBiome frozenRiver = (new BiomeWater(Biome.FROZENRIVER, true)).enableColdBeach().setScaling(Scaling.SEA_SHALLOW); - public static final GenBiome icePlains = (new BiomeSnow(Biome.ICEPLAINS, false)).enableColdBeach().setScaling(Scaling.PLAINS_LOW); - public static final GenBiome iceMountains = (new BiomeSnow(Biome.ICEMOUNTAINS, false)).enableColdBeach().setScaling(Scaling.HILLS_LOW); + public static final GenBiome frozenSea = (new BiomeWater(Biome.ICE_SEA, false)).enableColdBeach().setScaling(Scaling.SEA_MEDIUM); + public static final GenBiome frozenRiver = (new BiomeWater(Biome.ICE_RIVER, true)).enableColdBeach().setScaling(Scaling.SEA_SHALLOW); + public static final GenBiome icePlains = (new BiomeSnow(Biome.ICE, false)).enableColdBeach().setScaling(Scaling.PLAINS_LOW); + public static final GenBiome iceMountains = (new BiomeSnow(Biome.ICE_HILLS, false)).enableColdBeach().setScaling(Scaling.HILLS_LOW); public static final GenBiome mushroomPlains = (new BiomeMushroom()).setScaling(Scaling.PLAINS_VARYING); public static final GenBiome blackened = (new BiomeBlackened()); public static final GenBiome beach = (new BiomeBeach(false)).setScaling(Scaling.SEA_SHORE); public static final GenBiome desertHills = (new BiomeDesert(true)).setScaling(Scaling.HILLS_LOW); - public static final GenBiome forestHills = (new BiomeForest(Biome.FORESTHILLS, 0)).setScaling(Scaling.HILLS_LOW); - public static final GenBiome taigaHills = (new BiomeTaiga(Biome.TAIGAHILLS, 0)).setScaling(Scaling.HILLS_LOW); - public static final GenBiome extremeHillsEdge = (new BiomeHills(Biome.EXTREMEHILLSEDGE, true)).setScaling(Scaling.HILLS_MEDIUM); - public static final GenBiome jungle = (new BiomeJungle(Biome.JUNGLE, false)); - public static final GenBiome jungleHills = (new BiomeJungle(Biome.JUNGLEHILLS, false)).setScaling(Scaling.HILLS_LOW); - public static final GenBiome jungleEdge = (new BiomeJungle(Biome.JUNGLEEDGE, true)); + public static final GenBiome forestHills = (new BiomeForest(Biome.FOREST_HILLS, 0)).setScaling(Scaling.HILLS_LOW); + public static final GenBiome taigaHills = (new BiomeTaiga(Biome.TAIGA_HILLS, 0)).setScaling(Scaling.HILLS_LOW); + public static final GenBiome extremeHillsEdge = (new BiomeHills(Biome.HILLS_EDGE, true)).setScaling(Scaling.HILLS_MEDIUM); + public static final GenBiome jungle = (new BiomeJungle(Biome.TROPIC, false)); + public static final GenBiome jungleHills = (new BiomeJungle(Biome.TROPIC_HILLS, false)).setScaling(Scaling.HILLS_LOW); + public static final GenBiome jungleEdge = (new BiomeJungle(Biome.TROPIC_EDGE, true)); public static final GenBiome sea = (new BiomeWater(Biome.SEA, false)).setScaling(Scaling.SEA_MEDIUM); public static final GenBiome stoneBeach = (new BiomeStoneBeach()).setScaling(Scaling.SEA_VARYING); public static final GenBiome coldBeach = (new BiomeBeach(true)).setScaling(Scaling.SEA_SHORE).enableColdBeach(); - public static final GenBiome birchForest = (new BiomeForest(Biome.BIRCHFOREST, 2)); - public static final GenBiome birchForestHills = (new BiomeForest(Biome.BIRCHFORESTHILLS, 2)).setScaling(Scaling.HILLS_LOW); - public static final GenBiome roofedForest = (new BiomeForest(Biome.ROOFEDFOREST, 3)); - public static final GenBiome coldTaiga = (new BiomeTaiga(Biome.COLDTAIGA, 0)).enableColdBeach().setScaling(Scaling.PLAINS_MEDIUM); - public static final GenBiome coldTaigaHills = (new BiomeTaiga(Biome.COLDTAIGAHILLS, 0)).enableColdBeach().setScaling(Scaling.HILLS_LOW); - public static final GenBiome megaTaiga = (new BiomeTaiga(Biome.MEGATAIGA, 1)).setScaling(Scaling.PLAINS_MEDIUM); - public static final GenBiome megaTaigaHills = (new BiomeTaiga(Biome.MEGATAIGAHILLS, 1)).setScaling(Scaling.HILLS_LOW); - public static final GenBiome extremeHillsPlus = (new BiomeHills(Biome.EXTREMEHILLSPLUS, true)).setScaling(Scaling.HILLS_LARGE); + public static final GenBiome birchForest = (new BiomeForest(Biome.BIRCH_FOREST, 2)); + public static final GenBiome birchForestHills = (new BiomeForest(Biome.BIRCH_HILLS, 2)).setScaling(Scaling.HILLS_LOW); + public static final GenBiome roofedForest = (new BiomeForest(Biome.DARK_FOREST, 3)); + public static final GenBiome coldTaiga = (new BiomeTaiga(Biome.ICE_TAIGA, 0)).enableColdBeach().setScaling(Scaling.PLAINS_MEDIUM); + public static final GenBiome coldTaigaHills = (new BiomeTaiga(Biome.ICE_TAIGA_HILLS, 0)).enableColdBeach().setScaling(Scaling.HILLS_LOW); + public static final GenBiome megaTaiga = (new BiomeTaiga(Biome.LARGE_TAIGA, 1)).setScaling(Scaling.PLAINS_MEDIUM); + public static final GenBiome megaTaigaHills = (new BiomeTaiga(Biome.LARGE_TAIGA_HILLS, 1)).setScaling(Scaling.HILLS_LOW); + public static final GenBiome extremeHillsPlus = (new BiomeHills(Biome.LARGE_HILLS, true)).setScaling(Scaling.HILLS_LARGE); public static final GenBiome savanna = (new BiomeSavanna(false)).setScaling(Scaling.PLAINS_LOW); public static final GenBiome savannaPlateau = (new BiomeSavanna(true)).setScaling(Scaling.HILLS_PLATEAU); public static final GenBiome mesa = (new BiomeMesa(Biome.MESA, false, false)); - public static final GenBiome mesaPlateau_F = (new BiomeMesa(Biome.MESAPLATEAUF, false, true)).setScaling(Scaling.HILLS_PLATEAU); - public static final GenBiome mesaPlateau = (new BiomeMesa(Biome.MESAPLATEAU, false, false)).setScaling(Scaling.HILLS_PLATEAU); + public static final GenBiome mesaPlateau_F = (new BiomeMesa(Biome.MESA_FOREST, false, true)).setScaling(Scaling.HILLS_PLATEAU); + public static final GenBiome mesaPlateau = (new BiomeMesa(Biome.MESA_PLATEAU, false, false)).setScaling(Scaling.HILLS_PLATEAU); public static final GenBiome snowLand = (new BiomeSnowLand()).enableColdBeach(); public static final GenBiome tian = (new BiomeTian()).setScaling(Scaling.VARYING_MEDIUM); - public static final GenBiome elvenForest = (new BiomeForest(Biome.ELVENFOREST, 4)); - public static final GenBiome upperHell = (new BiomeHell(Biome.UPPERHELL, 0)); - public static final GenBiome lowerHell = (new BiomeHell(Biome.LOWERHELL, 1)); - public static final GenBiome hellHills = (new BiomeHell(Biome.HELLHILLS, 1)).setScaling(Scaling.HILLS_LARGE); - public static final GenBiome soulPlains = (new BiomeHell(Biome.SOULPLAINS, 1)).setScaling(Scaling.SEA_POND); - public static final GenBiome ashLand = (new BiomeHell(Biome.ASHLAND, 2)).setScaling(Scaling.PLAINS_LOW); + public static final GenBiome elvenForest = (new BiomeForest(Biome.ELVEN_FOREST, 4)); + public static final GenBiome upperHell = (new BiomeHell(Biome.UPPER_HELL, 0)); + public static final GenBiome lowerHell = (new BiomeHell(Biome.LOWER_HELL, 1)); + public static final GenBiome hellHills = (new BiomeHell(Biome.HELL_HILLS, 1)).setScaling(Scaling.HILLS_LARGE); + public static final GenBiome soulPlains = (new BiomeHell(Biome.SOUL_PLAINS, 1)).setScaling(Scaling.SEA_POND); + public static final GenBiome ashLand = (new BiomeHell(Biome.ASH, 2)).setScaling(Scaling.PLAINS_LOW); public static final GenBiome moon = (new BiomeMoon()).setScaling(Scaling.PLAINS_LOW); public static final GenBiome chaos = (new BiomeChaos()).setScaling(Scaling.VARYING_CHAOTIC); @@ -124,7 +124,6 @@ public abstract class GenBiome implements IBiome { protected final WeightedList mobs = new WeightedList(); protected final WorldGenBaseTree worldGeneratorTrees = new WorldGenBaseTree(false); protected final WorldGenBigTree worldGeneratorBigTree = new WorldGenBigTree(false); - protected final WorldGenSwamp worldGeneratorSwamp = new WorldGenSwamp(); private final FeatureGenerator clayGen = new WorldGenClay(4); private final FeatureGenerator sandGen = new WorldGenSand(Blocks.sand, 7); private final FeatureGenerator gravelAsSandGen = new WorldGenSand(Blocks.gravel, 6); @@ -137,6 +136,7 @@ public abstract class GenBiome implements IBiome { private final FeatureGenerator waterlilyGen = new WorldGenWaterlily(); private final FeatureGenerator clayGenExt = new WorldGenClayExt(32); + public Biome mutated = null; public State topBlock = Blocks.grass.getState(); public State fillerBlock = Blocks.dirt.getState(); public float depth = Scaling.VARYING_LOW.depth; @@ -182,26 +182,26 @@ public abstract class GenBiome implements IBiome { } static { - desert.createMutatedBiome(Biome.DESERTM); - forest.createMutatedBiome(Biome.FLOWERFOREST); - taiga.createMutatedBiome(Biome.TAIGAM); - swampland.createMutatedBiome(Biome.SWAMPLANDM); - icePlains.createMutatedBiome(Biome.ICEPLAINSSPIKES); - jungle.createMutatedBiome(Biome.JUNGLEM); - jungleEdge.createMutatedBiome(Biome.JUNGLEEDGEM); - coldTaiga.createMutatedBiome(Biome.COLDTAIGAM); - savanna.createMutatedBiome(Biome.SAVANNAM); - savannaPlateau.createMutatedBiome(Biome.SAVANNAPLATEAUM); - mesa.createMutatedBiome(Biome.MESABRYCE); - mesaPlateau_F.createMutatedBiome(Biome.MESAPLATEAUFM); - mesaPlateau.createMutatedBiome(Biome.MESAPLATEAUM); - birchForest.createMutatedBiome(Biome.BIRCHFORESTM); - birchForestHills.createMutatedBiome(Biome.BIRCHFORESTHILLSM); - roofedForest.createMutatedBiome(Biome.ROOFEDFORESTM); - megaTaiga.createMutatedBiome(Biome.MEGASPRUCETAIGA); - extremeHills.createMutatedBiome(Biome.EXTREMEHILLSM); - extremeHillsPlus.createMutatedBiome(Biome.EXTREMEHILLSPLUSM); - megaTaiga.createMutatedBiome(Biome.REDWOODTAIGAHILLSM); + desert.mutate(Biome.DESERT_MOD); + forest.mutate(Biome.FLOWER_FOREST); + taiga.mutate(Biome.TAIGA_MOD); + swampland.mutate(Biome.SWAMP_MOD); + icePlains.mutate(Biome.ICE_SPIKES); + jungle.mutate(Biome.TROPIC_MOD); + jungleEdge.mutate(Biome.TROPIC_EDGE_MOD); + coldTaiga.mutate(Biome.ICE_TAIGA_MOD); + savanna.mutate(Biome.SAVANNA_MOD); + savannaPlateau.mutate(Biome.SAVANNA_PLATEAU_MOD); + mesa.mutate(Biome.MESA_PEAK); + mesaPlateau_F.mutate(Biome.MESA_FOREST_MOD); + mesaPlateau.mutate(Biome.MESA_PLATEAU_MOD); + birchForest.mutate(Biome.BIRCH_FOREST_MOD); + birchForestHills.mutate(Biome.BIRCH_HILLS_MOD); + roofedForest.mutate(Biome.DARK_FOREST_MOD); + megaTaiga.mutate(Biome.SPRUCE_TAIGA); + extremeHills.mutate(Biome.HILLS_MOD); + extremeHillsPlus.mutate(Biome.LARGE_HILLS_MOD); + megaTaiga.mutate(Biome.REDWOOD_TAIGA); } protected GenBiome(Biome base) { @@ -244,10 +244,10 @@ public abstract class GenBiome implements IBiome { return rand.chance(10) ? this.worldGeneratorBigTree : this.worldGeneratorTrees; } - public WorldGenTree genBigTreeLegacy(Random rand, BlockPos pos) + public WorldGenTree genBigTreeLegacy(Random rand, BlockPos pos, boolean humid) { int noise = (int)((TREE_NOISE.generate((double)pos.getX() * 0.5D, (double)pos.getZ() * 0.5D) / 8D + rand.doublev() * 4D + 4D) / 3D); - return (noise > 0 && rand.chance(noise)) || (this.base.isHighHumidity() && rand.chance(3)) ? this.worldGeneratorBigTree : + return (noise > 0 && rand.chance(noise)) || (humid && rand.chance(3)) ? this.worldGeneratorBigTree : this.worldGeneratorTrees; } @@ -850,6 +850,11 @@ public abstract class GenBiome implements IBiome { { return new BiomeMutated(base, this); } + + private void mutate(Biome base) + { + this.createMutatedBiome(this.mutated = base); + } public Class getBiomeClass() { diff --git a/server/src/main/java/server/biome/RngSpawn.java b/server/src/main/java/server/worldgen/biome/RngSpawn.java similarity index 92% rename from server/src/main/java/server/biome/RngSpawn.java rename to server/src/main/java/server/worldgen/biome/RngSpawn.java index 140c20b7..abd00e84 100644 --- a/server/src/main/java/server/biome/RngSpawn.java +++ b/server/src/main/java/server/worldgen/biome/RngSpawn.java @@ -1,4 +1,4 @@ -package server.biome; +package server.worldgen.biome; import common.entity.types.EntityLiving; import common.rng.RngItem; diff --git a/server/src/main/java/server/biome/Scaling.java b/server/src/main/java/server/worldgen/biome/Scaling.java similarity index 95% rename from server/src/main/java/server/biome/Scaling.java rename to server/src/main/java/server/worldgen/biome/Scaling.java index 1dadf62e..eecc2537 100644 --- a/server/src/main/java/server/biome/Scaling.java +++ b/server/src/main/java/server/worldgen/biome/Scaling.java @@ -1,4 +1,4 @@ -package server.biome; +package server.worldgen.biome; public enum Scaling { VARYING_LOW(0.1F, 0.2F), diff --git a/server/src/main/java/server/biome/Temperature.java b/server/src/main/java/server/worldgen/biome/Temperature.java similarity index 63% rename from server/src/main/java/server/biome/Temperature.java rename to server/src/main/java/server/worldgen/biome/Temperature.java index 4eda4355..c61178fa 100644 --- a/server/src/main/java/server/biome/Temperature.java +++ b/server/src/main/java/server/worldgen/biome/Temperature.java @@ -1,4 +1,4 @@ -package server.biome; +package server.worldgen.biome; public enum Temperature { SEA, COLD, MEDIUM, WARM; diff --git a/server/src/main/java/server/worldgen/caves/MapGenCaves.java b/server/src/main/java/server/worldgen/caves/MapGenCaves.java index 44d44e0e..05374485 100755 --- a/server/src/main/java/server/worldgen/caves/MapGenCaves.java +++ b/server/src/main/java/server/worldgen/caves/MapGenCaves.java @@ -7,9 +7,9 @@ import common.rng.Random; import common.util.BlockPos; import common.util.ExtMath; import common.world.State; -import server.biome.GenBiome; import server.world.WorldServer; import server.worldgen.ChunkPrimer; +import server.worldgen.biome.GenBiome; public class MapGenCaves extends MapGenBase { diff --git a/server/src/main/java/server/worldgen/caves/MapGenRavine.java b/server/src/main/java/server/worldgen/caves/MapGenRavine.java index 8ac23366..4050bdaa 100755 --- a/server/src/main/java/server/worldgen/caves/MapGenRavine.java +++ b/server/src/main/java/server/worldgen/caves/MapGenRavine.java @@ -6,9 +6,9 @@ import common.rng.Random; import common.util.BlockPos; import common.util.ExtMath; import common.world.State; -import server.biome.GenBiome; import server.world.WorldServer; import server.worldgen.ChunkPrimer; +import server.worldgen.biome.GenBiome; public class MapGenRavine extends MapGenBase { diff --git a/server/src/main/java/server/worldgen/layer/GenLayer.java b/server/src/main/java/server/worldgen/layer/GenLayer.java index 675f8841..2469dc44 100755 --- a/server/src/main/java/server/worldgen/layer/GenLayer.java +++ b/server/src/main/java/server/worldgen/layer/GenLayer.java @@ -1,7 +1,7 @@ package server.worldgen.layer; import common.biome.Biome; -import server.biome.GenBiome; +import server.worldgen.biome.GenBiome; public abstract class GenLayer { private long worldGenSeed; @@ -24,7 +24,7 @@ public abstract class GenLayer { } protected static boolean isSea(int id) { - return id == Biome.SEA.id || id == Biome.FROZENSEA.id; + return id == Biome.SEA.id || id == Biome.ICE_SEA.id; } public GenLayer(long base) { diff --git a/server/src/main/java/server/worldgen/layer/GenLayerAddSea.java b/server/src/main/java/server/worldgen/layer/GenLayerAddSea.java index f958542f..b0345bff 100755 --- a/server/src/main/java/server/worldgen/layer/GenLayerAddSea.java +++ b/server/src/main/java/server/worldgen/layer/GenLayerAddSea.java @@ -60,7 +60,7 @@ public class GenLayerAddSea extends GenLayer this.initChunkSeed((long)(areaX + j1), (long)(areaY + i1)); if (k2 == 0 && this.nextInt(this.rarity) == 0) { - aint1[j1 + i1 * areaWidth] = l2 > 1 ? Biome.FROZENSEA.id : Biome.SEA.id; + aint1[j1 + i1 * areaWidth] = l2 > 1 ? Biome.ICE_SEA.id : Biome.SEA.id; } else { diff --git a/server/src/main/java/server/worldgen/layer/GenLayerBiomeEdge.java b/server/src/main/java/server/worldgen/layer/GenLayerBiomeEdge.java index b2ae7be6..afc3c293 100755 --- a/server/src/main/java/server/worldgen/layer/GenLayerBiomeEdge.java +++ b/server/src/main/java/server/worldgen/layer/GenLayerBiomeEdge.java @@ -1,8 +1,8 @@ package server.worldgen.layer; import common.biome.Biome; -import server.biome.GenBiome; -import server.biome.Temperature; +import server.worldgen.biome.GenBiome; +import server.worldgen.biome.Temperature; public class GenLayerBiomeEdge extends GenLayer { @@ -28,7 +28,7 @@ public class GenLayerBiomeEdge extends GenLayer this.initChunkSeed((long)(j + areaX), (long)(i + areaY)); int k = aint[j + 1 + (i + 1) * (areaWidth + 2)]; - if (!this.replaceBiomeEdgeIfNecessary(aint, aint1, j, i, areaWidth, k, Biome.EXTREMEHILLS.id, Biome.EXTREMEHILLSEDGE.id) && /* !this.replaceBiomeEdge(aint, aint1, j, i, areaWidth, k, Biome.mesaPlateau_F.id, Biome.mesa.id) && !this.replaceBiomeEdge(aint, aint1, j, i, areaWidth, k, Biome.mesaPlateau.id, Biome.mesa.id) && */ !this.replaceBiomeEdge(aint, aint1, j, i, areaWidth, k, Biome.MEGATAIGA.id, Biome.TAIGA.id)) + if (!this.replaceBiomeEdgeIfNecessary(aint, aint1, j, i, areaWidth, k, Biome.HILLS.id, Biome.HILLS_EDGE.id) && /* !this.replaceBiomeEdge(aint, aint1, j, i, areaWidth, k, Biome.mesaPlateau_F.id, Biome.mesa.id) && !this.replaceBiomeEdge(aint, aint1, j, i, areaWidth, k, Biome.mesaPlateau.id, Biome.mesa.id) && */ !this.replaceBiomeEdge(aint, aint1, j, i, areaWidth, k, Biome.LARGE_TAIGA.id, Biome.TAIGA.id)) { if (k == Biome.DESERT.id) { @@ -37,36 +37,36 @@ public class GenLayerBiomeEdge extends GenLayer int j2 = aint[j + 1 - 1 + (i + 1) * (areaWidth + 2)]; int k2 = aint[j + 1 + (i + 1 + 1) * (areaWidth + 2)]; - if (l1 != Biome.ICEPLAINS.id && i2 != Biome.ICEPLAINS.id && j2 != Biome.ICEPLAINS.id && k2 != Biome.ICEPLAINS.id) + if (l1 != Biome.ICE.id && i2 != Biome.ICE.id && j2 != Biome.ICE.id && k2 != Biome.ICE.id) { aint1[j + i * areaWidth] = k; } else { - aint1[j + i * areaWidth] = Biome.EXTREMEHILLSPLUS.id; + aint1[j + i * areaWidth] = Biome.LARGE_HILLS.id; } } - else if (k == Biome.SWAMPLAND.id) + else if (k == Biome.SWAMP.id) { int l = aint[j + 1 + (i + 1 - 1) * (areaWidth + 2)]; int i1 = aint[j + 1 + 1 + (i + 1) * (areaWidth + 2)]; int j1 = aint[j + 1 - 1 + (i + 1) * (areaWidth + 2)]; int k1 = aint[j + 1 + (i + 1 + 1) * (areaWidth + 2)]; - if (l != Biome.DESERT.id && i1 != Biome.DESERT.id && j1 != Biome.DESERT.id && k1 != Biome.DESERT.id && l != Biome.COLDTAIGA.id && i1 != Biome.COLDTAIGA.id && j1 != Biome.COLDTAIGA.id && k1 != Biome.COLDTAIGA.id && l != Biome.ICEPLAINS.id && i1 != Biome.ICEPLAINS.id && j1 != Biome.ICEPLAINS.id && k1 != Biome.ICEPLAINS.id) + if (l != Biome.DESERT.id && i1 != Biome.DESERT.id && j1 != Biome.DESERT.id && k1 != Biome.DESERT.id && l != Biome.ICE_TAIGA.id && i1 != Biome.ICE_TAIGA.id && j1 != Biome.ICE_TAIGA.id && k1 != Biome.ICE_TAIGA.id && l != Biome.ICE.id && i1 != Biome.ICE.id && j1 != Biome.ICE.id && k1 != Biome.ICE.id) { - if (l != Biome.JUNGLE.id && k1 != Biome.JUNGLE.id && i1 != Biome.JUNGLE.id && j1 != Biome.JUNGLE.id) + if (l != Biome.TROPIC.id && k1 != Biome.TROPIC.id && i1 != Biome.TROPIC.id && j1 != Biome.TROPIC.id) { aint1[j + i * areaWidth] = k; } else { - aint1[j + i * areaWidth] = Biome.JUNGLEEDGE.id; + aint1[j + i * areaWidth] = Biome.TROPIC_EDGE.id; } } else { - aint1[j + i * areaWidth] = Biome.PLAINS.id; + aint1[j + i * areaWidth] = Biome.PLAIN.id; } } else diff --git a/server/src/main/java/server/worldgen/layer/GenLayerHills.java b/server/src/main/java/server/worldgen/layer/GenLayerHills.java index c2865aeb..a855773a 100755 --- a/server/src/main/java/server/worldgen/layer/GenLayerHills.java +++ b/server/src/main/java/server/worldgen/layer/GenLayerHills.java @@ -2,6 +2,7 @@ package server.worldgen.layer; import common.biome.Biome; import common.log.Log; +import server.worldgen.biome.GenBiome; public class GenLayerHills extends GenLayer { @@ -61,62 +62,62 @@ public class GenLayerHills extends GenLayer if (k == Biome.DESERT.id) { - i1 = Biome.DESERTHILLS.id; + i1 = Biome.DESERT_HILLS.id; } else if (k == Biome.FOREST.id) { - i1 = Biome.FORESTHILLS.id; + i1 = Biome.FOREST_HILLS.id; } - else if (k == Biome.BIRCHFOREST.id) + else if (k == Biome.BIRCH_FOREST.id) { - i1 = Biome.BIRCHFORESTHILLS.id; + i1 = Biome.BIRCH_HILLS.id; } - else if (k == Biome.ROOFEDFOREST.id) + else if (k == Biome.DARK_FOREST.id) { - i1 = Biome.PLAINS.id; + i1 = Biome.PLAIN.id; } else if (k == Biome.TAIGA.id) { - i1 = Biome.TAIGAHILLS.id; + i1 = Biome.TAIGA_HILLS.id; } - else if (k == Biome.MEGATAIGA.id) + else if (k == Biome.LARGE_TAIGA.id) { - i1 = Biome.MEGATAIGAHILLS.id; + i1 = Biome.LARGE_TAIGA_HILLS.id; } - else if (k == Biome.COLDTAIGA.id) + else if (k == Biome.ICE_TAIGA.id) { - i1 = Biome.COLDTAIGAHILLS.id; + i1 = Biome.ICE_TAIGA_HILLS.id; } - else if (k == Biome.PLAINS.id) + else if (k == Biome.PLAIN.id) { if (this.nextInt(3) == 0) { - i1 = Biome.FORESTHILLS.id; + i1 = Biome.FOREST_HILLS.id; } else { i1 = Biome.FOREST.id; } } - else if (k == Biome.ICEPLAINS.id) + else if (k == Biome.ICE.id) { - i1 = Biome.ICEMOUNTAINS.id; + i1 = Biome.ICE_HILLS.id; } - else if (k == Biome.JUNGLE.id) + else if (k == Biome.TROPIC.id) { - i1 = Biome.JUNGLEHILLS.id; + i1 = Biome.TROPIC_HILLS.id; } else if (k == Biome.NONE.id) { i1 = this.def; } - else if (k == Biome.EXTREMEHILLS.id) + else if (k == Biome.HILLS.id) { - i1 = Biome.EXTREMEHILLSPLUS.id; + i1 = Biome.LARGE_HILLS.id; } else if (k == Biome.SAVANNA.id) { - i1 = Biome.SAVANNAPLATEAU.id; + i1 = Biome.SAVANNA_PLATEAU.id; } // else if (canBeNearby(k, Biome.mesaPlateau_F.id)) // { @@ -128,7 +129,7 @@ public class GenLayerHills extends GenLayer if (j1 == 0) { - i1 = Biome.PLAINS.id; + i1 = Biome.PLAIN.id; } else { @@ -138,9 +139,10 @@ public class GenLayerHills extends GenLayer if (flag && i1 != k) { - if (Biome.getBiome(i1 + 128) != null) + GenBiome gb = GenBiome.getBiome(i1); + if (gb != null && gb.mutated != null) { - i1 += 128; + i1 = gb.mutated.id; } else { diff --git a/server/src/main/java/server/worldgen/layer/GenLayerRiverMix.java b/server/src/main/java/server/worldgen/layer/GenLayerRiverMix.java index 05d47f88..39663dfc 100755 --- a/server/src/main/java/server/worldgen/layer/GenLayerRiverMix.java +++ b/server/src/main/java/server/worldgen/layer/GenLayerRiverMix.java @@ -43,15 +43,15 @@ public class GenLayerRiverMix extends GenLayer { out[i] = this.def; } - else if(biome[i] == Biome.SEA.id || biome[i] == Biome.FROZENSEA.id) + else if(biome[i] == Biome.SEA.id || biome[i] == Biome.ICE_SEA.id) { out[i] = biome[i]; } else if (river[i] == Biome.RIVER.id) { - if (biome[i] == Biome.ICEPLAINS.id) + if (biome[i] == Biome.ICE.id) { - out[i] = Biome.FROZENRIVER.id; + out[i] = Biome.ICE_RIVER.id; } else // if (biome[i] != Biome.mushroomPlains.id && biome[i] != Biome.mushroomPlainsEdge.id) { diff --git a/server/src/main/java/server/worldgen/layer/GenLayerShore.java b/server/src/main/java/server/worldgen/layer/GenLayerShore.java index 715e37ae..889baa72 100755 --- a/server/src/main/java/server/worldgen/layer/GenLayerShore.java +++ b/server/src/main/java/server/worldgen/layer/GenLayerShore.java @@ -1,8 +1,8 @@ package server.worldgen.layer; import common.biome.Biome; -import server.biome.GenBiome; -import server.biome.BiomeJungle; +import server.worldgen.biome.BiomeJungle; +import server.worldgen.biome.GenBiome; public class GenLayerShore extends GenLayer { @@ -62,14 +62,14 @@ public class GenLayerShore extends GenLayer } else { - data[j + i * width] = Biome.JUNGLEEDGE.id; + data[j + i * width] = Biome.TROPIC_EDGE.id; } } - else if (id != Biome.EXTREMEHILLS.id && id != Biome.EXTREMEHILLSPLUS.id && id != Biome.EXTREMEHILLSEDGE.id) + else if (id != Biome.HILLS.id && id != Biome.LARGE_HILLS.id && id != Biome.HILLS_EDGE.id) { if (biome != null && biome.allowColdBeach) { - this.putBeach(pre, data, j, i, width, id, Biome.COLDBEACH.id); + this.putBeach(pre, data, j, i, width, id, Biome.ICE_BEACH.id); } else // if (id != Biome.mesa.id && id != Biome.mesaPlateau_F.id) // { @@ -120,7 +120,7 @@ public class GenLayerShore extends GenLayer } else { - this.putBeach(pre, data, j, i, width, id, Biome.STONEBEACH.id); + this.putBeach(pre, data, j, i, width, id, Biome.STONE_BEACH.id); } } } @@ -155,7 +155,7 @@ public class GenLayerShore extends GenLayer private boolean canNBJungle(int id) { GenBiome biome = GenBiome.getBiome(id); - return biome != null && biome.getBiomeClass() == BiomeJungle.class ? true : id == Biome.JUNGLEEDGE.id || id == Biome.JUNGLE.id || id == Biome.JUNGLEHILLS.id || id == Biome.FOREST.id || id == Biome.TAIGA.id || isSea(id); + return biome != null && biome.getBiomeClass() == BiomeJungle.class ? true : id == Biome.TROPIC_EDGE.id || id == Biome.TROPIC.id || id == Biome.TROPIC_HILLS.id || id == Biome.FOREST.id || id == Biome.TAIGA.id || isSea(id); } // private boolean canNBMesa(int id) diff --git a/server/src/main/java/server/worldgen/structure/MapGenScatteredFeature.java b/server/src/main/java/server/worldgen/structure/MapGenScatteredFeature.java index c0393ae4..34b1d671 100755 --- a/server/src/main/java/server/worldgen/structure/MapGenScatteredFeature.java +++ b/server/src/main/java/server/worldgen/structure/MapGenScatteredFeature.java @@ -10,7 +10,7 @@ import server.world.WorldServer; public class MapGenScatteredFeature extends MapGenStructure { - private static final List biomelist = Arrays.asList(Biome.DESERT, Biome.DESERTHILLS, Biome.JUNGLE, Biome.JUNGLEHILLS, Biome.SWAMPLAND); + private static final List biomelist = Arrays.asList(Biome.DESERT, Biome.DESERT_HILLS, Biome.TROPIC, Biome.TROPIC_HILLS, Biome.SWAMP); private static final int MAX_DISTANCE = 32; private static final int MIN_DISTANCE = 8; @@ -94,14 +94,14 @@ public class MapGenScatteredFeature extends MapGenStructure super(p_i2060_3_, p_i2060_4_); Biome biomegenbase = worldIn.getBiomeGenForCoords(new BlockPos(p_i2060_3_ * 16 + 8, 0, p_i2060_4_ * 16 + 8)); - if (biomegenbase != Biome.JUNGLE && biomegenbase != Biome.JUNGLEHILLS) + if (biomegenbase != Biome.TROPIC && biomegenbase != Biome.TROPIC_HILLS) { - if (biomegenbase == Biome.SWAMPLAND) + if (biomegenbase == Biome.SWAMP) { StructureScattered.SwampHut componentscatteredfeaturepieces$swamphut = new StructureScattered.SwampHut(p_i2060_2_, p_i2060_3_ * 16, p_i2060_4_ * 16); this.components.add(componentscatteredfeaturepieces$swamphut); } - else if (biomegenbase == Biome.DESERT || biomegenbase == Biome.DESERTHILLS) + else if (biomegenbase == Biome.DESERT || biomegenbase == Biome.DESERT_HILLS) { StructureScattered.DesertPyramid componentscatteredfeaturepieces$desertpyramid = new StructureScattered.DesertPyramid(p_i2060_2_, p_i2060_3_ * 16, p_i2060_4_ * 16); this.components.add(componentscatteredfeaturepieces$desertpyramid); diff --git a/server/src/main/java/server/worldgen/structure/MapGenVillage.java b/server/src/main/java/server/worldgen/structure/MapGenVillage.java index fb4a1a6c..67aadb5f 100755 --- a/server/src/main/java/server/worldgen/structure/MapGenVillage.java +++ b/server/src/main/java/server/worldgen/structure/MapGenVillage.java @@ -11,7 +11,7 @@ import server.world.WorldServer; public class MapGenVillage extends MapGenStructure { - public static final Set villageSpawnBiomes = Sets.newHashSet(Biome.PLAINS, Biome.DESERT, Biome.SAVANNA); + public static final Set villageSpawnBiomes = Sets.newHashSet(Biome.PLAIN, Biome.DESERT, Biome.SAVANNA); /** World terrain type, 0 for normal, 1 for flat map */ private int terrainType; diff --git a/server/src/main/java/server/worldgen/structure/StructureVillage.java b/server/src/main/java/server/worldgen/structure/StructureVillage.java index a3d53c88..b602697f 100755 --- a/server/src/main/java/server/worldgen/structure/StructureVillage.java +++ b/server/src/main/java/server/worldgen/structure/StructureVillage.java @@ -1430,7 +1430,7 @@ public class StructureVillage this.structureVillageWeightedPieceList = p_i2104_6_; this.terrainType = p_i2104_7_; Biome biomegenbase = genIn.getBiomeGenerator(new BlockPos(p_i2104_4_, 0, p_i2104_5_), Biome.DEF_BIOME); - this.inDesert = biomegenbase == Biome.DESERT || biomegenbase == Biome.DESERTHILLS; + this.inDesert = biomegenbase == Biome.DESERT || biomegenbase == Biome.DESERT_HILLS; this.func_175846_a(this.inDesert); } diff --git a/server/src/main/java/server/worldgen/tree/WorldGenSwamp.java b/server/src/main/java/server/worldgen/tree/WorldGenSwamp.java index ceaf681b..9e287cda 100755 --- a/server/src/main/java/server/worldgen/tree/WorldGenSwamp.java +++ b/server/src/main/java/server/worldgen/tree/WorldGenSwamp.java @@ -14,9 +14,9 @@ import server.world.WorldServer; public class WorldGenSwamp extends WorldGenTree { - private static final State field_181648_a = Blocks.oak_log.getState(); + private static final State field_181648_a = Blocks.swamp_oak_log.getState(); // .withProperty(BlockOldLog.VARIANT, BlockPlanks.EnumType.OAK); - private static final WoodType field_181649_b = WoodType.OAK; + private static final WoodType field_181649_b = WoodType.SWAMP_OAK; // .withProperty(BlockOldLeaf.VARIANT, BlockPlanks.EnumType.OAK); public WorldGenSwamp() @@ -89,7 +89,7 @@ public class WorldGenSwamp extends WorldGenTree { Block block1 = worldIn.getState(position.down()).getBlock(); - if ((block1 == Blocks.grass || block1 == Blocks.dirt) && position.getY() < 512 - i - 1) + if ((block1 == Blocks.grass || block1 == Blocks.dirt || block1 == Blocks.swamp) && position.getY() < 512 - i - 1) { this.setBaseBlock(worldIn, position.down()); @@ -188,7 +188,7 @@ public class WorldGenSwamp extends WorldGenTree private void func_181647_a(WorldServer p_181647_1_, BlockPos p_181647_2_, PropertyBool p_181647_3_) { - State iblockstate = Blocks.vine.getState().withProperty(p_181647_3_, Boolean.valueOf(true)); + State iblockstate = Blocks.swamp_vine.getState().withProperty(p_181647_3_, Boolean.valueOf(true)); this.setBlockAndNotifyAdequately(p_181647_1_, p_181647_2_, iblockstate); int i = 4; diff --git a/server/src/main/java/server/worldgen/tree/WorldGenTree.java b/server/src/main/java/server/worldgen/tree/WorldGenTree.java index 412f0e63..a28c3995 100755 --- a/server/src/main/java/server/worldgen/tree/WorldGenTree.java +++ b/server/src/main/java/server/worldgen/tree/WorldGenTree.java @@ -4,6 +4,7 @@ import common.block.Block; import common.block.Material; import common.block.foliage.BlockLog; import common.block.foliage.BlockSapling; +import common.block.foliage.BlockVine; import common.init.Blocks; import common.rng.Random; import common.util.BlockPos; @@ -19,7 +20,7 @@ public abstract class WorldGenTree extends FeatureGenerator protected boolean canBeReplaced(Block block) { - return block == Blocks.air || block.getMaterial() == Material.LEAVES || block == Blocks.grass || block == Blocks.dirt || block instanceof BlockLog || block instanceof BlockSapling || block == Blocks.vine; + return block == Blocks.air || block.getMaterial() == Material.LEAVES || block == Blocks.grass || block == Blocks.swamp || block == Blocks.dirt || block instanceof BlockLog || block instanceof BlockSapling || block instanceof BlockVine; } public void prepare()