Added cover support for the external storage and fixed some mappings issues
This commit is contained in:
14
build.gradle
14
build.gradle
@@ -97,20 +97,6 @@ sourceSets {
|
|||||||
main.resources.srcDirs += 'src/generated/resources'
|
main.resources.srcDirs += 'src/generated/resources'
|
||||||
}
|
}
|
||||||
|
|
||||||
processResources {
|
|
||||||
inputs.property 'version', project.version
|
|
||||||
|
|
||||||
from(sourceSets.main.resources.srcDirs) {
|
|
||||||
include 'META-INF/mods.toml'
|
|
||||||
|
|
||||||
expand 'version': project.version
|
|
||||||
}
|
|
||||||
|
|
||||||
from(sourceSets.main.resources.srcDirs) {
|
|
||||||
exclude 'META-INF/mods.toml'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
minecraft 'net.minecraftforge:forge:1.16.5-36.1.31'
|
minecraft 'net.minecraftforge:forge:1.16.5-36.1.31'
|
||||||
|
|
||||||
|
@@ -2,6 +2,7 @@ package com.refinedmods.refinedstorage.apiimpl.network.node;
|
|||||||
|
|
||||||
import com.refinedmods.refinedstorage.RS;
|
import com.refinedmods.refinedstorage.RS;
|
||||||
import com.refinedmods.refinedstorage.api.network.INetwork;
|
import com.refinedmods.refinedstorage.api.network.INetwork;
|
||||||
|
import com.refinedmods.refinedstorage.api.network.node.ICoverable;
|
||||||
import com.refinedmods.refinedstorage.api.storage.AccessType;
|
import com.refinedmods.refinedstorage.api.storage.AccessType;
|
||||||
import com.refinedmods.refinedstorage.api.storage.IStorage;
|
import com.refinedmods.refinedstorage.api.storage.IStorage;
|
||||||
import com.refinedmods.refinedstorage.api.storage.IStorageProvider;
|
import com.refinedmods.refinedstorage.api.storage.IStorageProvider;
|
||||||
@@ -12,6 +13,7 @@ import com.refinedmods.refinedstorage.api.storage.externalstorage.IExternalStora
|
|||||||
import com.refinedmods.refinedstorage.api.storage.externalstorage.IExternalStorageProvider;
|
import com.refinedmods.refinedstorage.api.storage.externalstorage.IExternalStorageProvider;
|
||||||
import com.refinedmods.refinedstorage.api.util.IComparer;
|
import com.refinedmods.refinedstorage.api.util.IComparer;
|
||||||
import com.refinedmods.refinedstorage.apiimpl.API;
|
import com.refinedmods.refinedstorage.apiimpl.API;
|
||||||
|
import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager;
|
||||||
import com.refinedmods.refinedstorage.apiimpl.storage.cache.FluidStorageCache;
|
import com.refinedmods.refinedstorage.apiimpl.storage.cache.FluidStorageCache;
|
||||||
import com.refinedmods.refinedstorage.apiimpl.storage.cache.ItemStorageCache;
|
import com.refinedmods.refinedstorage.apiimpl.storage.cache.ItemStorageCache;
|
||||||
import com.refinedmods.refinedstorage.inventory.fluid.FluidInventory;
|
import com.refinedmods.refinedstorage.inventory.fluid.FluidInventory;
|
||||||
@@ -39,7 +41,7 @@ import org.apache.logging.log4j.Logger;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.CopyOnWriteArrayList;
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
|
|
||||||
public class ExternalStorageNetworkNode extends NetworkNode implements IStorageProvider, IStorageScreen, IComparable, IWhitelistBlacklist, IPrioritizable, IType, IAccessType, IExternalStorageContext {
|
public class ExternalStorageNetworkNode extends NetworkNode implements IStorageProvider, IStorageScreen, IComparable, IWhitelistBlacklist, IPrioritizable, IType, IAccessType, IExternalStorageContext, ICoverable {
|
||||||
public static final ResourceLocation ID = new ResourceLocation(RS.ID, "external_storage");
|
public static final ResourceLocation ID = new ResourceLocation(RS.ID, "external_storage");
|
||||||
|
|
||||||
private static final Logger LOGGER = LogManager.getLogger(ExternalStorageNetworkNode.class);
|
private static final Logger LOGGER = LogManager.getLogger(ExternalStorageNetworkNode.class);
|
||||||
@@ -63,8 +65,11 @@ public class ExternalStorageNetworkNode extends NetworkNode implements IStorageP
|
|||||||
private final List<IExternalStorage<ItemStack>> itemStorages = new CopyOnWriteArrayList<>();
|
private final List<IExternalStorage<ItemStack>> itemStorages = new CopyOnWriteArrayList<>();
|
||||||
private final List<IExternalStorage<FluidStack>> fluidStorages = new CopyOnWriteArrayList<>();
|
private final List<IExternalStorage<FluidStack>> fluidStorages = new CopyOnWriteArrayList<>();
|
||||||
|
|
||||||
|
private CoverManager coverManager;
|
||||||
|
|
||||||
public ExternalStorageNetworkNode(World world, BlockPos pos) {
|
public ExternalStorageNetworkNode(World world, BlockPos pos) {
|
||||||
super(world, pos);
|
super(world, pos);
|
||||||
|
this.coverManager = new CoverManager(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -319,4 +324,27 @@ public class ExternalStorageNetworkNode extends NetworkNode implements IStorageP
|
|||||||
public List<IExternalStorage<FluidStack>> getFluidStorages() {
|
public List<IExternalStorage<FluidStack>> getFluidStorages() {
|
||||||
return fluidStorages;
|
return fluidStorages;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CoverManager getCoverManager() {
|
||||||
|
return coverManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void read(CompoundNBT tag) {
|
||||||
|
super.read(tag);
|
||||||
|
|
||||||
|
if (tag.contains("Cover")) this.coverManager.readFromNbt(tag.getCompound("Cover"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CompoundNBT write(CompoundNBT tag) {
|
||||||
|
super.write(tag);
|
||||||
|
|
||||||
|
tag.put("Cover", this.coverManager.writeToNbt());
|
||||||
|
|
||||||
|
return tag;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -50,13 +50,13 @@ public class ExternalStorageBlock extends CableBlock {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public VoxelShape getShape(BlockState state, IBlockReader world, BlockPos pos, ISelectionContext ctx) {
|
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);
|
VoxelShape shape = getCableShape(s);
|
||||||
|
|
||||||
shape = VoxelShapes.or(shape, getHeadShape(s));
|
shape = VoxelShapes.or(shape, getHeadShape(s));
|
||||||
|
|
||||||
return ConstantsCable.addCoverVoxelShapes(shape, world, pos);
|
return shape;
|
||||||
});
|
}), world, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
private VoxelShape getHeadShape(BlockState state) {
|
private VoxelShape getHeadShape(BlockState state) {
|
||||||
|
@@ -100,7 +100,7 @@ public class BakedModelCover extends BakedModelCableCover{
|
|||||||
public ItemOverrideList getOverrides() {
|
public ItemOverrideList getOverrides() {
|
||||||
return new ItemOverrideList() {
|
return new ItemOverrideList() {
|
||||||
@Override
|
@Override
|
||||||
public IBakedModel func_239290_a_(IBakedModel originalModel, ItemStack stack, @Nullable ClientWorld world, @Nullable LivingEntity entity) {
|
public IBakedModel getOverrideModel(IBakedModel originalModel, ItemStack stack, @Nullable ClientWorld world, @Nullable LivingEntity entity) {
|
||||||
return new BakedModelCover(stack, type);
|
return new BakedModelCover(stack, type);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -152,7 +152,7 @@ public class BakedModelCover extends BakedModelCableCover{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean func_230044_c_() {
|
public boolean isSideLit() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -108,6 +108,7 @@ public class ClientSetup {
|
|||||||
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "importer"), (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, "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, "destructor"), (base, registry) -> new BakedModelCableCover(new FullbrightBakedModel(base, true, new ResourceLocation(RS.ID, "block/destructor/cutouts/connected"))));
|
||||||
|
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "external_storage"), (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, "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));
|
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "hollow_cover"), (base, registry) -> new BakedModelCover(ItemStack.EMPTY, CoverType.HOLLOW));
|
||||||
|
|
||||||
|
@@ -44,6 +44,7 @@ public class DestructorTile extends NetworkNodeTile<DestructorNetworkNode> {
|
|||||||
dataManager.addWatchedParameter(WHITELIST_BLACKLIST);
|
dataManager.addWatchedParameter(WHITELIST_BLACKLIST);
|
||||||
dataManager.addWatchedParameter(TYPE);
|
dataManager.addWatchedParameter(TYPE);
|
||||||
dataManager.addWatchedParameter(PICKUP);
|
dataManager.addWatchedParameter(PICKUP);
|
||||||
|
dataManager.addWatchedParameter(COVER_MANAGER);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -4,12 +4,20 @@ import com.refinedmods.refinedstorage.RSTiles;
|
|||||||
import com.refinedmods.refinedstorage.api.storage.AccessType;
|
import com.refinedmods.refinedstorage.api.storage.AccessType;
|
||||||
import com.refinedmods.refinedstorage.api.storage.externalstorage.IExternalStorage;
|
import com.refinedmods.refinedstorage.api.storage.externalstorage.IExternalStorage;
|
||||||
import com.refinedmods.refinedstorage.apiimpl.network.node.ExternalStorageNetworkNode;
|
import com.refinedmods.refinedstorage.apiimpl.network.node.ExternalStorageNetworkNode;
|
||||||
|
import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager;
|
||||||
import com.refinedmods.refinedstorage.tile.config.*;
|
import com.refinedmods.refinedstorage.tile.config.*;
|
||||||
import com.refinedmods.refinedstorage.tile.data.RSSerializers;
|
import com.refinedmods.refinedstorage.tile.data.RSSerializers;
|
||||||
|
import com.refinedmods.refinedstorage.tile.data.TileDataManager;
|
||||||
import com.refinedmods.refinedstorage.tile.data.TileDataParameter;
|
import com.refinedmods.refinedstorage.tile.data.TileDataParameter;
|
||||||
|
import com.refinedmods.refinedstorage.util.WorldUtils;
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.nbt.CompoundNBT;
|
||||||
|
import net.minecraft.network.datasync.DataSerializers;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.client.model.data.IModelData;
|
||||||
|
import net.minecraftforge.client.model.data.ModelDataMap;
|
||||||
import net.minecraftforge.fluids.FluidStack;
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
@@ -47,6 +55,15 @@ public class ExternalStorageTile extends NetworkNodeTile<ExternalStorageNetworkN
|
|||||||
return capacity;
|
return capacity;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
public static final TileDataParameter<CompoundNBT, ExternalStorageTile> 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 ExternalStorageTile() {
|
public ExternalStorageTile() {
|
||||||
super(RSTiles.EXTERNAL_STORAGE);
|
super(RSTiles.EXTERNAL_STORAGE);
|
||||||
|
|
||||||
@@ -57,6 +74,7 @@ public class ExternalStorageTile extends NetworkNodeTile<ExternalStorageNetworkN
|
|||||||
dataManager.addWatchedParameter(CAPACITY);
|
dataManager.addWatchedParameter(CAPACITY);
|
||||||
dataManager.addWatchedParameter(TYPE);
|
dataManager.addWatchedParameter(TYPE);
|
||||||
dataManager.addWatchedParameter(ACCESS_TYPE);
|
dataManager.addWatchedParameter(ACCESS_TYPE);
|
||||||
|
dataManager.addWatchedParameter(COVER_MANAGER);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -64,4 +82,30 @@ public class ExternalStorageTile extends NetworkNodeTile<ExternalStorageNetworkN
|
|||||||
public ExternalStorageNetworkNode createNode(World world, BlockPos pos) {
|
public ExternalStorageNetworkNode createNode(World world, BlockPos pos) {
|
||||||
return new ExternalStorageNetworkNode(world, pos);
|
return new ExternalStorageNetworkNode(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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -344,16 +344,16 @@ public final class RenderUtils {
|
|||||||
ForgeHooksClient.setRenderLayer(layer);
|
ForgeHooksClient.setRenderLayer(layer);
|
||||||
|
|
||||||
for (BakedQuad bakedQuad : coverModel.getQuads(coverState, facing, rand)) {
|
for (BakedQuad bakedQuad : coverModel.getQuads(coverState, facing, rand)) {
|
||||||
return bakedQuad.func_187508_a();
|
return bakedQuad.getSprite();
|
||||||
}
|
}
|
||||||
|
|
||||||
for (BakedQuad bakedQuad : coverModel.getQuads(coverState, null, rand)) {
|
for (BakedQuad bakedQuad : coverModel.getQuads(coverState, null, rand)) {
|
||||||
if (sprite == null) {
|
if (sprite == null) {
|
||||||
sprite = bakedQuad.func_187508_a();
|
sprite = bakedQuad.getSprite();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bakedQuad.getFace() == facing) {
|
if (bakedQuad.getFace() == facing) {
|
||||||
return bakedQuad.func_187508_a();
|
return bakedQuad.getSprite();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user