Added cover support for the constructor and destructor
This commit is contained in:
@@ -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;
|
||||
@@ -43,7 +45,7 @@ import net.minecraftforge.items.IItemHandlerModifiable;
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public class ConstructorNetworkNode extends NetworkNode implements IComparable, IType {
|
||||
public class ConstructorNetworkNode extends NetworkNode implements IComparable, IType, ICoverable {
|
||||
public static final ResourceLocation ID = new ResourceLocation(RS.ID, "constructor");
|
||||
|
||||
private static final String NBT_COMPARE = "Compare";
|
||||
@@ -64,8 +66,11 @@ public class ConstructorNetworkNode extends NetworkNode implements IComparable,
|
||||
private int type = IType.ITEMS;
|
||||
private boolean drop = false;
|
||||
|
||||
private CoverManager coverManager;
|
||||
|
||||
public ConstructorNetworkNode(World world, BlockPos pos) {
|
||||
super(world, pos);
|
||||
this.coverManager = new CoverManager(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -174,6 +179,8 @@ public class ConstructorNetworkNode extends NetworkNode implements IComparable,
|
||||
public void read(CompoundNBT tag) {
|
||||
super.read(tag);
|
||||
|
||||
if (tag.contains("Cover")) this.coverManager.readFromNbt(tag.getCompound("Cover"));
|
||||
|
||||
StackUtils.readItems(upgrades, 1, tag);
|
||||
}
|
||||
|
||||
@@ -186,6 +193,8 @@ public class ConstructorNetworkNode extends NetworkNode implements IComparable,
|
||||
public CompoundNBT write(CompoundNBT tag) {
|
||||
super.write(tag);
|
||||
|
||||
tag.put("Cover", this.coverManager.writeToNbt());
|
||||
|
||||
StackUtils.writeItems(upgrades, 1, tag);
|
||||
|
||||
return tag;
|
||||
@@ -268,6 +277,11 @@ public class ConstructorNetworkNode extends NetworkNode implements IComparable,
|
||||
return fluidFilters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CoverManager getCoverManager() {
|
||||
return coverManager;
|
||||
}
|
||||
|
||||
private class NetworkFluidHandler implements IFluidHandler {
|
||||
private final FluidStack resource;
|
||||
|
||||
|
@@ -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;
|
||||
@@ -47,7 +49,7 @@ import net.minecraftforge.items.IItemHandlerModifiable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class DestructorNetworkNode extends NetworkNode implements IComparable, IWhitelistBlacklist, IType {
|
||||
public class DestructorNetworkNode extends NetworkNode implements IComparable, IWhitelistBlacklist, IType, ICoverable {
|
||||
public static final ResourceLocation ID = new ResourceLocation(RS.ID, "destructor");
|
||||
|
||||
private static final String NBT_COMPARE = "Compare";
|
||||
@@ -71,8 +73,11 @@ public class DestructorNetworkNode extends NetworkNode implements IComparable, I
|
||||
private boolean pickupItem = false;
|
||||
private ItemStack tool = createTool();
|
||||
|
||||
private CoverManager coverManager;
|
||||
|
||||
public DestructorNetworkNode(World world, BlockPos pos) {
|
||||
super(world, pos);
|
||||
this.coverManager = new CoverManager(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -250,6 +255,8 @@ public class DestructorNetworkNode extends NetworkNode implements IComparable, I
|
||||
public void read(CompoundNBT tag) {
|
||||
super.read(tag);
|
||||
|
||||
if (tag.contains("Cover")) this.coverManager.readFromNbt(tag.getCompound("Cover"));
|
||||
|
||||
StackUtils.readItems(upgrades, 1, tag);
|
||||
}
|
||||
|
||||
@@ -262,6 +269,8 @@ public class DestructorNetworkNode extends NetworkNode implements IComparable, I
|
||||
public CompoundNBT write(CompoundNBT tag) {
|
||||
super.write(tag);
|
||||
|
||||
tag.put("Cover", this.coverManager.writeToNbt());
|
||||
|
||||
StackUtils.writeItems(upgrades, 1, tag);
|
||||
|
||||
return tag;
|
||||
@@ -348,4 +357,9 @@ public class DestructorNetworkNode extends NetworkNode implements IComparable, I
|
||||
public void setPickupItem(boolean pickupItem) {
|
||||
this.pickupItem = pickupItem;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CoverManager getCoverManager() {
|
||||
return coverManager;
|
||||
}
|
||||
}
|
||||
|
@@ -249,7 +249,9 @@ 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;
|
||||
}
|
||||
@@ -271,7 +273,9 @@ 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);
|
||||
}
|
||||
|
||||
|
@@ -153,7 +153,9 @@ 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);
|
||||
}
|
||||
|
||||
@@ -165,7 +167,9 @@ 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;
|
||||
|
@@ -52,13 +52,13 @@ public class ConstructorBlock 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, getHeadShape(s));
|
||||
|
||||
return ConstantsCable.addCoverVoxelShapes(shape, world, pos);
|
||||
});
|
||||
return shape;
|
||||
}), world, pos);
|
||||
}
|
||||
|
||||
private VoxelShape getHeadShape(BlockState state) {
|
||||
|
@@ -52,13 +52,13 @@ public class DestructorBlock 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, getHeadShape(s));
|
||||
|
||||
return ConstantsCable.addCoverVoxelShapes(shape, world, pos);
|
||||
});
|
||||
return shape;
|
||||
}), world, pos);
|
||||
}
|
||||
|
||||
private VoxelShape getHeadShape(BlockState state) {
|
||||
|
@@ -97,8 +97,6 @@ public class ClientSetup {
|
||||
"block/security_manager/cutouts/right_")
|
||||
)));
|
||||
forEachColorApply("wireless_transmitter", (name, color) -> bakedModelOverrideRegistry.add(name, (base, registry) -> new FullbrightBakedModel(base, true, getColoredModel(color, "block/wireless_transmitter/cutouts/"))));
|
||||
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "constructor"), (base, registry) -> new FullbrightBakedModel(base, true, new ResourceLocation(RS.ID, "block/constructor/cutouts/connected")));
|
||||
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "destructor"), (base, registry) -> new FullbrightBakedModel(base, true, new ResourceLocation(RS.ID, "block/destructor/cutouts/connected")));
|
||||
|
||||
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "disk_drive"), (base, registry) -> new FullbrightBakedModel(
|
||||
new DiskDriveBakedModel(
|
||||
@@ -114,6 +112,8 @@ public class ClientSetup {
|
||||
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, "constructor"), (base, registry) -> new BakedModelCableCover(new FullbrightBakedModel(base, true, new ResourceLocation(RS.ID, "block/constructor/cutouts/connected"))));
|
||||
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "destructor"), (base, registry) -> new BakedModelCableCover(new FullbrightBakedModel(base, true, new ResourceLocation(RS.ID, "block/destructor/cutouts/connected"))));
|
||||
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));
|
||||
|
||||
|
@@ -33,8 +33,7 @@ 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(() -> {
|
||||
}));
|
||||
(initial, p) -> Minecraft.getInstance().enqueue(() -> {}));
|
||||
|
||||
static {
|
||||
TileDataManager.registerParameter(COVER_MANAGER);
|
||||
|
@@ -2,12 +2,19 @@ package com.refinedmods.refinedstorage.tile;
|
||||
|
||||
import com.refinedmods.refinedstorage.RSTiles;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.ConstructorNetworkNode;
|
||||
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;
|
||||
|
||||
@@ -19,12 +26,22 @@ public class ConstructorTile extends NetworkNodeTile<ConstructorNetworkNode> {
|
||||
t.getNode().markDirty();
|
||||
});
|
||||
|
||||
public static final TileDataParameter<CompoundNBT, ConstructorTile> 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 ConstructorTile() {
|
||||
super(RSTiles.CONSTRUCTOR);
|
||||
|
||||
dataManager.addWatchedParameter(COMPARE);
|
||||
dataManager.addWatchedParameter(TYPE);
|
||||
dataManager.addWatchedParameter(DROP);
|
||||
dataManager.addWatchedParameter(COVER_MANAGER);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -32,4 +49,30 @@ public class ConstructorTile extends NetworkNodeTile<ConstructorNetworkNode> {
|
||||
public ConstructorNetworkNode createNode(World world, BlockPos pos) {
|
||||
return new ConstructorNetworkNode(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,13 +2,20 @@ package com.refinedmods.refinedstorage.tile;
|
||||
|
||||
import com.refinedmods.refinedstorage.RSTiles;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.DestructorNetworkNode;
|
||||
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;
|
||||
|
||||
@@ -21,6 +28,15 @@ public class DestructorTile extends NetworkNodeTile<DestructorNetworkNode> {
|
||||
t.getNode().markDirty();
|
||||
});
|
||||
|
||||
public static final TileDataParameter<CompoundNBT, DestructorTile> 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 DestructorTile() {
|
||||
super(RSTiles.DESTRUCTOR);
|
||||
|
||||
@@ -35,4 +51,30 @@ public class DestructorTile extends NetworkNodeTile<DestructorNetworkNode> {
|
||||
public DestructorNetworkNode createNode(World world, BlockPos pos) {
|
||||
return new DestructorNetworkNode(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);
|
||||
}
|
||||
}
|
||||
|
@@ -23,8 +23,7 @@ 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(() -> {
|
||||
}));
|
||||
(initial, p) -> Minecraft.getInstance().enqueue(() -> {}));
|
||||
|
||||
public static final TileDataParameter<Integer, ExporterTile> COMPARE = IComparable.createParameter();
|
||||
public static final TileDataParameter<Integer, ExporterTile> TYPE = IType.createParameter();
|
||||
|
@@ -27,14 +27,12 @@ public class ImporterTile extends NetworkNodeTile<ImporterNetworkNode> {
|
||||
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(() -> {
|
||||
}));
|
||||
(initial, p) -> Minecraft.getInstance().enqueue(() -> {}));
|
||||
|
||||
static {
|
||||
TileDataManager.registerParameter(COVER_MANAGER);
|
||||
}
|
||||
|
||||
|
||||
public ImporterTile() {
|
||||
super(RSTiles.IMPORTER);
|
||||
|
||||
@@ -50,7 +48,6 @@ public class ImporterTile extends NetworkNodeTile<ImporterNetworkNode> {
|
||||
return new ImporterNetworkNode(world, pos);
|
||||
}
|
||||
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public IModelData getModelData() {
|
||||
@@ -60,6 +57,7 @@ public class ImporterTile extends NetworkNodeTile<ImporterNetworkNode> {
|
||||
@Override
|
||||
public CompoundNBT writeUpdate(CompoundNBT tag) {
|
||||
super.writeUpdate(tag);
|
||||
|
||||
tag.put("Covers", this.getNode().getCoverManager().writeToNbt());
|
||||
|
||||
return tag;
|
||||
|
Reference in New Issue
Block a user