Added cover support for the external storage and fixed some mappings issues

This commit is contained in:
Buuz135
2021-09-12 23:38:19 +02:00
parent 842219cd2c
commit 32f88fbd37
8 changed files with 83 additions and 23 deletions

View File

@@ -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'

View File

@@ -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;
}
} }

View File

@@ -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) {

View File

@@ -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;
} }
} }

View File

@@ -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));

View File

@@ -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

View File

@@ -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);
}
} }

View File

@@ -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();
} }
} }
} }