Importers and Exporters support covers
This commit is contained in:
@@ -40,12 +40,6 @@ public class CableNetworkNode extends NetworkNode implements ICoverable {
|
||||
super.read(tag);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update() {
|
||||
super.update();
|
||||
//WorldUtils.updateBlock(world, pos);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompoundNBT write(CompoundNBT tag) {
|
||||
tag.put("Cover", this.coverManager.writeToNbt());
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
package com.refinedmods.refinedstorage.apiimpl.network.node;
|
||||
|
||||
import com.refinedmods.refinedstorage.RS;
|
||||
import com.refinedmods.refinedstorage.api.network.node.ICoverable;
|
||||
import com.refinedmods.refinedstorage.api.util.Action;
|
||||
import com.refinedmods.refinedstorage.api.util.IComparer;
|
||||
import com.refinedmods.refinedstorage.apiimpl.API;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager;
|
||||
import com.refinedmods.refinedstorage.inventory.fluid.FluidInventory;
|
||||
import com.refinedmods.refinedstorage.inventory.item.BaseItemHandler;
|
||||
import com.refinedmods.refinedstorage.inventory.item.UpgradeItemHandler;
|
||||
@@ -27,7 +29,7 @@ import net.minecraftforge.items.IItemHandler;
|
||||
import net.minecraftforge.items.IItemHandlerModifiable;
|
||||
import net.minecraftforge.items.ItemHandlerHelper;
|
||||
|
||||
public class ExporterNetworkNode extends NetworkNode implements IComparable, IType {
|
||||
public class ExporterNetworkNode extends NetworkNode implements IComparable, IType, ICoverable {
|
||||
public static final ResourceLocation ID = new ResourceLocation(RS.ID, "exporter");
|
||||
|
||||
private static final String NBT_COMPARE = "Compare";
|
||||
@@ -72,8 +74,11 @@ public class ExporterNetworkNode extends NetworkNode implements IComparable, ITy
|
||||
|
||||
private int filterSlot;
|
||||
|
||||
private CoverManager coverManager;
|
||||
|
||||
public ExporterNetworkNode(World world, BlockPos pos) {
|
||||
super(world, pos);
|
||||
this.coverManager = new CoverManager(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -244,9 +249,8 @@ public class ExporterNetworkNode extends NetworkNode implements IComparable, ITy
|
||||
@Override
|
||||
public CompoundNBT write(CompoundNBT tag) {
|
||||
super.write(tag);
|
||||
|
||||
tag.put("Cover", this.coverManager.writeToNbt());
|
||||
StackUtils.writeItems(upgrades, 1, tag);
|
||||
|
||||
return tag;
|
||||
}
|
||||
|
||||
@@ -267,7 +271,7 @@ public class ExporterNetworkNode extends NetworkNode implements IComparable, ITy
|
||||
@Override
|
||||
public void read(CompoundNBT tag) {
|
||||
super.read(tag);
|
||||
|
||||
if (tag.contains("Cover")) this.coverManager.readFromNbt(tag.getCompound("Cover"));
|
||||
StackUtils.readItems(upgrades, 1, tag);
|
||||
}
|
||||
|
||||
@@ -320,4 +324,9 @@ public class ExporterNetworkNode extends NetworkNode implements IComparable, ITy
|
||||
public FluidInventory getFluidFilters() {
|
||||
return fluidFilters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CoverManager getCoverManager() {
|
||||
return coverManager;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
package com.refinedmods.refinedstorage.apiimpl.network.node;
|
||||
|
||||
import com.refinedmods.refinedstorage.RS;
|
||||
import com.refinedmods.refinedstorage.api.network.node.ICoverable;
|
||||
import com.refinedmods.refinedstorage.api.util.Action;
|
||||
import com.refinedmods.refinedstorage.api.util.IComparer;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager;
|
||||
import com.refinedmods.refinedstorage.inventory.fluid.FluidInventory;
|
||||
import com.refinedmods.refinedstorage.inventory.item.BaseItemHandler;
|
||||
import com.refinedmods.refinedstorage.inventory.item.UpgradeItemHandler;
|
||||
@@ -28,7 +30,7 @@ import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
import net.minecraftforge.items.IItemHandlerModifiable;
|
||||
|
||||
public class ImporterNetworkNode extends NetworkNode implements IComparable, IWhitelistBlacklist, IType {
|
||||
public class ImporterNetworkNode extends NetworkNode implements IComparable, IWhitelistBlacklist, IType, ICoverable {
|
||||
public static final ResourceLocation ID = new ResourceLocation(RS.ID, "importer");
|
||||
|
||||
private static final String NBT_COMPARE = "Compare";
|
||||
@@ -47,8 +49,11 @@ public class ImporterNetworkNode extends NetworkNode implements IComparable, IWh
|
||||
|
||||
private int currentSlot;
|
||||
|
||||
private CoverManager coverManager;
|
||||
|
||||
public ImporterNetworkNode(World world, BlockPos pos) {
|
||||
super(world, pos);
|
||||
this.coverManager = new CoverManager(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -148,7 +153,7 @@ public class ImporterNetworkNode extends NetworkNode implements IComparable, IWh
|
||||
@Override
|
||||
public void read(CompoundNBT tag) {
|
||||
super.read(tag);
|
||||
|
||||
if (tag.contains("Cover")) this.coverManager.readFromNbt(tag.getCompound("Cover"));
|
||||
StackUtils.readItems(upgrades, 1, tag);
|
||||
}
|
||||
|
||||
@@ -160,7 +165,7 @@ public class ImporterNetworkNode extends NetworkNode implements IComparable, IWh
|
||||
@Override
|
||||
public CompoundNBT write(CompoundNBT tag) {
|
||||
super.write(tag);
|
||||
|
||||
tag.put("Cover", this.coverManager.writeToNbt());
|
||||
StackUtils.writeItems(upgrades, 1, tag);
|
||||
|
||||
return tag;
|
||||
@@ -234,4 +239,9 @@ public class ImporterNetworkNode extends NetworkNode implements IComparable, IWh
|
||||
public FluidInventory getFluidFilters() {
|
||||
return fluidFilters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CoverManager getCoverManager() {
|
||||
return coverManager;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,15 +69,16 @@ public class ExporterBlock extends CableBlock {
|
||||
|
||||
@Override
|
||||
public VoxelShape getShape(BlockState state, IBlockReader world, BlockPos pos, ISelectionContext ctx) {
|
||||
return ShapeCache.getOrCreate(state, s -> {
|
||||
return ConstantsCable.addCoverVoxelShapes(ShapeCache.getOrCreate(state, s -> {
|
||||
VoxelShape shape = getCableShape(s);
|
||||
|
||||
shape = VoxelShapes.or(shape, getLineShape(s));
|
||||
|
||||
return ConstantsCable.addCoverVoxelShapes(shape, world, pos);
|
||||
});
|
||||
return shape;
|
||||
}), world, pos);
|
||||
}
|
||||
|
||||
|
||||
private VoxelShape getLineShape(BlockState state) {
|
||||
Direction direction = state.get(getDirection().getProperty());
|
||||
|
||||
|
||||
@@ -69,13 +69,13 @@ public class ImporterBlock extends CableBlock {
|
||||
|
||||
@Override
|
||||
public VoxelShape getShape(BlockState state, IBlockReader world, BlockPos pos, ISelectionContext ctx) {
|
||||
return ShapeCache.getOrCreate(state, s -> {
|
||||
return ConstantsCable.addCoverVoxelShapes(ShapeCache.getOrCreate(state, s -> {
|
||||
VoxelShape shape = getCableShape(s);
|
||||
|
||||
shape = VoxelShapes.or(shape, getLineShape(s));
|
||||
|
||||
return ConstantsCable.addCoverVoxelShapes(shape, world, pos);
|
||||
});
|
||||
return shape;
|
||||
}), world, pos);
|
||||
}
|
||||
|
||||
private VoxelShape getLineShape(BlockState state) {
|
||||
|
||||
@@ -112,6 +112,8 @@ public class ClientSetup {
|
||||
new ResourceLocation(RS.ID, "block/disks/leds")
|
||||
));
|
||||
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "cable"), (base, registry) -> new BakedModelCableCover(base));
|
||||
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "exporter"), (base, registry) -> new BakedModelCableCover(base));
|
||||
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "importer"), (base, registry) -> new BakedModelCableCover(base));
|
||||
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "cover"), (base, registry) -> new BakedModelCover(ItemStack.EMPTY, CoverType.NORMAL));
|
||||
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "hollow_cover"), (base, registry) -> new BakedModelCover(ItemStack.EMPTY, CoverType.HOLLOW));
|
||||
|
||||
|
||||
@@ -30,8 +30,10 @@ import java.util.HashMap;
|
||||
|
||||
public class CableTile extends NetworkNodeTile<CableNetworkNode> {
|
||||
|
||||
public static final TileDataParameter<CompoundNBT, CableTile> COVER_MANAGER = new TileDataParameter<>(DataSerializers.COMPOUND_NBT, new CompoundNBT(), t -> t.getNode().getCoverManager().writeToNbt(), (t, v) -> t.getNode().getCoverManager().readFromNbt(v), (initial, p) -> Minecraft.getInstance().enqueue(() -> {
|
||||
|
||||
public static final TileDataParameter<CompoundNBT, CableTile> COVER_MANAGER = new TileDataParameter<>(DataSerializers.COMPOUND_NBT, new CompoundNBT(),
|
||||
t -> t.getNode().getCoverManager().writeToNbt(),
|
||||
(t, v) -> t.getNode().getCoverManager().readFromNbt(v),
|
||||
(initial, p) -> Minecraft.getInstance().enqueue(() -> {
|
||||
}));
|
||||
|
||||
static {
|
||||
|
||||
@@ -2,23 +2,43 @@ package com.refinedmods.refinedstorage.tile;
|
||||
|
||||
import com.refinedmods.refinedstorage.RSTiles;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.ExporterNetworkNode;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager;
|
||||
import com.refinedmods.refinedstorage.tile.config.IComparable;
|
||||
import com.refinedmods.refinedstorage.tile.config.IType;
|
||||
import com.refinedmods.refinedstorage.tile.data.TileDataManager;
|
||||
import com.refinedmods.refinedstorage.tile.data.TileDataParameter;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.network.datasync.DataSerializers;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.model.data.IModelData;
|
||||
import net.minecraftforge.client.model.data.ModelDataMap;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class ExporterTile extends NetworkNodeTile<ExporterNetworkNode> {
|
||||
|
||||
public static final TileDataParameter<CompoundNBT, ExporterTile> COVER_MANAGER = new TileDataParameter<>(DataSerializers.COMPOUND_NBT, new CompoundNBT(),
|
||||
t -> t.getNode().getCoverManager().writeToNbt(),
|
||||
(t, v) -> t.getNode().getCoverManager().readFromNbt(v),
|
||||
(initial, p) -> Minecraft.getInstance().enqueue(() -> {
|
||||
}));
|
||||
|
||||
public static final TileDataParameter<Integer, ExporterTile> COMPARE = IComparable.createParameter();
|
||||
public static final TileDataParameter<Integer, ExporterTile> TYPE = IType.createParameter();
|
||||
|
||||
static {
|
||||
TileDataManager.registerParameter(COVER_MANAGER);
|
||||
}
|
||||
|
||||
public ExporterTile() {
|
||||
super(RSTiles.EXPORTER);
|
||||
|
||||
dataManager.addWatchedParameter(COMPARE);
|
||||
dataManager.addWatchedParameter(TYPE);
|
||||
dataManager.addWatchedParameter(COVER_MANAGER);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -26,4 +46,29 @@ public class ExporterTile extends NetworkNodeTile<ExporterNetworkNode> {
|
||||
public ExporterNetworkNode createNode(World world, BlockPos pos) {
|
||||
return new ExporterNetworkNode(world, pos);
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public IModelData getModelData() {
|
||||
return new ModelDataMap.Builder().withInitial(CoverManager.PROPERTY, this.getNode().getCoverManager()).build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompoundNBT writeUpdate(CompoundNBT tag) {
|
||||
super.writeUpdate(tag);
|
||||
tag.put("Covers", this.getNode().getCoverManager().writeToNbt());
|
||||
|
||||
return tag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readUpdate(CompoundNBT tag) {
|
||||
super.readUpdate(tag);
|
||||
|
||||
this.getNode().getCoverManager().readFromNbt(tag.getCompound("Covers"));
|
||||
|
||||
requestModelDataUpdate();
|
||||
|
||||
WorldUtils.updateBlock(world, pos);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,12 +2,20 @@ package com.refinedmods.refinedstorage.tile;
|
||||
|
||||
import com.refinedmods.refinedstorage.RSTiles;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.ImporterNetworkNode;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager;
|
||||
import com.refinedmods.refinedstorage.tile.config.IComparable;
|
||||
import com.refinedmods.refinedstorage.tile.config.IType;
|
||||
import com.refinedmods.refinedstorage.tile.config.IWhitelistBlacklist;
|
||||
import com.refinedmods.refinedstorage.tile.data.TileDataManager;
|
||||
import com.refinedmods.refinedstorage.tile.data.TileDataParameter;
|
||||
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.network.datasync.DataSerializers;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.model.data.IModelData;
|
||||
import net.minecraftforge.client.model.data.ModelDataMap;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
@@ -16,12 +24,24 @@ public class ImporterTile extends NetworkNodeTile<ImporterNetworkNode> {
|
||||
public static final TileDataParameter<Integer, ImporterTile> WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter();
|
||||
public static final TileDataParameter<Integer, ImporterTile> TYPE = IType.createParameter();
|
||||
|
||||
public static final TileDataParameter<CompoundNBT, ImporterTile> COVER_MANAGER = new TileDataParameter<>(DataSerializers.COMPOUND_NBT, new CompoundNBT(),
|
||||
t -> t.getNode().getCoverManager().writeToNbt(),
|
||||
(t, v) -> t.getNode().getCoverManager().readFromNbt(v),
|
||||
(initial, p) -> Minecraft.getInstance().enqueue(() -> {
|
||||
}));
|
||||
|
||||
static {
|
||||
TileDataManager.registerParameter(COVER_MANAGER);
|
||||
}
|
||||
|
||||
|
||||
public ImporterTile() {
|
||||
super(RSTiles.IMPORTER);
|
||||
|
||||
dataManager.addWatchedParameter(COMPARE);
|
||||
dataManager.addWatchedParameter(WHITELIST_BLACKLIST);
|
||||
dataManager.addWatchedParameter(TYPE);
|
||||
dataManager.addWatchedParameter(COVER_MANAGER);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -29,4 +49,30 @@ public class ImporterTile extends NetworkNodeTile<ImporterNetworkNode> {
|
||||
public ImporterNetworkNode createNode(World world, BlockPos pos) {
|
||||
return new ImporterNetworkNode(world, pos);
|
||||
}
|
||||
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public IModelData getModelData() {
|
||||
return new ModelDataMap.Builder().withInitial(CoverManager.PROPERTY, this.getNode().getCoverManager()).build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompoundNBT writeUpdate(CompoundNBT tag) {
|
||||
super.writeUpdate(tag);
|
||||
tag.put("Covers", this.getNode().getCoverManager().writeToNbt());
|
||||
|
||||
return tag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readUpdate(CompoundNBT tag) {
|
||||
super.readUpdate(tag);
|
||||
|
||||
this.getNode().getCoverManager().readFromNbt(tag.getCompound("Covers"));
|
||||
|
||||
requestModelDataUpdate();
|
||||
|
||||
WorldUtils.updateBlock(world, pos);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user