From 135108a4859de6cb543d693d432498234599b2a4 Mon Sep 17 00:00:00 2001 From: piebot <164795032+piebotc@users.noreply.github.com> Date: Tue, 17 Mar 2026 01:44:44 +0300 Subject: [PATCH] Add Packed Ice --- .../Common/UI/IUIScene_CreativeMenu.cpp | 1 + Minecraft.Client/PreStitchedTextureMap.cpp | 1 + Minecraft.World/Material.cpp | 2 ++ Minecraft.World/Material.h | 1 + Minecraft.World/PackedIceTile.cpp | 12 ++++++++++++ Minecraft.World/PackedIceTile.h | 13 +++++++++++++ Minecraft.World/Tile.cpp | 3 +++ Minecraft.World/Tile.h | 2 ++ 8 files changed, 35 insertions(+) create mode 100644 Minecraft.World/PackedIceTile.cpp create mode 100644 Minecraft.World/PackedIceTile.h diff --git a/Minecraft.Client/Common/UI/IUIScene_CreativeMenu.cpp b/Minecraft.Client/Common/UI/IUIScene_CreativeMenu.cpp index 85178827..35e37ff0 100644 --- a/Minecraft.Client/Common/UI/IUIScene_CreativeMenu.cpp +++ b/Minecraft.Client/Common/UI/IUIScene_CreativeMenu.cpp @@ -81,6 +81,7 @@ void IUIScene_CreativeMenu::staticCtor() ITEM(Tile::obsidian_Id) ITEM(Tile::clay) ITEM(Tile::ice_Id) + ITEM(Tile::packed_ice_Id) ITEM(Tile::snow_Id) ITEM(Tile::netherRack_Id) ITEM(Tile::soulsand_Id) diff --git a/Minecraft.Client/PreStitchedTextureMap.cpp b/Minecraft.Client/PreStitchedTextureMap.cpp index 289bf901..a9870d1c 100644 --- a/Minecraft.Client/PreStitchedTextureMap.cpp +++ b/Minecraft.Client/PreStitchedTextureMap.cpp @@ -1032,6 +1032,7 @@ void PreStitchedTextureMap::loadUVs() ADD_ICON(23, 3, L"door_jungle_upper"); ADD_ICON(23, 4, L"door_spruce_upper"); + ADD_ICON(23, 12, L"packed_ice"); ADD_ICON(23, 14, L"inverted_daylight_detector"); ADD_ICON(23, 15, L"iron_trapdoor"); diff --git a/Minecraft.World/Material.cpp b/Minecraft.World/Material.cpp index d17965df..ba9ee752 100644 --- a/Minecraft.World/Material.cpp +++ b/Minecraft.World/Material.cpp @@ -39,6 +39,7 @@ Material *Material::portal = nullptr; Material *Material::cake = nullptr; Material *Material::piston = nullptr; Material *Material::web = nullptr; +Material* Material::packedIce = nullptr; void Material::staticCtor() { @@ -76,6 +77,7 @@ void Material::staticCtor() // 4J added WebMaterial, Java version just does a local alteration when instantiating the Material for webs to get the same thing Material::web = (new WebMaterial(MaterialColor::cloth))->notAlwaysDestroyable()->destroyOnPush(); Material::piston = (new Material(MaterialColor::stone))->notPushable(); + Material::packedIce = (new Material(MaterialColor::ice))->neverBuildable(); } Material::Material(MaterialColor *color) diff --git a/Minecraft.World/Material.h b/Minecraft.World/Material.h index 6e0571cf..aa735a20 100644 --- a/Minecraft.World/Material.h +++ b/Minecraft.World/Material.h @@ -40,6 +40,7 @@ public: static Material *cake; static Material *web; static Material *piston; + static Material *packedIce; static const int PUSH_NORMAL = 0; static const int PUSH_DESTROY = 1; diff --git a/Minecraft.World/PackedIceTile.cpp b/Minecraft.World/PackedIceTile.cpp new file mode 100644 index 00000000..e2fadda5 --- /dev/null +++ b/Minecraft.World/PackedIceTile.cpp @@ -0,0 +1,12 @@ +#include "stdafx.h" +#include "net.minecraft.world.level.h" +#include "net.minecraft.world.level.dimension.h" +#include "net.minecraft.world.item.enchantment.h" +#include "net.minecraft.world.food.h" +#include "net.minecraft.stats.h" +#include "PackedIceTile.h" + +PackedIceTile::PackedIceTile(int id) : Tile(id, Material::packedIce) +{ + friction = 0.98f; +} diff --git a/Minecraft.World/PackedIceTile.h b/Minecraft.World/PackedIceTile.h new file mode 100644 index 00000000..14fbce44 --- /dev/null +++ b/Minecraft.World/PackedIceTile.h @@ -0,0 +1,13 @@ +#pragma once +#include "Tile.h" + +class Random; + +class PackedIceTile : public Tile +{ +public: + PackedIceTile(int id); + virtual int getResource(int data, Random* random, int playerBonusLevel) { return 0; }; + virtual int getPistonPushReaction() { return Material::PUSH_NORMAL; }; + ; +}; diff --git a/Minecraft.World/Tile.cpp b/Minecraft.World/Tile.cpp index cac85e14..32cb639c 100644 --- a/Minecraft.World/Tile.cpp +++ b/Minecraft.World/Tile.cpp @@ -248,6 +248,7 @@ Tile* Tile::red_sandstone = nullptr; Tile* Tile::stairs_red_sandstone = nullptr; Tile* Tile::tree2Trunk = nullptr; +Tile* Tile::packed_ice = nullptr; DWORD Tile::tlsIdxShape = TlsAlloc(); @@ -475,6 +476,8 @@ void Tile::staticCtor() Tile::clayHardened = (new Tile(172, Material::stone)) ->setBaseItemTypeAndMaterial(Item::eBaseItemType_clay, Item::eMaterial_clay)->setDestroyTime(1.25f)->setExplodeable(7)->setSoundType(SOUND_STONE)->setIconName(L"hardened_clay")->setDescriptionId(IDS_TILE_HARDENED_CLAY)->setUseDescriptionId(IDS_DESC_HARDENED_CLAY); Tile::coalBlock = (new Tile(173, Material::stone)) ->setBaseItemTypeAndMaterial(Item::eBaseItemType_block, Item::eMaterial_coal)->setDestroyTime(5.0f)->setExplodeable(10)->setSoundType(SOUND_STONE)->setIconName(L"coal_block")->setDescriptionId(IDS_TILE_COAL)->setUseDescriptionId(IDS_DESC_COAL_BLOCK); + Tile::packed_ice = (new PackedIceTile(174))->setDestroyTime(0.5f)->setSoundType(SOUND_GLASS)->setIconName(L"packed_ice")->setDescriptionId(IDS_TILE_ICE)->setUseDescriptionId(IDS_DESC_ICE); + Tile::invertedDaylightDetector = static_cast((new DaylightDetectorTile(178, true))->setDestroyTime(0.2f)->setSoundType(SOUND_WOOD)->setIconName(L"daylight_detector")->setDescriptionId(IDS_TILE_DAYLIGHT_DETECTOR)->setUseDescriptionId(IDS_DESC_DAYLIGHT_DETECTOR)); Tile::red_sandstone = (new RedSandStoneTile(179))->setBaseItemTypeAndMaterial(Item::eBaseItemType_structblock, Item::eMaterial_sand)->setSoundType(Tile::SOUND_STONE)->setDestroyTime(0.8f)->sendTileData()->setIconName(L"red_sandstone")->setDescriptionId(IDS_TILE_SANDSTONE)->setUseDescriptionId(IDS_DESC_SANDSTONE)->sendTileData(); Tile::stairs_red_sandstone = (new StairTile(180, Tile::red_sandstone, 0))->setBaseItemTypeAndMaterial(Item::eBaseItemType_stairs, Item::eMaterial_sand)->setIconName(L"stairsRedSandstone")->setDescriptionId(IDS_TILE_STAIRS_SANDSTONE)->sendTileData()->setUseDescriptionId(IDS_DESC_STAIRS); diff --git a/Minecraft.World/Tile.h b/Minecraft.World/Tile.h index 86a4d72c..806f6ddf 100644 --- a/Minecraft.World/Tile.h +++ b/Minecraft.World/Tile.h @@ -371,6 +371,7 @@ public: static const int woolCarpet_Id = 171; static const int clayHardened_Id = 172; static const int coalBlock_Id = 173; + static const int packed_ice_Id = 174; static const int invertedDaylightDetector_Id = 178; static const int red_sandstone_Id = 179; @@ -590,6 +591,7 @@ public: static Tile* red_sandstone; static Tile* stairs_red_sandstone; static Tile* tree2Trunk; + static Tile* packed_ice; static void staticCtor();