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'
|
||||
}
|
||||
|
||||
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 {
|
||||
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.api.network.INetwork;
|
||||
import com.refinedmods.refinedstorage.api.network.node.ICoverable;
|
||||
import com.refinedmods.refinedstorage.api.storage.AccessType;
|
||||
import com.refinedmods.refinedstorage.api.storage.IStorage;
|
||||
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.util.IComparer;
|
||||
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.ItemStorageCache;
|
||||
import com.refinedmods.refinedstorage.inventory.fluid.FluidInventory;
|
||||
@@ -39,7 +41,7 @@ import org.apache.logging.log4j.Logger;
|
||||
import java.util.List;
|
||||
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");
|
||||
|
||||
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<FluidStack>> fluidStorages = new CopyOnWriteArrayList<>();
|
||||
|
||||
private CoverManager coverManager;
|
||||
|
||||
public ExternalStorageNetworkNode(World world, BlockPos pos) {
|
||||
super(world, pos);
|
||||
this.coverManager = new CoverManager(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -319,4 +324,27 @@ public class ExternalStorageNetworkNode extends NetworkNode implements IStorageP
|
||||
public List<IExternalStorage<FluidStack>> getFluidStorages() {
|
||||
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
|
||||
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) {
|
||||
|
@@ -100,7 +100,7 @@ public class BakedModelCover extends BakedModelCableCover{
|
||||
public ItemOverrideList getOverrides() {
|
||||
return new ItemOverrideList() {
|
||||
@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);
|
||||
}
|
||||
};
|
||||
@@ -152,7 +152,7 @@ public class BakedModelCover extends BakedModelCableCover{
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean func_230044_c_() {
|
||||
public boolean isSideLit() {
|
||||
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, "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, "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, "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(TYPE);
|
||||
dataManager.addWatchedParameter(PICKUP);
|
||||
dataManager.addWatchedParameter(COVER_MANAGER);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -4,12 +4,20 @@ import com.refinedmods.refinedstorage.RSTiles;
|
||||
import com.refinedmods.refinedstorage.api.storage.AccessType;
|
||||
import com.refinedmods.refinedstorage.api.storage.externalstorage.IExternalStorage;
|
||||
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.data.RSSerializers;
|
||||
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.item.ItemStack;
|
||||
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 net.minecraftforge.fluids.FluidStack;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
@@ -47,6 +55,15 @@ public class ExternalStorageTile extends NetworkNodeTile<ExternalStorageNetworkN
|
||||
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() {
|
||||
super(RSTiles.EXTERNAL_STORAGE);
|
||||
|
||||
@@ -57,6 +74,7 @@ public class ExternalStorageTile extends NetworkNodeTile<ExternalStorageNetworkN
|
||||
dataManager.addWatchedParameter(CAPACITY);
|
||||
dataManager.addWatchedParameter(TYPE);
|
||||
dataManager.addWatchedParameter(ACCESS_TYPE);
|
||||
dataManager.addWatchedParameter(COVER_MANAGER);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -64,4 +82,30 @@ public class ExternalStorageTile extends NetworkNodeTile<ExternalStorageNetworkN
|
||||
public ExternalStorageNetworkNode createNode(World world, BlockPos 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);
|
||||
|
||||
for (BakedQuad bakedQuad : coverModel.getQuads(coverState, facing, rand)) {
|
||||
return bakedQuad.func_187508_a();
|
||||
return bakedQuad.getSprite();
|
||||
}
|
||||
|
||||
for (BakedQuad bakedQuad : coverModel.getQuads(coverState, null, rand)) {
|
||||
if (sprite == null) {
|
||||
sprite = bakedQuad.func_187508_a();
|
||||
sprite = bakedQuad.getSprite();
|
||||
}
|
||||
|
||||
if (bakedQuad.getFace() == facing) {
|
||||
return bakedQuad.func_187508_a();
|
||||
return bakedQuad.getSprite();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user