package com.dairymoose.modernlife.tileentities; import com.dairymoose.modernlife.core.CustomBlocks; import com.dairymoose.modernlife.core.ModernLifeCommon; import com.mojang.datafixers.types.Type; import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; 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 org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; /* loaded from: outputsrg.jar:com/dairymoose/modernlife/tileentities/PowerReceiverBlockEntity.class */ public class PowerReceiverBlockEntity extends BlockEntity implements IChannelHolder { private int currentChannel; public static Map> perChannelPowerReceivers = new ConcurrentHashMap(); public static final BlockEntityType POWER_RECEIVER = BlockEntityType.Builder.of(PowerReceiverBlockEntity::new, new Block[]{(Block) CustomBlocks.BLOCK_POWER_RECEIVER.get()}).build((Type) null); private static final Logger LOGGER = LogManager.getLogger(); public String toString() { return "(channel=" + getCurrentChannel() + ", pos=" + getBlockPos() + ")"; } public CompoundTag getUpdateTag() { CompoundTag nbt = super.getUpdateTag(); nbt.putInt("channel", this.currentChannel); return nbt; } public void handleUpdateTag(CompoundTag tag) { if (tag.contains("channel")) { this.currentChannel = tag.getInt("channel"); } super.handleUpdateTag(tag); } protected void saveAdditional(CompoundTag nbt) { nbt.putInt("channel", this.currentChannel); ModernLifeCommon.LOGGER.debug("save with channel=" + this.currentChannel + " at pos=" + getBlockPos()); } public void load(CompoundTag nbt) { super.load(nbt); if (nbt.contains("channel")) { this.currentChannel = nbt.getInt("channel"); addToChannel(this.currentChannel); } ModernLifeCommon.LOGGER.debug("load with channel=" + this.currentChannel); } public boolean equals(Object other) { if (other instanceof PowerReceiverBlockEntity) { PowerReceiverBlockEntity otherTransmitter = (PowerReceiverBlockEntity) other; return getBlockPos().equals(otherTransmitter.getBlockPos()); } return false; } public int hashCode() { return getBlockPos().hashCode(); } public void addToChannel(int channel) { ModernLifeCommon.LOGGER.debug("adding receiver at " + getBlockPos() + " with channel: " + this.currentChannel); Set entities = perChannelPowerReceivers.get(Integer.valueOf(channel)); if (entities == null) { entities = new HashSet(); perChannelPowerReceivers.put(Integer.valueOf(channel), entities); } entities.add(this); ModernLifeCommon.LOGGER.debug("receiver count = " + perChannelPowerReceivers.size()); } public void removeFromChannel(int channel) { ModernLifeCommon.LOGGER.debug("removing receiver at " + getBlockPos() + " with channel: " + this.currentChannel); Set entities = perChannelPowerReceivers.get(Integer.valueOf(channel)); if (entities == null) { entities = new HashSet(); perChannelPowerReceivers.put(Integer.valueOf(channel), entities); } entities.remove(this); ModernLifeCommon.LOGGER.debug("receiver count = " + perChannelPowerReceivers.size()); } public PowerReceiverBlockEntity(BlockPos pos, BlockState state) { super(POWER_RECEIVER, pos, state); this.currentChannel = 0; ModernLifeCommon.LOGGER.debug("PowerReceiverBlockEntity CONSTRUCTOR"); } @Override // com.dairymoose.modernlife.tileentities.IChannelHolder public int getCurrentChannel() { return this.currentChannel; } @Override // com.dairymoose.modernlife.tileentities.IChannelHolder public void setCurrentChannel(int newChannel) { setChanged(); removeFromChannel(this.currentChannel); this.currentChannel = newChannel; addToChannel(newChannel); ModernLifeCommon.LOGGER.debug("updating channel with world=" + getLevel()); getLevel().updateNeighborsAt(getBlockPos(), getBlockState().getBlock()); } }