package com.dairymoose.modernlife.tileentities; import com.dairymoose.modernlife.core.CustomBlocks; import com.dairymoose.modernlife.core.ModernLifeClient; import com.dairymoose.modernlife.core.ModernLifeCommon; import com.dairymoose.modernlife.network.play.client.ClientboundMultipartCanvasPacket; import com.dairymoose.modernlife.network.play.client.ICanvasReader; import com.dairymoose.modernlife.util.CanvasData; import com.mojang.datafixers.types.Type; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.texture.DynamicTexture; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.Connection; import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.Container; import net.minecraft.world.ContainerHelper; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fml.DistExecutor; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; /* loaded from: outputsrg.jar:com/dairymoose/modernlife/tileentities/CanvasBlockEntity.class */ public class CanvasBlockEntity extends BlockEntity implements Container, ICanvasReader { public static final BlockEntityType CANVAS = BlockEntityType.Builder.of(CanvasBlockEntity::new, new Block[]{(Block) CustomBlocks.BLOCK_CANVAS.get()}).build((Type) null); private static final Logger LOGGER = LogManager.getLogger(); public static final int CANVAS_CONTAINER_SIZE = 1; public float blockWidth; public float blockHeight; public float xOffset; public float yOffset; private Object nbtLock; private NonNullList canvasStack; CanvasData canvasData; private DynamicTexture texture; private RenderType dynamicRenderType; @OnlyIn(Dist.CLIENT) private TextureManager textureManager; public CanvasBlockEntity(BlockPos pos, BlockState state) { super(CANVAS, pos, state); this.blockWidth = 0.0f; this.blockHeight = 0.0f; this.xOffset = 0.0f; this.yOffset = 0.0f; this.nbtLock = new Object(); this.canvasStack = NonNullList.withSize(1, ItemStack.EMPTY); this.canvasData = new CanvasData(); this.texture = null; ClientboundMultipartCanvasPacket.subscribe(this); } @Override // com.dairymoose.modernlife.network.play.client.ICanvasReader public void onUpdate(long uniqueId) { if (isRemoved()) { ClientboundMultipartCanvasPacket.unsubscribe(this); return; } if (!isEmpty() && getItem(0).getItem() == CustomBlocks.ITEM_CANVAS.get()) { CompoundTag nbt = getItem(0).getTag(); if (nbt.contains("UniqueId")) { long thisUniqueId = nbt.getLong("UniqueId"); if (thisUniqueId == uniqueId) { updateToNewTexture(); } } } } public AABB getRenderBoundingBox() { BlockPos blockPos = getBlockPos(); Vec3 loc = new Vec3(blockPos.getX() + 0.5d, blockPos.getY() + 0.5d, blockPos.getZ() + 0.5d); return AABB.ofSize(loc, 10.0d, 10.0d, 10.0d); } /* JADX INFO: Access modifiers changed from: package-private */ /* renamed from: com.dairymoose.modernlife.tileentities.CanvasBlockEntity$1 */ /* loaded from: outputsrg.jar:com/dairymoose/modernlife/tileentities/CanvasBlockEntity$1.class */ public class RunnableC01561 implements Runnable { final /* synthetic */ CanvasBlockEntity val$thisEntity; RunnableC01561(CanvasBlockEntity canvasBlockEntity) { this = canvasBlockEntity; } @Override // java.lang.Runnable public void run() { CompoundTag nbt; if (!this.isEmpty() && this.getItem(0).getItem() == CustomBlocks.ITEM_CANVAS.get() && (nbt = this.getItem(0).getTag()) != null && nbt.contains("UniqueId")) { long uniqueId = nbt.getLong("UniqueId"); Logger logger = ModernLifeCommon.LOGGER; this.getBlockPos(); logger.debug("updating texture for ID=" + uniqueId + " at pos = " + logger); if (CanvasBlockEntity.this.texture != null) { CanvasBlockEntity.this.texture.close(); } CanvasBlockEntity.this.texture = null; byte[] compressed = ModernLifeClient.getCanvasData(uniqueId); if (compressed != null) { int texWidth = ModernLifeClient.getCanvasWidth(uniqueId); int texHeight = ModernLifeClient.getCanvasHeight(uniqueId); if (texWidth > 0 && texHeight > 0) { CanvasBlockEntity.this.canvasData.disable(); CanvasBlockEntity.this.canvasData.setTextureSize(texWidth, texHeight); CanvasBlockEntity.this.canvasData.fromCompressedNbt(compressed); CanvasBlockEntity.this.canvasData.reenable(); synchronized (CanvasBlockEntity.this.nbtLock) { if (nbt.contains("BlockWidth")) { this.blockWidth = nbt.getFloat("BlockWidth"); } if (nbt.contains("BlockHeight")) { this.blockHeight = nbt.getFloat("BlockHeight"); } if (nbt.contains("xOffset")) { this.xOffset = nbt.getFloat("xOffset"); } if (nbt.contains("yOffset")) { this.yOffset = nbt.getFloat("yOffset"); } } } } } } } private void updateToNewTexture() { DistExecutor.runWhenOn(Dist.CLIENT, () -> { return new Runnable() { // from class: com.dairymoose.modernlife.tileentities.CanvasBlockEntity.1 final /* synthetic */ CanvasBlockEntity val$thisEntity; RunnableC01561(CanvasBlockEntity this) { this = this; } @Override // java.lang.Runnable public void run() { CompoundTag nbt; if (!this.isEmpty() && this.getItem(0).getItem() == CustomBlocks.ITEM_CANVAS.get() && (nbt = this.getItem(0).getTag()) != null && nbt.contains("UniqueId")) { long uniqueId = nbt.getLong("UniqueId"); Logger logger = ModernLifeCommon.LOGGER; this.getBlockPos(); logger.debug("updating texture for ID=" + uniqueId + " at pos = " + logger); if (CanvasBlockEntity.this.texture != null) { CanvasBlockEntity.this.texture.close(); } CanvasBlockEntity.this.texture = null; byte[] compressed = ModernLifeClient.getCanvasData(uniqueId); if (compressed != null) { int texWidth = ModernLifeClient.getCanvasWidth(uniqueId); int texHeight = ModernLifeClient.getCanvasHeight(uniqueId); if (texWidth > 0 && texHeight > 0) { CanvasBlockEntity.this.canvasData.disable(); CanvasBlockEntity.this.canvasData.setTextureSize(texWidth, texHeight); CanvasBlockEntity.this.canvasData.fromCompressedNbt(compressed); CanvasBlockEntity.this.canvasData.reenable(); synchronized (CanvasBlockEntity.this.nbtLock) { if (nbt.contains("BlockWidth")) { this.blockWidth = nbt.getFloat("BlockWidth"); } if (nbt.contains("BlockHeight")) { this.blockHeight = nbt.getFloat("BlockHeight"); } if (nbt.contains("xOffset")) { this.xOffset = nbt.getFloat("xOffset"); } if (nbt.contains("yOffset")) { this.yOffset = nbt.getFloat("yOffset"); } } } } } } }; }); } public CompoundTag getUpdateTag() { CompoundTag nbt = super.getUpdateTag(); if (isEmpty() || getItem(0).getItem() == CustomBlocks.ITEM_CANVAS.get()) { } ContainerHelper.saveAllItems(nbt, this.canvasStack); return nbt; } public void handleUpdateTag(CompoundTag tag) { ContainerHelper.loadAllItems(tag, this.canvasStack); ItemStack item = getItem(0); CompoundTag nbt = null; if (item != null) { nbt = item.getTag(); } if (!isEmpty() && item != null && item.getItem() == CustomBlocks.ITEM_CANVAS.get() && nbt != null && nbt.contains("UniqueId")) { getItem(0).getTag().getLong("UniqueId"); } updateToNewTexture(); super.handleUpdateTag(tag); } public void load(CompoundTag p_230337_2_) { super.load(p_230337_2_); ContainerHelper.loadAllItems(p_230337_2_, this.canvasStack); ItemStack item = getItem(0); if (!item.isEmpty() && item.hasTag()) { updateToNewTexture(); } } /* renamed from: getUpdatePacket */ public ClientboundBlockEntityDataPacket m219getUpdatePacket() { return ClientboundBlockEntityDataPacket.create(this); } public void onDataPacket(Connection conn, ClientboundBlockEntityDataPacket pkt) { CompoundTag tag = pkt.getTag(); if (tag != null) { ContainerHelper.loadAllItems(tag, this.canvasStack); ItemStack item = getItem(0); if (!item.isEmpty() && item.hasTag()) { updateToNewTexture(); } } } protected void saveAdditional(CompoundTag nbt) { ContainerHelper.saveAllItems(nbt, this.canvasStack); } public void m_6211_() { this.canvasStack.set(0, ItemStack.EMPTY); } public int getContainerSize() { return 1; } public boolean isEmpty() { return ((ItemStack) this.canvasStack.get(0)).isEmpty(); } public ItemStack getItem(int var1) { return (ItemStack) this.canvasStack.get(var1); } public ItemStack removeItem(int var1, int var2) { return ContainerHelper.removeItem(this.canvasStack, var1, var2); } public ItemStack removeItemNoUpdate(int var1) { return ContainerHelper.takeItem(this.canvasStack, var1); } public void setItem(int var1, ItemStack item) { this.canvasStack.set(var1, item); if (item.getItem() != CustomBlocks.ITEM_CANVAS.get() || item.hasTag()) { } } public boolean stillValid(Player p_70300_1_) { return this.level.getBlockEntity(this.worldPosition) == this && p_70300_1_.distanceToSqr(((double) this.worldPosition.getX()) + 0.5d, ((double) this.worldPosition.getY()) + 0.5d, ((double) this.worldPosition.getZ()) + 0.5d) <= 64.0d; } public RenderType getDynamicRenderType() { return this.dynamicRenderType; } @OnlyIn(Dist.CLIENT) public void initImage() { if (this.textureManager == null) { this.textureManager = Minecraft.getInstance().getTextureManager(); } this.canvasData.initImage(); if ((getLevel() instanceof ClientLevel) && this.texture == null && this.canvasData.isValid()) { this.texture = new DynamicTexture(this.canvasData.textureWidth(), this.canvasData.textureHeight(), true); ResourceLocation resourcelocation = this.textureManager.register("artpad/dyn", this.texture); this.dynamicRenderType = RenderType.text(resourcelocation); updateTexture(); } } private void updateTexture() { if (!this.canvasData.isValid()) { return; } if (getLevel() instanceof ClientLevel) { for (int i = 0; i < this.canvasData.textureHeight(); i++) { for (int j = 0; j < this.canvasData.textureWidth(); j++) { int textureWidth = j + (i * this.canvasData.textureWidth()); if (this.texture != null && this.texture.getPixels() != null && this.canvasData.isValid()) { try { this.texture.getPixels().setPixelRGBA(j, i, this.canvasData.getAbgrOutputPixel(j, i)); } catch (IllegalStateException e) { ModernLifeCommon.LOGGER.warn("Unallocated image error"); } } } } try { if (this.texture != null && this.canvasData.isValid()) { this.texture.upload(); } } catch (IllegalStateException e2) { ModernLifeCommon.LOGGER.warn("Unallocated image error"); } } if (getLevel() instanceof ServerLevel) { getLevel().markAndNotifyBlock(getBlockPos(), getLevel().getChunkAt(getBlockPos()), getBlockState(), getBlockState(), 2, 0); } } }