From 961d5eb420182add0b6cb4d92f260b885563389c Mon Sep 17 00:00:00 2001 From: 12xx12 <44411062+12xx12@users.noreply.github.com> Date: Thu, 29 Oct 2020 21:47:20 +0100 Subject: Add beam target, configurable base visibility to Ender Crystals (#5010) * Fixes #4990 Co-authored-by: 12xx12 <12xx12100@gmail.com> --- src/WorldStorage/WSSAnvil.cpp | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) (limited to 'src/WorldStorage/WSSAnvil.cpp') diff --git a/src/WorldStorage/WSSAnvil.cpp b/src/WorldStorage/WSSAnvil.cpp index 03e60bb26..c7b4c7e1f 100755 --- a/src/WorldStorage/WSSAnvil.cpp +++ b/src/WorldStorage/WSSAnvil.cpp @@ -1718,11 +1718,42 @@ void cWSSAnvil::LoadBoatFromNBT(cEntityList & a_Entities, const cParsedNBT & a_N void cWSSAnvil::LoadEnderCrystalFromNBT(cEntityList & a_Entities, const cParsedNBT & a_NBT, int a_TagIdx) { - auto EnderCrystal = std::make_unique(Vector3d()); + auto EnderCrystal = std::make_unique(Vector3d(), false); if (!LoadEntityBaseFromNBT(*EnderCrystal.get(), a_NBT, a_TagIdx)) { return; } + + int CurrentLine = a_NBT.FindChildByName(a_TagIdx, "BeamTarget"); + if (CurrentLine > 0) + { + EnderCrystal->SetDisplayBeam(true); + if (a_NBT.GetType(CurrentLine) == TAG_Compound) + { + Vector3d BeamTarget = {0, 0, 0}; + int CoordinateLine = a_NBT.FindChildByName(CurrentLine, "X"); + if (CoordinateLine > 0) + { + BeamTarget.x = a_NBT.GetInt(CoordinateLine); + } + CoordinateLine = a_NBT.FindChildByName(CurrentLine, "Y"); + if (CoordinateLine > 0) + { + BeamTarget.y = a_NBT.GetInt(CoordinateLine); + } + CoordinateLine = a_NBT.FindChildByName(CurrentLine, "Z"); + if (CoordinateLine > 0) + { + BeamTarget.z = a_NBT.GetInt(CoordinateLine); + } + } + } + CurrentLine = a_NBT.FindChildByName(a_TagIdx, "ShowBottom"); + if (CurrentLine > 0) + { + EnderCrystal->SetShowBottom(a_NBT.GetByte(CurrentLine) == 1); + } + a_Entities.emplace_back(std::move(EnderCrystal)); } -- cgit v1.2.3