From 8f11188c294f94d8dd80acd83df71042cdb59e19 Mon Sep 17 00:00:00 2001 From: DaPigGuy Date: Sat, 31 Dec 2022 04:04:23 -0800 Subject: [PATCH] Revert "block/ice.go: implement ice (#724)" Ice melting is currently in a severely broken state --- server/block/hash.go | 5 --- server/block/ice.go | 68 ---------------------------------------- server/block/register.go | 2 -- server/block/water.go | 30 ------------------ 4 files changed, 105 deletions(-) delete mode 100644 server/block/ice.go diff --git a/server/block/hash.go b/server/block/hash.go index f237f83eb..0d1943224 100644 --- a/server/block/hash.go +++ b/server/block/hash.go @@ -79,7 +79,6 @@ const ( hashGrindstone hashHayBale hashHoneycomb - hashIce hashInvisibleBedrock hashIron hashIronBars @@ -475,10 +474,6 @@ func (Honeycomb) Hash() uint64 { return hashHoneycomb } -func (Ice) Hash() uint64 { - return hashIce -} - func (InvisibleBedrock) Hash() uint64 { return hashInvisibleBedrock } diff --git a/server/block/ice.go b/server/block/ice.go deleted file mode 100644 index 983e7073e..000000000 --- a/server/block/ice.go +++ /dev/null @@ -1,68 +0,0 @@ -package block - -import ( - "github.com/df-mc/dragonfly/server/block/cube" - "github.com/df-mc/dragonfly/server/block/model" - "github.com/df-mc/dragonfly/server/item" - "github.com/df-mc/dragonfly/server/world" - "math/rand" -) - -// Ice is a transparent block that forms when water freezes and melts when it is near a bright light source. -type Ice struct { - solid -} - -// LightDiffusionLevel ... -func (Ice) LightDiffusionLevel() uint8 { - return 3 -} - -// BreakInfo ... -func (i Ice) BreakInfo() BreakInfo { - return newBreakInfo(0.5, alwaysHarvestable, pickaxeEffective, silkTouchOnlyDrop(i)). - withBreakHandler(func(pos cube.Pos, w *world.World, u item.User) { - if w.Dimension().WaterEvaporates() { - return - } - if p, ok := u.(interface { - GameMode() world.GameMode - }); ok && p.GameMode().CreativeInventory() { - return - } - if mainHand, _ := u.HeldItems(); hasSilkTouch(mainHand.Enchantments()) { - return - } - if _, ok := w.Block(pos.Side(cube.FaceDown)).Model().(model.Solid); !ok { - return - } - w.SetBlock(pos, Water{Depth: 8}, nil) - }) -} - -// RandomTick ... -func (i Ice) RandomTick(pos cube.Pos, w *world.World, _ *rand.Rand) { - if w.Light(pos) < 12 { - return - } - if w.Dimension().WaterEvaporates() { - w.SetBlock(pos, nil, nil) - return - } - w.SetBlock(pos, Water{Depth: 8}, nil) -} - -// Friction ... -func (i Ice) Friction() float64 { - return 0.98 -} - -// EncodeItem ... -func (Ice) EncodeItem() (name string, meta int16) { - return "minecraft:ice", 0 -} - -// EncodeBlock ... -func (Ice) EncodeBlock() (string, map[string]any) { - return "minecraft:ice", nil -} diff --git a/server/block/register.go b/server/block/register.go index da1fbadea..98d6e5f0b 100644 --- a/server/block/register.go +++ b/server/block/register.go @@ -55,7 +55,6 @@ func init() { world.RegisterBlock(Grass{}) world.RegisterBlock(Gravel{}) world.RegisterBlock(Honeycomb{}) - world.RegisterBlock(Ice{}) world.RegisterBlock(InvisibleBedrock{}) world.RegisterBlock(IronBars{}) world.RegisterBlock(Iron{}) @@ -256,7 +255,6 @@ func init() { world.RegisterItem(Grindstone{}) world.RegisterItem(HayBale{}) world.RegisterItem(Honeycomb{}) - world.RegisterItem(Ice{}) world.RegisterItem(InvisibleBedrock{}) world.RegisterItem(IronBars{}) world.RegisterItem(Iron{}) diff --git a/server/block/water.go b/server/block/water.go index 533cbb852..ff27ae4bd 100644 --- a/server/block/water.go +++ b/server/block/water.go @@ -2,7 +2,6 @@ package block import ( "github.com/df-mc/dragonfly/server/block/cube" - "github.com/df-mc/dragonfly/server/block/model" "github.com/df-mc/dragonfly/server/event" "github.com/df-mc/dragonfly/server/item" "github.com/df-mc/dragonfly/server/item/potion" @@ -113,35 +112,6 @@ func (w Water) ScheduledTick(pos cube.Pos, wo *world.World, _ *rand.Rand) { tickLiquid(w, pos, wo) } -// RandomTick ... -func (w Water) RandomTick(pos cube.Pos, wo *world.World, _ *rand.Rand) { - if w.Depth != 8 { - return - } - if wo.Temperature(pos) > 0.0 { - return - } - if wo.Light(pos) > 12 { - return - } - if _, ok := wo.Block(cube.Pos{pos[0], wo.HighestBlock(pos[0], pos[2]), pos[2]}).Model().(model.Solid); ok { - return - } - solidAdjacent := false - pos.Neighbours(func(neighbour cube.Pos) { - if solidAdjacent { - return - } - if neighbour[1] != pos[1] { - return - } - _, solidAdjacent = wo.Block(neighbour).Model().(model.Solid) - }, wo.Range()) - if solidAdjacent { - wo.SetBlock(pos, Ice{}, nil) - } -} - // NeighbourUpdateTick ... func (Water) NeighbourUpdateTick(pos, _ cube.Pos, wo *world.World) { if wo.Dimension().WaterEvaporates() {