Fix base TE classes
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
package com.raoulvdberge.refinedstorage;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.container.*;
|
||||
import com.raoulvdberge.refinedstorage.container.factory.TileContainerFactory;
|
||||
import net.minecraft.inventory.container.ContainerType;
|
||||
import net.minecraftforge.common.extensions.IForgeContainerType;
|
||||
import net.minecraftforge.event.RegistryEvent;
|
||||
import net.minecraftforge.registries.ObjectHolder;
|
||||
|
||||
public final class RSContainers {
|
||||
@@ -53,4 +56,8 @@ public final class RSContainers {
|
||||
public static final ContainerType<ContainerStorageMonitor> STORAGE_MONITOR = null;
|
||||
@ObjectHolder(RS.ID + ":wireless_transmitter")
|
||||
public static final ContainerType<ContainerSecurityManager> WIRELESS_TRANSMITTER = null;
|
||||
|
||||
public void registerContainers(final RegistryEvent.Register<ContainerType<?>> event) {
|
||||
event.getRegistry().register(IForgeContainerType.create(new TileContainerFactory<>((ContainerConstructor::new))).setRegistryName(RS.ID, "constructor"));
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,30 @@
|
||||
package com.raoulvdberge.refinedstorage.container.factory;
|
||||
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.inventory.container.Container;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraftforge.fml.network.IContainerFactory;
|
||||
|
||||
public class TileContainerFactory<C extends Container, T extends TileEntity> implements IContainerFactory<C> {
|
||||
public interface Provider<C extends Container, T extends TileEntity> {
|
||||
C create(T tile, PlayerEntity player, int windowId);
|
||||
}
|
||||
|
||||
private Provider<C, T> provider;
|
||||
|
||||
public TileContainerFactory(Provider<C, T> provider) {
|
||||
this.provider = provider;
|
||||
}
|
||||
|
||||
@Override
|
||||
public C create(int windowId, PlayerInventory inv, PacketBuffer data) {
|
||||
int x = data.readInt();
|
||||
int y = data.readInt();
|
||||
int z = data.readInt();
|
||||
|
||||
return this.provider.create((T) inv.player.world.getTileEntity(new BlockPos(x, y, z)), inv.player, windowId);
|
||||
}
|
||||
}
|
@@ -8,6 +8,7 @@ import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.network.NetworkManager;
|
||||
import net.minecraft.network.play.server.SUpdateTileEntityPacket;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.tileentity.TileEntityType;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
|
||||
@@ -20,6 +21,10 @@ public abstract class TileBase extends TileEntity {
|
||||
protected IDirectionHandler directionHandler = new DirectionHandlerTile();
|
||||
protected TileDataManager dataManager = new TileDataManager(this);
|
||||
|
||||
public TileBase(TileEntityType<?> tileType) {
|
||||
super(tileType);
|
||||
}
|
||||
|
||||
public void setDirection(Direction direction) {
|
||||
clientDirection = direction;
|
||||
|
||||
|
@@ -6,18 +6,18 @@ import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeProxy;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.ICoverable;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.util.OneSixMigrationHelper;
|
||||
import com.raoulvdberge.refinedstorage.capability.CapabilityNetworkNodeProxy;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IRedstoneConfigurable;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.RedstoneMode;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||
import com.raoulvdberge.refinedstorage.tile.direction.DirectionHandlerNetworkNode;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.tileentity.TileEntityType;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.util.Constants;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
@@ -31,7 +31,11 @@ public abstract class TileNode<N extends NetworkNode> extends TileBase implement
|
||||
|
||||
private N clientNode;
|
||||
|
||||
public TileNode() {
|
||||
private LazyOptional<INetworkNodeProxy<N>> networkNodeProxy = LazyOptional.of(() -> this);
|
||||
|
||||
public TileNode(TileEntityType<?> tileType) {
|
||||
super(tileType);
|
||||
|
||||
directionHandler = new DirectionHandlerNetworkNode(this);
|
||||
|
||||
dataManager.addWatchedParameter(REDSTONE_MODE);
|
||||
@@ -62,25 +66,13 @@ public abstract class TileNode<N extends NetworkNode> extends TileBase implement
|
||||
public void readUpdate(CompoundNBT tag) {
|
||||
super.readUpdate(tag);
|
||||
|
||||
if (getNode() instanceof ICoverable && tag.hasKey(NBT_COVERS)) {
|
||||
if (getNode() instanceof ICoverable && tag.contains(NBT_COVERS)) {
|
||||
((ICoverable) getNode()).getCoverManager().readFromNbt(tag.getList(NBT_COVERS, Constants.NBT.TAG_COMPOUND));
|
||||
}
|
||||
|
||||
getNode().setActive(tag.getBoolean(NBT_ACTIVE));
|
||||
}
|
||||
|
||||
private Direction directionToMigrate;
|
||||
|
||||
@Override
|
||||
public void read(CompoundNBT tag) {
|
||||
super.read(tag);
|
||||
|
||||
OneSixMigrationHelper.removalHook();
|
||||
if (tag.hasKey(NBT_DIRECTION)) {
|
||||
directionToMigrate = Direction.byIndex(tag.getInteger("Direction"));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public IItemHandler getDrops() {
|
||||
@@ -108,15 +100,6 @@ public abstract class TileNode<N extends NetworkNode> extends TileBase implement
|
||||
manager.markForSaving();
|
||||
}
|
||||
|
||||
OneSixMigrationHelper.removalHook();
|
||||
if (directionToMigrate != null) {
|
||||
((NetworkNode) node).setDirection(directionToMigrate);
|
||||
|
||||
directionToMigrate = null;
|
||||
|
||||
markDirty();
|
||||
}
|
||||
|
||||
return (N) node;
|
||||
}
|
||||
|
||||
@@ -124,21 +107,13 @@ public abstract class TileNode<N extends NetworkNode> extends TileBase implement
|
||||
|
||||
public abstract String getNodeId();
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public boolean hasCapability(@Nonnull Capability<?> capability, @Nullable Direction side) {
|
||||
if (capability == CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY) {
|
||||
return true;
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap) {
|
||||
if (cap == CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY) {
|
||||
return networkNodeProxy.cast();
|
||||
}
|
||||
|
||||
return super.hasCapability(capability, side);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T getCapability(@Nonnull Capability<T> capability, @Nullable Direction side) {
|
||||
if (capability == CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY) {
|
||||
return CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY.cast(this);
|
||||
}
|
||||
|
||||
return super.getCapability(capability, side);
|
||||
return super.getCapability(cap);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user