Re-add the Fluid Grid
This commit is contained in:
@@ -58,6 +58,11 @@ public class ClientSetup {
|
|||||||
new ResourceLocation(RS.ID, "block/grid/cutouts/pattern_front_connected")
|
new ResourceLocation(RS.ID, "block/grid/cutouts/pattern_front_connected")
|
||||||
));
|
));
|
||||||
|
|
||||||
|
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "fluid_grid"), (base, registry) -> new FullbrightBakedModel(
|
||||||
|
base,
|
||||||
|
new ResourceLocation(RS.ID, "block/grid/cutouts/fluid_front_connected")
|
||||||
|
));
|
||||||
|
|
||||||
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "pattern"), (base, registry) -> new PatternBakedModel(base));
|
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "pattern"), (base, registry) -> new PatternBakedModel(base));
|
||||||
|
|
||||||
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "disk_drive"), (base, registry) -> new FullbrightBakedModel(
|
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "disk_drive"), (base, registry) -> new FullbrightBakedModel(
|
||||||
|
@@ -96,6 +96,7 @@ public final class RS {
|
|||||||
API.instance().getNetworkNodeRegistry().add(GridNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new GridNetworkNode(world, pos, GridType.NORMAL)));
|
API.instance().getNetworkNodeRegistry().add(GridNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new GridNetworkNode(world, pos, GridType.NORMAL)));
|
||||||
API.instance().getNetworkNodeRegistry().add(GridNetworkNode.CRAFTING_ID, (tag, world, pos) -> readAndReturn(tag, new GridNetworkNode(world, pos, GridType.CRAFTING)));
|
API.instance().getNetworkNodeRegistry().add(GridNetworkNode.CRAFTING_ID, (tag, world, pos) -> readAndReturn(tag, new GridNetworkNode(world, pos, GridType.CRAFTING)));
|
||||||
API.instance().getNetworkNodeRegistry().add(GridNetworkNode.PATTERN_ID, (tag, world, pos) -> readAndReturn(tag, new GridNetworkNode(world, pos, GridType.PATTERN)));
|
API.instance().getNetworkNodeRegistry().add(GridNetworkNode.PATTERN_ID, (tag, world, pos) -> readAndReturn(tag, new GridNetworkNode(world, pos, GridType.PATTERN)));
|
||||||
|
API.instance().getNetworkNodeRegistry().add(GridNetworkNode.FLUID_ID, (tag, world, pos) -> readAndReturn(tag, new GridNetworkNode(world, pos, GridType.FLUID)));
|
||||||
|
|
||||||
API.instance().getGridManager().add(GridBlockGridFactory.ID, new GridBlockGridFactory());
|
API.instance().getGridManager().add(GridBlockGridFactory.ID, new GridBlockGridFactory());
|
||||||
}
|
}
|
||||||
@@ -122,6 +123,7 @@ public final class RS {
|
|||||||
e.getRegistry().register(new GridBlock(GridType.NORMAL));
|
e.getRegistry().register(new GridBlock(GridType.NORMAL));
|
||||||
e.getRegistry().register(new GridBlock(GridType.CRAFTING));
|
e.getRegistry().register(new GridBlock(GridType.CRAFTING));
|
||||||
e.getRegistry().register(new GridBlock(GridType.PATTERN));
|
e.getRegistry().register(new GridBlock(GridType.PATTERN));
|
||||||
|
e.getRegistry().register(new GridBlock(GridType.FLUID));
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
@@ -133,6 +135,7 @@ public final class RS {
|
|||||||
e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(() -> new GridTile(GridType.NORMAL), RSBlocks.GRID).build(null).setRegistryName(RS.ID, "grid")));
|
e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(() -> new GridTile(GridType.NORMAL), RSBlocks.GRID).build(null).setRegistryName(RS.ID, "grid")));
|
||||||
e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(() -> new GridTile(GridType.CRAFTING), RSBlocks.CRAFTING_GRID).build(null).setRegistryName(RS.ID, "crafting_grid")));
|
e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(() -> new GridTile(GridType.CRAFTING), RSBlocks.CRAFTING_GRID).build(null).setRegistryName(RS.ID, "crafting_grid")));
|
||||||
e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(() -> new GridTile(GridType.PATTERN), RSBlocks.PATTERN_GRID).build(null).setRegistryName(RS.ID, "pattern_grid")));
|
e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(() -> new GridTile(GridType.PATTERN), RSBlocks.PATTERN_GRID).build(null).setRegistryName(RS.ID, "pattern_grid")));
|
||||||
|
e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(() -> new GridTile(GridType.FLUID), RSBlocks.FLUID_GRID).build(null).setRegistryName(RS.ID, "fluid_grid")));
|
||||||
}
|
}
|
||||||
|
|
||||||
private <T extends TileEntity> TileEntityType<T> registerTileDataParameters(TileEntityType<T> t) {
|
private <T extends TileEntity> TileEntityType<T> registerTileDataParameters(TileEntityType<T> t) {
|
||||||
@@ -203,6 +206,7 @@ public final class RS {
|
|||||||
e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.GRID));
|
e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.GRID));
|
||||||
e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.CRAFTING_GRID));
|
e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.CRAFTING_GRID));
|
||||||
e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.PATTERN_GRID));
|
e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.PATTERN_GRID));
|
||||||
|
e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.FLUID_GRID));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TODO
|
/* TODO
|
||||||
|
@@ -48,6 +48,8 @@ public final class RSBlocks {
|
|||||||
public static final GridBlock CRAFTING_GRID = null;
|
public static final GridBlock CRAFTING_GRID = null;
|
||||||
@ObjectHolder(RS.ID + ":pattern_grid")
|
@ObjectHolder(RS.ID + ":pattern_grid")
|
||||||
public static final GridBlock PATTERN_GRID = null;
|
public static final GridBlock PATTERN_GRID = null;
|
||||||
|
@ObjectHolder(RS.ID + ":fluid_grid")
|
||||||
|
public static final GridBlock FLUID_GRID = null;
|
||||||
|
|
||||||
public static final BlockStorageMonitor STORAGE_MONITOR = new BlockStorageMonitor();
|
public static final BlockStorageMonitor STORAGE_MONITOR = new BlockStorageMonitor();
|
||||||
public static final BlockPortableGrid PORTABLE_GRID = new BlockPortableGrid();
|
public static final BlockPortableGrid PORTABLE_GRID = new BlockPortableGrid();
|
||||||
|
@@ -19,7 +19,6 @@ public class RSOldConfig {
|
|||||||
public int storageUsage;
|
public int storageUsage;
|
||||||
public int fluidStorageUsage;
|
public int fluidStorageUsage;
|
||||||
public int wirelessTransmitterUsage;
|
public int wirelessTransmitterUsage;
|
||||||
public int fluidGridUsage;
|
|
||||||
public int networkTransmitterUsage;
|
public int networkTransmitterUsage;
|
||||||
public int networkReceiverUsage;
|
public int networkReceiverUsage;
|
||||||
public int diskManipulatorUsage;
|
public int diskManipulatorUsage;
|
||||||
@@ -109,7 +108,6 @@ public class RSOldConfig {
|
|||||||
storageUsage = config.getInt("storage", ENERGY, 1, 0, Integer.MAX_VALUE, "The energy used by Storage Blocks");
|
storageUsage = config.getInt("storage", ENERGY, 1, 0, Integer.MAX_VALUE, "The energy used by Storage Blocks");
|
||||||
fluidStorageUsage = config.getInt("fluidStorage", ENERGY, 1, 0, Integer.MAX_VALUE, "The energy used by Fluid Storage Blocks");
|
fluidStorageUsage = config.getInt("fluidStorage", ENERGY, 1, 0, Integer.MAX_VALUE, "The energy used by Fluid Storage Blocks");
|
||||||
wirelessTransmitterUsage = config.getInt("wirelessTransmitter", ENERGY, 8, 0, Integer.MAX_VALUE, "The energy used by Wireless Transmitters");
|
wirelessTransmitterUsage = config.getInt("wirelessTransmitter", ENERGY, 8, 0, Integer.MAX_VALUE, "The energy used by Wireless Transmitters");
|
||||||
fluidGridUsage = config.getInt("fluidGrid", ENERGY, 2, 0, Integer.MAX_VALUE, "The energy used by Fluid Grids");
|
|
||||||
networkTransmitterUsage = config.getInt("networkTransmitter", ENERGY, 64, 0, Integer.MAX_VALUE, "The energy used by Network Transmitters");
|
networkTransmitterUsage = config.getInt("networkTransmitter", ENERGY, 64, 0, Integer.MAX_VALUE, "The energy used by Network Transmitters");
|
||||||
networkReceiverUsage = config.getInt("networkReceiver", ENERGY, 0, 0, Integer.MAX_VALUE, "The energy used by Network Receivers");
|
networkReceiverUsage = config.getInt("networkReceiver", ENERGY, 0, 0, Integer.MAX_VALUE, "The energy used by Network Receivers");
|
||||||
diskManipulatorUsage = config.getInt("diskManipulator", ENERGY, 3, 0, Integer.MAX_VALUE, "The energy used by Disk Manipulators");
|
diskManipulatorUsage = config.getInt("diskManipulator", ENERGY, 3, 0, Integer.MAX_VALUE, "The energy used by Disk Manipulators");
|
||||||
|
@@ -48,6 +48,8 @@ public class RSTiles {
|
|||||||
public static final TileEntityType<GridTile> CRAFTING_GRID = null;
|
public static final TileEntityType<GridTile> CRAFTING_GRID = null;
|
||||||
@ObjectHolder(RS.ID + ":pattern_grid")
|
@ObjectHolder(RS.ID + ":pattern_grid")
|
||||||
public static final TileEntityType<GridTile> PATTERN_GRID = null;
|
public static final TileEntityType<GridTile> PATTERN_GRID = null;
|
||||||
|
@ObjectHolder(RS.ID + ":fluid_grid")
|
||||||
|
public static final TileEntityType<GridTile> FLUID_GRID = null;
|
||||||
|
|
||||||
//@ObjectHolder(RS.ID + ":importer")
|
//@ObjectHolder(RS.ID + ":importer")
|
||||||
public static final TileEntityType<TileImporter> IMPORTER = null;
|
public static final TileEntityType<TileImporter> IMPORTER = null;
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
package com.raoulvdberge.refinedstorage.apiimpl.network.grid.handler;
|
package com.raoulvdberge.refinedstorage.apiimpl.network.grid.handler;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
|
||||||
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPattern;
|
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPattern;
|
||||||
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
|
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
|
||||||
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTaskError;
|
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTaskError;
|
||||||
@@ -53,7 +52,7 @@ public class FluidGridHandler implements IFluidGridHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (bucket.isEmpty()) {
|
if (bucket.isEmpty()) {
|
||||||
bucket = network.extractItem(StackUtils.EMPTY_BUCKET, 1, Action.PERFORM);
|
bucket = StackUtils.nullToEmpty(network.extractItem(StackUtils.EMPTY_BUCKET, 1, Action.PERFORM));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!bucket.isEmpty()) {
|
if (!bucket.isEmpty()) {
|
||||||
@@ -71,7 +70,7 @@ public class FluidGridHandler implements IFluidGridHandler {
|
|||||||
player.updateHeldItem();
|
player.updateHeldItem();
|
||||||
}
|
}
|
||||||
|
|
||||||
network.getNetworkItemHandler().drainEnergy(player, RS.INSTANCE.config.wirelessFluidGridExtractUsage);
|
// TODO network.getNetworkItemHandler().drainEnergy(player, RS.INSTANCE.config.wirelessFluidGridExtractUsage);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -85,14 +84,14 @@ public class FluidGridHandler implements IFluidGridHandler {
|
|||||||
|
|
||||||
Pair<ItemStack, FluidStack> result = StackUtils.getFluid(container, true);
|
Pair<ItemStack, FluidStack> result = StackUtils.getFluid(container, true);
|
||||||
|
|
||||||
if (network.insertFluid(result.getValue(), result.getValue().getAmount(), Action.SIMULATE) == null) {
|
if (!result.getValue().isEmpty() && network.insertFluid(result.getValue(), result.getValue().getAmount(), Action.SIMULATE) == null) {
|
||||||
network.getFluidStorageTracker().changed(player, result.getValue().copy());
|
network.getFluidStorageTracker().changed(player, result.getValue().copy());
|
||||||
|
|
||||||
result = StackUtils.getFluid(container, false);
|
result = StackUtils.getFluid(container, false);
|
||||||
|
|
||||||
network.insertFluid(result.getValue(), result.getValue().getAmount(), Action.PERFORM);
|
network.insertFluid(result.getValue(), result.getValue().getAmount(), Action.PERFORM);
|
||||||
|
|
||||||
network.getNetworkItemHandler().drainEnergy(player, RS.INSTANCE.config.wirelessFluidGridInsertUsage);
|
// TODO network.getNetworkItemHandler().drainEnergy(player, RS.INSTANCE.config.wirelessFluidGridInsertUsage);
|
||||||
|
|
||||||
return result.getLeft();
|
return result.getLeft();
|
||||||
}
|
}
|
||||||
|
@@ -73,7 +73,7 @@ public class PortableFluidGridHandler implements IFluidGridHandler {
|
|||||||
public ItemStack onInsert(ServerPlayerEntity player, ItemStack container) {
|
public ItemStack onInsert(ServerPlayerEntity player, ItemStack container) {
|
||||||
Pair<ItemStack, FluidStack> result = StackUtils.getFluid(container, true);
|
Pair<ItemStack, FluidStack> result = StackUtils.getFluid(container, true);
|
||||||
|
|
||||||
if (portableGrid.getFluidStorage().insert(result.getValue(), result.getValue().getAmount(), Action.SIMULATE) == null) {
|
if (!result.getValue().isEmpty() && portableGrid.getFluidStorage().insert(result.getValue(), result.getValue().getAmount(), Action.SIMULATE) == null) {
|
||||||
portableGrid.getFluidStorageTracker().changed(player, result.getValue().copy());
|
portableGrid.getFluidStorageTracker().changed(player, result.getValue().copy());
|
||||||
|
|
||||||
result = StackUtils.getFluid(container, false);
|
result = StackUtils.getFluid(container, false);
|
||||||
|
@@ -62,6 +62,7 @@ public class GridNetworkNode extends NetworkNode implements IGridNetworkAware, I
|
|||||||
public static final ResourceLocation ID = new ResourceLocation(RS.ID, "grid");
|
public static final ResourceLocation ID = new ResourceLocation(RS.ID, "grid");
|
||||||
public static final ResourceLocation CRAFTING_ID = new ResourceLocation(RS.ID, "crafting_grid");
|
public static final ResourceLocation CRAFTING_ID = new ResourceLocation(RS.ID, "crafting_grid");
|
||||||
public static final ResourceLocation PATTERN_ID = new ResourceLocation(RS.ID, "pattern_grid");
|
public static final ResourceLocation PATTERN_ID = new ResourceLocation(RS.ID, "pattern_grid");
|
||||||
|
public static final ResourceLocation FLUID_ID = new ResourceLocation(RS.ID, "fluid_grid");
|
||||||
|
|
||||||
public static final String NBT_VIEW_TYPE = "ViewType";
|
public static final String NBT_VIEW_TYPE = "ViewType";
|
||||||
public static final String NBT_SORTING_DIRECTION = "SortingDirection";
|
public static final String NBT_SORTING_DIRECTION = "SortingDirection";
|
||||||
@@ -178,7 +179,7 @@ public class GridNetworkNode extends NetworkNode implements IGridNetworkAware, I
|
|||||||
case PATTERN:
|
case PATTERN:
|
||||||
return RS.SERVER_CONFIG.getGrid().getPatternGridUsage();
|
return RS.SERVER_CONFIG.getGrid().getPatternGridUsage();
|
||||||
case FLUID:
|
case FLUID:
|
||||||
return 0;
|
return RS.SERVER_CONFIG.getGrid().getFluidGridUsage();
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -55,7 +55,7 @@ public class NetworkNodeFluidInterface extends NetworkNode {
|
|||||||
|
|
||||||
private FluidHandlerProxy tank = new FluidHandlerProxy(tankIn, tankOut);
|
private FluidHandlerProxy tank = new FluidHandlerProxy(tankIn, tankOut);
|
||||||
|
|
||||||
private ItemHandlerBase in = new ItemHandlerBase(1, new ListenerNetworkNode(this), stack -> StackUtils.getFluid(stack, true).getValue() != null);
|
private ItemHandlerBase in = new ItemHandlerBase(1, new ListenerNetworkNode(this), stack -> !StackUtils.getFluid(stack, true).getValue().isEmpty());
|
||||||
private FluidInventory out = new FluidInventory(1, TANK_CAPACITY, new ListenerNetworkNode(this));
|
private FluidInventory out = new FluidInventory(1, TANK_CAPACITY, new ListenerNetworkNode(this));
|
||||||
|
|
||||||
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ListenerNetworkNode(this)/* TODO, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_STACK, ItemUpgrade.TYPE_CRAFTING*/);
|
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ListenerNetworkNode(this)/* TODO, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_STACK, ItemUpgrade.TYPE_CRAFTING*/);
|
||||||
@@ -74,7 +74,7 @@ public class NetworkNodeFluidInterface extends NetworkNode {
|
|||||||
if (!container.isEmpty()) {
|
if (!container.isEmpty()) {
|
||||||
Pair<ItemStack, FluidStack> result = StackUtils.getFluid(container, true);
|
Pair<ItemStack, FluidStack> result = StackUtils.getFluid(container, true);
|
||||||
|
|
||||||
if (tankIn.fill(result.getValue(), IFluidHandler.FluidAction.SIMULATE) == result.getValue().getAmount()) {
|
if (!result.getValue().isEmpty() && tankIn.fill(result.getValue(), IFluidHandler.FluidAction.SIMULATE) == result.getValue().getAmount()) {
|
||||||
result = StackUtils.getFluid(container, false);
|
result = StackUtils.getFluid(container, false);
|
||||||
|
|
||||||
tankIn.fill(result.getValue(), IFluidHandler.FluidAction.EXECUTE);
|
tankIn.fill(result.getValue(), IFluidHandler.FluidAction.EXECUTE);
|
||||||
|
@@ -85,7 +85,12 @@ public class FluidStorageCache implements IStorageCache<FluidStack> {
|
|||||||
@Override
|
@Override
|
||||||
public void flush() {
|
public void flush() {
|
||||||
if (!batchedChanges.isEmpty()) {
|
if (!batchedChanges.isEmpty()) {
|
||||||
|
if (batchedChanges.size() > 1) {
|
||||||
|
listeners.forEach(l -> l.onChangedBulk(batchedChanges));
|
||||||
|
} else {
|
||||||
batchedChanges.forEach(change -> listeners.forEach(l -> l.onChanged(change)));
|
batchedChanges.forEach(change -> listeners.forEach(l -> l.onChanged(change)));
|
||||||
|
}
|
||||||
|
|
||||||
batchedChanges.clear();
|
batchedChanges.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,11 +1,16 @@
|
|||||||
package com.raoulvdberge.refinedstorage.apiimpl.storage.cache.listener;
|
package com.raoulvdberge.refinedstorage.apiimpl.storage.cache.listener;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.RS;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.INetwork;
|
import com.raoulvdberge.refinedstorage.api.network.INetwork;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.security.Permission;
|
||||||
import com.raoulvdberge.refinedstorage.api.storage.cache.IStorageCacheListener;
|
import com.raoulvdberge.refinedstorage.api.storage.cache.IStorageCacheListener;
|
||||||
import com.raoulvdberge.refinedstorage.api.util.StackListResult;
|
import com.raoulvdberge.refinedstorage.api.util.StackListResult;
|
||||||
|
import com.raoulvdberge.refinedstorage.network.grid.GridFluidDeltaMessage;
|
||||||
|
import com.raoulvdberge.refinedstorage.network.grid.GridFluidUpdateMessage;
|
||||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||||
import net.minecraftforge.fluids.FluidStack;
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class FluidGridStorageCacheListener implements IStorageCacheListener<FluidStack> {
|
public class FluidGridStorageCacheListener implements IStorageCacheListener<FluidStack> {
|
||||||
@@ -19,7 +24,7 @@ public class FluidGridStorageCacheListener implements IStorageCacheListener<Flui
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAttached() {
|
public void onAttached() {
|
||||||
// TODO: RS.INSTANCE.network.sendTo(new MessageGridFluidUpdate(network, network.getSecurityManager().hasPermission(Permission.AUTOCRAFTING, player)), player);
|
RS.NETWORK_HANDLER.sendTo(player, new GridFluidUpdateMessage(network, network.getSecurityManager().hasPermission(Permission.AUTOCRAFTING, player)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -29,16 +34,15 @@ public class FluidGridStorageCacheListener implements IStorageCacheListener<Flui
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onChanged(StackListResult<FluidStack> delta) {
|
public void onChanged(StackListResult<FluidStack> delta) {
|
||||||
// TODO: RS.INSTANCE.network.sendTo(new MessageGridFluidUpdate(network, network.getSecurityManager().hasPermission(Permission.AUTOCRAFTING, player)), player);
|
List<StackListResult<FluidStack>> deltas = new ArrayList<>();
|
||||||
|
|
||||||
|
deltas.add(delta);
|
||||||
|
|
||||||
|
onChangedBulk(deltas);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onChangedBulk(List<StackListResult<FluidStack>> storageCacheDeltas) {
|
public void onChangedBulk(List<StackListResult<FluidStack>> deltas) {
|
||||||
/* TODO
|
RS.NETWORK_HANDLER.sendTo(player, new GridFluidDeltaMessage(network, deltas));
|
||||||
for (Pair<FluidStack, Integer> stack : stacks) {
|
|
||||||
onChanged(stack.getLeft(), stack.getRight());
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -122,6 +122,7 @@ public class ServerConfig {
|
|||||||
private final ForgeConfigSpec.IntValue gridUsage;
|
private final ForgeConfigSpec.IntValue gridUsage;
|
||||||
private final ForgeConfigSpec.IntValue craftingGridUsage;
|
private final ForgeConfigSpec.IntValue craftingGridUsage;
|
||||||
private final ForgeConfigSpec.IntValue patternGridUsage;
|
private final ForgeConfigSpec.IntValue patternGridUsage;
|
||||||
|
private final ForgeConfigSpec.IntValue fluidGridUsage;
|
||||||
|
|
||||||
public Grid() {
|
public Grid() {
|
||||||
builder.push("grid");
|
builder.push("grid");
|
||||||
@@ -129,6 +130,7 @@ public class ServerConfig {
|
|||||||
gridUsage = builder.comment("The energy used by Grids").defineInRange("gridUsage", 2, 0, Integer.MAX_VALUE);
|
gridUsage = builder.comment("The energy used by Grids").defineInRange("gridUsage", 2, 0, Integer.MAX_VALUE);
|
||||||
craftingGridUsage = builder.comment("The energy used by Crafting Grids").defineInRange("craftingGridUsage", 4, 0, Integer.MAX_VALUE);
|
craftingGridUsage = builder.comment("The energy used by Crafting Grids").defineInRange("craftingGridUsage", 4, 0, Integer.MAX_VALUE);
|
||||||
patternGridUsage = builder.comment("The energy used by Pattern Grids").defineInRange("patternGridUsage", 3, 0, Integer.MAX_VALUE);
|
patternGridUsage = builder.comment("The energy used by Pattern Grids").defineInRange("patternGridUsage", 3, 0, Integer.MAX_VALUE);
|
||||||
|
fluidGridUsage = builder.comment("The energy used by Fluid Grids").defineInRange("fluidGridUsage", 2, 0, Integer.MAX_VALUE);
|
||||||
|
|
||||||
builder.pop();
|
builder.pop();
|
||||||
}
|
}
|
||||||
@@ -144,6 +146,10 @@ public class ServerConfig {
|
|||||||
public int getPatternGridUsage() {
|
public int getPatternGridUsage() {
|
||||||
return patternGridUsage.get();
|
return patternGridUsage.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getFluidGridUsage() {
|
||||||
|
return fluidGridUsage.get();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class Upgrades {
|
public class Upgrades {
|
||||||
|
@@ -1,76 +0,0 @@
|
|||||||
package com.raoulvdberge.refinedstorage.network;
|
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.api.network.INetwork;
|
|
||||||
import com.raoulvdberge.refinedstorage.api.storage.IStorageTracker;
|
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageTrackerEntry;
|
|
||||||
import com.raoulvdberge.refinedstorage.gui.GuiBase;
|
|
||||||
import com.raoulvdberge.refinedstorage.gui.grid.GuiGrid;
|
|
||||||
import com.raoulvdberge.refinedstorage.gui.grid.stack.GridStackFluid;
|
|
||||||
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
|
||||||
import io.netty.buffer.ByteBuf;
|
|
||||||
import net.minecraftforge.fluids.FluidStack;
|
|
||||||
import net.minecraftforge.fml.common.network.ByteBufUtils;
|
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
|
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
|
|
||||||
import org.apache.commons.lang3.tuple.Pair;
|
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
|
|
||||||
public class MessageGridFluidDelta implements IMessage, IMessageHandler<MessageGridFluidDelta, IMessage> {
|
|
||||||
@Nullable
|
|
||||||
private INetwork network;
|
|
||||||
private IStorageTracker<FluidStack> storageTracker;
|
|
||||||
private FluidStack stack;
|
|
||||||
private int delta;
|
|
||||||
|
|
||||||
private GridStackFluid gridStack;
|
|
||||||
|
|
||||||
public MessageGridFluidDelta() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public MessageGridFluidDelta(@Nullable INetwork network, IStorageTracker<FluidStack> storageTracker, FluidStack stack, int delta) {
|
|
||||||
this.network = network;
|
|
||||||
this.storageTracker = storageTracker;
|
|
||||||
this.stack = stack;
|
|
||||||
this.delta = delta;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void fromBytes(ByteBuf buf) {
|
|
||||||
Pair<Integer, FluidStack> hashAndFluidStack = StackUtils.readFluidStackAndHash(buf);
|
|
||||||
|
|
||||||
gridStack = new GridStackFluid(hashAndFluidStack.getLeft(), hashAndFluidStack.getRight(), buf.readBoolean() ? new StorageTrackerEntry(buf) : null, buf.readBoolean(), false);
|
|
||||||
delta = buf.readInt();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void toBytes(ByteBuf buf) {
|
|
||||||
StackUtils.writeFluidStackAndHash(buf, stack);
|
|
||||||
|
|
||||||
IStorageTracker.IStorageTrackerEntry entry = storageTracker.get(stack);
|
|
||||||
buf.writeBoolean(entry != null);
|
|
||||||
if (entry != null) {
|
|
||||||
buf.writeLong(entry.getTime());
|
|
||||||
ByteBufUtils.writeUTF8String(buf, entry.getName());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (network != null) {
|
|
||||||
buf.writeBoolean(network.getCraftingManager().getPattern(stack) != null);
|
|
||||||
} else {
|
|
||||||
buf.writeBoolean(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
buf.writeInt(delta);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public IMessage onMessage(MessageGridFluidDelta message, MessageContext ctx) {
|
|
||||||
GuiBase.executeLater(GuiGrid.class, grid -> {
|
|
||||||
grid.getView().postChange(message.gridStack, message.delta);
|
|
||||||
grid.getView().sort();
|
|
||||||
});
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,34 +0,0 @@
|
|||||||
package com.raoulvdberge.refinedstorage.network;
|
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
|
|
||||||
import com.raoulvdberge.refinedstorage.container.GridContainer;
|
|
||||||
import io.netty.buffer.ByteBuf;
|
|
||||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
|
||||||
import net.minecraft.inventory.Container;
|
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
|
||||||
|
|
||||||
public class MessageGridFluidInsertHeld extends MessageHandlerPlayerToServer<MessageGridFluidInsertHeld> implements IMessage {
|
|
||||||
public MessageGridFluidInsertHeld() {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void fromBytes(ByteBuf buf) {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void toBytes(ByteBuf buf) {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void handle(MessageGridFluidInsertHeld message, ServerPlayerEntity player) {
|
|
||||||
Container container = player.openContainer;
|
|
||||||
|
|
||||||
if (container instanceof ContainerGrid) {
|
|
||||||
IGrid grid = ((ContainerGrid) container).getGrid();
|
|
||||||
|
|
||||||
if (grid.getFluidHandler() != null) {
|
|
||||||
grid.getFluidHandler().onInsertHeldContainer(player);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,46 +0,0 @@
|
|||||||
package com.raoulvdberge.refinedstorage.network;
|
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
|
|
||||||
import com.raoulvdberge.refinedstorage.container.GridContainer;
|
|
||||||
import io.netty.buffer.ByteBuf;
|
|
||||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
|
||||||
import net.minecraft.inventory.Container;
|
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
|
||||||
|
|
||||||
public class MessageGridFluidPull extends MessageHandlerPlayerToServer<MessageGridFluidPull> implements IMessage {
|
|
||||||
private int hash;
|
|
||||||
private boolean shift;
|
|
||||||
|
|
||||||
public MessageGridFluidPull() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public MessageGridFluidPull(int hash, boolean shift) {
|
|
||||||
this.hash = hash;
|
|
||||||
this.shift = shift;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void fromBytes(ByteBuf buf) {
|
|
||||||
hash = buf.readInt();
|
|
||||||
shift = buf.readBoolean();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void toBytes(ByteBuf buf) {
|
|
||||||
buf.writeInt(hash);
|
|
||||||
buf.writeBoolean(shift);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void handle(MessageGridFluidPull message, ServerPlayerEntity player) {
|
|
||||||
Container container = player.openContainer;
|
|
||||||
|
|
||||||
if (container instanceof ContainerGrid) {
|
|
||||||
IGrid grid = ((ContainerGrid) container).getGrid();
|
|
||||||
|
|
||||||
if (grid.getFluidHandler() != null) {
|
|
||||||
grid.getFluidHandler().onExtract(player, message.hash, message.shift);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,112 +0,0 @@
|
|||||||
package com.raoulvdberge.refinedstorage.network;
|
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPattern;
|
|
||||||
import com.raoulvdberge.refinedstorage.api.network.INetwork;
|
|
||||||
import com.raoulvdberge.refinedstorage.api.storage.IStorageTracker;
|
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageTrackerEntry;
|
|
||||||
import com.raoulvdberge.refinedstorage.gui.GuiBase;
|
|
||||||
import com.raoulvdberge.refinedstorage.gui.grid.GuiGrid;
|
|
||||||
import com.raoulvdberge.refinedstorage.gui.grid.stack.GridStackFluid;
|
|
||||||
import com.raoulvdberge.refinedstorage.gui.grid.stack.IGridStack;
|
|
||||||
import com.raoulvdberge.refinedstorage.gui.grid.view.GridViewFluid;
|
|
||||||
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
|
||||||
import io.netty.buffer.ByteBuf;
|
|
||||||
import net.minecraftforge.fluids.FluidStack;
|
|
||||||
import net.minecraftforge.fml.common.network.ByteBufUtils;
|
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
|
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
|
|
||||||
import org.apache.commons.lang3.tuple.Pair;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.function.Consumer;
|
|
||||||
|
|
||||||
public class MessageGridFluidUpdate implements IMessage, IMessageHandler<MessageGridFluidUpdate, IMessage> {
|
|
||||||
private INetwork network;
|
|
||||||
private boolean canCraft;
|
|
||||||
private List<IGridStack> stacks = new ArrayList<>();
|
|
||||||
private Consumer<ByteBuf> sendHandler;
|
|
||||||
|
|
||||||
public MessageGridFluidUpdate() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public MessageGridFluidUpdate(INetwork network, boolean canCraft) {
|
|
||||||
this(buf -> {
|
|
||||||
int size = network.getFluidStorageCache().getList().getStacks().size();
|
|
||||||
|
|
||||||
for (ICraftingPattern pattern : network.getCraftingManager().getPatterns()) {
|
|
||||||
size += pattern.getFluidOutputs().size();
|
|
||||||
}
|
|
||||||
|
|
||||||
buf.writeInt(size);
|
|
||||||
|
|
||||||
for (FluidStack stack : network.getFluidStorageCache().getList().getStacks()) {
|
|
||||||
StackUtils.writeFluidStackAndHash(buf, stack);
|
|
||||||
|
|
||||||
IStorageTracker.IStorageTrackerEntry entry = network.getFluidStorageTracker().get(stack);
|
|
||||||
buf.writeBoolean(entry != null);
|
|
||||||
if (entry != null) {
|
|
||||||
buf.writeLong(entry.getTime());
|
|
||||||
ByteBufUtils.writeUTF8String(buf, entry.getName());
|
|
||||||
}
|
|
||||||
|
|
||||||
buf.writeBoolean(network.getCraftingManager().getPattern(stack) != null);
|
|
||||||
buf.writeBoolean(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (ICraftingPattern pattern : network.getCraftingManager().getPatterns()) {
|
|
||||||
for (FluidStack stack : pattern.getFluidOutputs()) {
|
|
||||||
StackUtils.writeFluidStackAndHash(buf, stack);
|
|
||||||
|
|
||||||
IStorageTracker.IStorageTrackerEntry entry = network.getFluidStorageTracker().get(stack);
|
|
||||||
buf.writeBoolean(entry != null);
|
|
||||||
if (entry != null) {
|
|
||||||
buf.writeLong(entry.getTime());
|
|
||||||
ByteBufUtils.writeUTF8String(buf, entry.getName());
|
|
||||||
}
|
|
||||||
|
|
||||||
buf.writeBoolean(network.getCraftingManager().getPattern(stack) != null);
|
|
||||||
buf.writeBoolean(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, canCraft);
|
|
||||||
}
|
|
||||||
|
|
||||||
public MessageGridFluidUpdate(Consumer<ByteBuf> sendHandler, boolean canCraft) {
|
|
||||||
this.sendHandler = sendHandler;
|
|
||||||
this.canCraft = canCraft;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void fromBytes(ByteBuf buf) {
|
|
||||||
canCraft = buf.readBoolean();
|
|
||||||
|
|
||||||
int items = buf.readInt();
|
|
||||||
|
|
||||||
for (int i = 0; i < items; ++i) {
|
|
||||||
Pair<Integer, FluidStack> hashAndFluidStack = StackUtils.readFluidStackAndHash(buf);
|
|
||||||
|
|
||||||
this.stacks.add(new GridStackFluid(hashAndFluidStack.getLeft(), hashAndFluidStack.getRight(), buf.readBoolean() ? new StorageTrackerEntry(buf) : null, buf.readBoolean(), buf.readBoolean()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void toBytes(ByteBuf buf) {
|
|
||||||
buf.writeBoolean(canCraft);
|
|
||||||
|
|
||||||
sendHandler.accept(buf);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public IMessage onMessage(MessageGridFluidUpdate message, MessageContext ctx) {
|
|
||||||
GuiBase.executeLater(GuiGrid.class, grid -> {
|
|
||||||
grid.setView(new GridViewFluid(grid, GuiGrid.getDefaultSorter(), GuiGrid.getSorters()));
|
|
||||||
grid.getView().setCanCraft(message.canCraft);
|
|
||||||
grid.getView().setStacks(message.stacks);
|
|
||||||
grid.getView().sort();
|
|
||||||
});
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -39,6 +39,10 @@ public class NetworkHandler {
|
|||||||
handler.registerMessage(id++, GridPatternCreateMessage.class, GridPatternCreateMessage::encode, GridPatternCreateMessage::decode, GridPatternCreateMessage::handle);
|
handler.registerMessage(id++, GridPatternCreateMessage.class, GridPatternCreateMessage::encode, GridPatternCreateMessage::decode, GridPatternCreateMessage::handle);
|
||||||
handler.registerMessage(id++, SetFilterSlotMessage.class, SetFilterSlotMessage::encode, SetFilterSlotMessage::decode, SetFilterSlotMessage::handle);
|
handler.registerMessage(id++, SetFilterSlotMessage.class, SetFilterSlotMessage::encode, SetFilterSlotMessage::decode, SetFilterSlotMessage::handle);
|
||||||
handler.registerMessage(id++, SetFluidFilterSlotMessage.class, SetFluidFilterSlotMessage::encode, SetFluidFilterSlotMessage::decode, SetFluidFilterSlotMessage::handle);
|
handler.registerMessage(id++, SetFluidFilterSlotMessage.class, SetFluidFilterSlotMessage::encode, SetFluidFilterSlotMessage::decode, SetFluidFilterSlotMessage::handle);
|
||||||
|
handler.registerMessage(id++, GridFluidUpdateMessage.class, GridFluidUpdateMessage::encode, GridFluidUpdateMessage::decode, GridFluidUpdateMessage::handle);
|
||||||
|
handler.registerMessage(id++, GridFluidDeltaMessage.class, GridFluidDeltaMessage::encode, GridFluidDeltaMessage::decode, GridFluidDeltaMessage::handle);
|
||||||
|
handler.registerMessage(id++, GridFluidInsertHeldMessage.class, GridFluidInsertHeldMessage::encode, GridFluidInsertHeldMessage::decode, GridFluidInsertHeldMessage::handle);
|
||||||
|
handler.registerMessage(id++, GridFluidPullMessage.class, GridFluidPullMessage::encode, GridFluidPullMessage::decode, GridFluidPullMessage::handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendToServer(Object message) {
|
public void sendToServer(Object message) {
|
||||||
|
@@ -0,0 +1,68 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.network.grid;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.INetwork;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.util.StackListResult;
|
||||||
|
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
|
||||||
|
import com.raoulvdberge.refinedstorage.screen.grid.GridScreen;
|
||||||
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
||||||
|
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
||||||
|
import net.minecraft.network.PacketBuffer;
|
||||||
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
|
import net.minecraftforge.fml.network.NetworkEvent;
|
||||||
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
public class GridFluidDeltaMessage {
|
||||||
|
@Nullable
|
||||||
|
private INetwork network;
|
||||||
|
private List<StackListResult<FluidStack>> deltas;
|
||||||
|
|
||||||
|
private List<Pair<IGridStack, Integer>> clientDeltas;
|
||||||
|
|
||||||
|
public GridFluidDeltaMessage(INetwork network, List<StackListResult<FluidStack>> deltas) {
|
||||||
|
this.network = network;
|
||||||
|
this.deltas = deltas;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GridFluidDeltaMessage(List<Pair<IGridStack, Integer>> clientDeltas) {
|
||||||
|
this.clientDeltas = clientDeltas;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static GridFluidDeltaMessage decode(PacketBuffer buf) {
|
||||||
|
int size = buf.readInt();
|
||||||
|
|
||||||
|
List<Pair<IGridStack, Integer>> clientDeltas = new LinkedList<>();
|
||||||
|
|
||||||
|
for (int i = 0; i < size; ++i) {
|
||||||
|
int delta = buf.readInt();
|
||||||
|
|
||||||
|
clientDeltas.add(Pair.of(StackUtils.readFluidGridStack(buf), delta));
|
||||||
|
}
|
||||||
|
|
||||||
|
return new GridFluidDeltaMessage(clientDeltas);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void encode(GridFluidDeltaMessage message, PacketBuffer buf) {
|
||||||
|
buf.writeInt(message.deltas.size());
|
||||||
|
|
||||||
|
for (StackListResult<FluidStack> delta : message.deltas) {
|
||||||
|
buf.writeInt(delta.getChange());
|
||||||
|
|
||||||
|
StackUtils.writeFluidGridStack(buf, delta.getStack(), delta.getId(), message.network, false, message.network.getFluidStorageTracker().get(delta.getStack()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void handle(GridFluidDeltaMessage message, Supplier<NetworkEvent.Context> ctx) {
|
||||||
|
BaseScreen.executeLater(GridScreen.class, grid -> {
|
||||||
|
message.clientDeltas.forEach(p -> grid.getView().postChange(p.getLeft(), p.getRight()));
|
||||||
|
|
||||||
|
grid.getView().sort();
|
||||||
|
});
|
||||||
|
|
||||||
|
ctx.get().setPacketHandled(true);
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,39 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.network.grid;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
|
||||||
|
import com.raoulvdberge.refinedstorage.container.GridContainer;
|
||||||
|
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||||
|
import net.minecraft.inventory.container.Container;
|
||||||
|
import net.minecraft.network.PacketBuffer;
|
||||||
|
import net.minecraftforge.fml.network.NetworkEvent;
|
||||||
|
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
public class GridFluidInsertHeldMessage {
|
||||||
|
public static GridFluidInsertHeldMessage decode(PacketBuffer buf) {
|
||||||
|
return new GridFluidInsertHeldMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void encode(GridFluidInsertHeldMessage message, PacketBuffer buf) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void handle(GridFluidInsertHeldMessage message, Supplier<NetworkEvent.Context> ctx) {
|
||||||
|
ServerPlayerEntity player = ctx.get().getSender();
|
||||||
|
|
||||||
|
if (player != null) {
|
||||||
|
ctx.get().enqueueWork(() -> {
|
||||||
|
Container container = player.openContainer;
|
||||||
|
|
||||||
|
if (container instanceof GridContainer) {
|
||||||
|
IGrid grid = ((GridContainer) container).getGrid();
|
||||||
|
|
||||||
|
if (grid.getFluidHandler() != null) {
|
||||||
|
grid.getFluidHandler().onInsertHeldContainer(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx.get().setPacketHandled(true);
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,50 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.network.grid;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
|
||||||
|
import com.raoulvdberge.refinedstorage.container.GridContainer;
|
||||||
|
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||||
|
import net.minecraft.inventory.container.Container;
|
||||||
|
import net.minecraft.network.PacketBuffer;
|
||||||
|
import net.minecraftforge.fml.network.NetworkEvent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
public class GridFluidPullMessage {
|
||||||
|
private UUID id;
|
||||||
|
private boolean shift;
|
||||||
|
|
||||||
|
public GridFluidPullMessage(UUID id, boolean shift) {
|
||||||
|
this.id = id;
|
||||||
|
this.shift = shift;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static GridFluidPullMessage decode(PacketBuffer buf) {
|
||||||
|
return new GridFluidPullMessage(buf.readUniqueId(), buf.readBoolean());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void encode(GridFluidPullMessage message, PacketBuffer buf) {
|
||||||
|
buf.writeUniqueId(message.id);
|
||||||
|
buf.writeBoolean(message.shift);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void handle(GridFluidPullMessage message, Supplier<NetworkEvent.Context> ctx) {
|
||||||
|
ServerPlayerEntity player = ctx.get().getSender();
|
||||||
|
|
||||||
|
if (player != null) {
|
||||||
|
ctx.get().enqueueWork(() -> {
|
||||||
|
Container container = player.openContainer;
|
||||||
|
|
||||||
|
if (container instanceof GridContainer) {
|
||||||
|
IGrid grid = ((GridContainer) container).getGrid();
|
||||||
|
|
||||||
|
if (grid.getFluidHandler() != null) {
|
||||||
|
grid.getFluidHandler().onExtract(player, message.id, message.shift);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx.get().setPacketHandled(true);
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,81 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.network.grid;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPattern;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.INetwork;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.util.StackListEntry;
|
||||||
|
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
|
||||||
|
import com.raoulvdberge.refinedstorage.screen.grid.GridScreen;
|
||||||
|
import com.raoulvdberge.refinedstorage.screen.grid.stack.IGridStack;
|
||||||
|
import com.raoulvdberge.refinedstorage.screen.grid.view.FluidGridView;
|
||||||
|
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
||||||
|
import net.minecraft.network.PacketBuffer;
|
||||||
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
|
import net.minecraftforge.fml.network.NetworkEvent;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
public class GridFluidUpdateMessage {
|
||||||
|
private INetwork network;
|
||||||
|
|
||||||
|
private boolean canCraft;
|
||||||
|
private List<IGridStack> stacks = new ArrayList<>();
|
||||||
|
|
||||||
|
public GridFluidUpdateMessage(boolean canCraft, List<IGridStack> stacks) {
|
||||||
|
this.canCraft = canCraft;
|
||||||
|
this.stacks = stacks;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GridFluidUpdateMessage(INetwork network, boolean canCraft) {
|
||||||
|
this.network = network;
|
||||||
|
this.canCraft = canCraft;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static GridFluidUpdateMessage decode(PacketBuffer buf) {
|
||||||
|
boolean canCraft = buf.readBoolean();
|
||||||
|
|
||||||
|
int size = buf.readInt();
|
||||||
|
|
||||||
|
List<IGridStack> stacks = new ArrayList<>();
|
||||||
|
|
||||||
|
for (int i = 0; i < size; ++i) {
|
||||||
|
stacks.add(StackUtils.readFluidGridStack(buf));
|
||||||
|
}
|
||||||
|
|
||||||
|
return new GridFluidUpdateMessage(canCraft, stacks);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void encode(GridFluidUpdateMessage message, PacketBuffer buf) {
|
||||||
|
buf.writeBoolean(message.canCraft);
|
||||||
|
|
||||||
|
int size = message.network.getFluidStorageCache().getList().getStacks().size();
|
||||||
|
|
||||||
|
for (ICraftingPattern pattern : message.network.getCraftingManager().getPatterns()) {
|
||||||
|
size += pattern.getFluidOutputs().size();
|
||||||
|
}
|
||||||
|
|
||||||
|
buf.writeInt(size);
|
||||||
|
|
||||||
|
for (StackListEntry<FluidStack> stack : message.network.getFluidStorageCache().getList().getStacks()) {
|
||||||
|
StackUtils.writeFluidGridStack(buf, stack.getStack(), stack.getId(), message.network, false, message.network.getFluidStorageTracker().get(stack.getStack()));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (ICraftingPattern pattern : message.network.getCraftingManager().getPatterns()) {
|
||||||
|
for (FluidStack output : pattern.getFluidOutputs()) {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void handle(GridFluidUpdateMessage message, Supplier<NetworkEvent.Context> ctx) {
|
||||||
|
BaseScreen.executeLater(GridScreen.class, grid -> {
|
||||||
|
grid.setView(new FluidGridView(grid, GridScreen.getDefaultSorter(), GridScreen.getSorters()));
|
||||||
|
grid.getView().setCanCraft(message.canCraft);
|
||||||
|
grid.getView().setStacks(message.stacks);
|
||||||
|
grid.getView().sort();
|
||||||
|
});
|
||||||
|
|
||||||
|
ctx.get().setPacketHandled(true);
|
||||||
|
}
|
||||||
|
}
|
@@ -10,7 +10,6 @@ import net.minecraft.util.text.ITextComponent;
|
|||||||
import org.apache.commons.lang3.tuple.Pair;
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
import org.lwjgl.glfw.GLFW;
|
import org.lwjgl.glfw.GLFW;
|
||||||
|
|
||||||
// TODO Fix focusing issues on textbox (using tab)
|
|
||||||
public abstract class AmountSpecifyingScreen<T extends Container> extends BaseScreen<T> {
|
public abstract class AmountSpecifyingScreen<T extends Container> extends BaseScreen<T> {
|
||||||
private BaseScreen parent;
|
private BaseScreen parent;
|
||||||
|
|
||||||
@@ -106,7 +105,7 @@ public abstract class AmountSpecifyingScreen<T extends Container> extends BaseSc
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (key == GLFW.GLFW_KEY_ENTER || key == GLFW.GLFW_KEY_KP_ENTER) {
|
if ((key == GLFW.GLFW_KEY_ENTER || key == GLFW.GLFW_KEY_KP_ENTER) && amountField.isFocused()) {
|
||||||
onOkButtonPressed(hasShiftDown());
|
onOkButtonPressed(hasShiftDown());
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@@ -10,10 +10,7 @@ import com.raoulvdberge.refinedstorage.api.network.grid.handler.IItemGridHandler
|
|||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.GridNetworkNode;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.GridNetworkNode;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.render.ElementDrawers;
|
import com.raoulvdberge.refinedstorage.apiimpl.render.ElementDrawers;
|
||||||
import com.raoulvdberge.refinedstorage.container.GridContainer;
|
import com.raoulvdberge.refinedstorage.container.GridContainer;
|
||||||
import com.raoulvdberge.refinedstorage.network.grid.GridClearMessage;
|
import com.raoulvdberge.refinedstorage.network.grid.*;
|
||||||
import com.raoulvdberge.refinedstorage.network.grid.GridItemInsertHeldMessage;
|
|
||||||
import com.raoulvdberge.refinedstorage.network.grid.GridItemPullMessage;
|
|
||||||
import com.raoulvdberge.refinedstorage.network.grid.GridPatternCreateMessage;
|
|
||||||
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
|
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
|
||||||
import com.raoulvdberge.refinedstorage.screen.IScreenInfoProvider;
|
import com.raoulvdberge.refinedstorage.screen.IScreenInfoProvider;
|
||||||
import com.raoulvdberge.refinedstorage.screen.grid.sorting.*;
|
import com.raoulvdberge.refinedstorage.screen.grid.sorting.*;
|
||||||
@@ -451,7 +448,7 @@ public class GridScreen extends BaseScreen<GridContainer> implements IScreenInfo
|
|||||||
|
|
||||||
if (isOverSlotArea(mouseX - guiLeft, mouseY - guiTop) && !held.isEmpty() && (clickedButton == 0 || clickedButton == 1)) {
|
if (isOverSlotArea(mouseX - guiLeft, mouseY - guiTop) && !held.isEmpty() && (clickedButton == 0 || clickedButton == 1)) {
|
||||||
if (grid.getGridType() == GridType.FLUID) {
|
if (grid.getGridType() == GridType.FLUID) {
|
||||||
// @TODO RS.INSTANCE.network.sendToServer(new MessageGridFluidInsertHeld());
|
RS.NETWORK_HANDLER.sendToServer(new GridFluidInsertHeldMessage());
|
||||||
} else {
|
} else {
|
||||||
RS.NETWORK_HANDLER.sendToServer(new GridItemInsertHeldMessage(clickedButton == 1));
|
RS.NETWORK_HANDLER.sendToServer(new GridItemInsertHeldMessage(clickedButton == 1));
|
||||||
}
|
}
|
||||||
@@ -469,7 +466,7 @@ public class GridScreen extends BaseScreen<GridContainer> implements IScreenInfo
|
|||||||
if (stack.isCraftable() && view.canCraft() && (stack.doesDisplayCraftText() || (hasShiftDown() && hasControlDown()))) {
|
if (stack.isCraftable() && view.canCraft() && (stack.doesDisplayCraftText() || (hasShiftDown() && hasControlDown()))) {
|
||||||
// @TODO FMLCommonHandler.instance().showGuiScreen(new GuiGridCraftingSettings(this, ((ContainerGrid) this.inventorySlots).getPlayer(), stack));
|
// @TODO FMLCommonHandler.instance().showGuiScreen(new GuiGridCraftingSettings(this, ((ContainerGrid) this.inventorySlots).getPlayer(), stack));
|
||||||
} else if (grid.getGridType() == GridType.FLUID && held.isEmpty()) {
|
} else if (grid.getGridType() == GridType.FLUID && held.isEmpty()) {
|
||||||
// @TODO RS.INSTANCE.network.sendToServer(new MessageGridFluidPull(view.getStacks().get(slotNumber).getHash(), GuiScreen.isShiftKeyDown()));
|
RS.NETWORK_HANDLER.sendToServer(new GridFluidPullMessage(view.getStacks().get(slotNumber).getId(), hasShiftDown()));
|
||||||
} else if (grid.getGridType() != GridType.FLUID) {
|
} else if (grid.getGridType() != GridType.FLUID) {
|
||||||
int flags = 0;
|
int flags = 0;
|
||||||
|
|
||||||
|
@@ -17,7 +17,7 @@ public class GridUtils {
|
|||||||
case PATTERN:
|
case PATTERN:
|
||||||
return GridNetworkNode.PATTERN_ID;
|
return GridNetworkNode.PATTERN_ID;
|
||||||
case FLUID:
|
case FLUID:
|
||||||
return null;
|
return GridNetworkNode.FLUID_ID;
|
||||||
default:
|
default:
|
||||||
throw new IllegalArgumentException("Unknown grid type " + type);
|
throw new IllegalArgumentException("Unknown grid type " + type);
|
||||||
}
|
}
|
||||||
@@ -32,7 +32,7 @@ public class GridUtils {
|
|||||||
case PATTERN:
|
case PATTERN:
|
||||||
return RSTiles.PATTERN_GRID;
|
return RSTiles.PATTERN_GRID;
|
||||||
case FLUID:
|
case FLUID:
|
||||||
return null;
|
return RSTiles.FLUID_GRID;
|
||||||
default:
|
default:
|
||||||
throw new IllegalArgumentException("Unknown grid type " + type);
|
throw new IllegalArgumentException("Unknown grid type " + type);
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"variants": {
|
||||||
|
"connected=true,direction=north": {
|
||||||
|
"model": "refinedstorage:block/grid/fluid/connected",
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"connected=true,direction=east": {
|
||||||
|
"model": "refinedstorage:block/grid/fluid/connected",
|
||||||
|
"y": 90
|
||||||
|
},
|
||||||
|
"connected=true,direction=south": {
|
||||||
|
"model": "refinedstorage:block/grid/fluid/connected",
|
||||||
|
"y": 180
|
||||||
|
},
|
||||||
|
"connected=true,direction=west": {
|
||||||
|
"model": "refinedstorage:block/grid/fluid/connected",
|
||||||
|
"y": 270
|
||||||
|
},
|
||||||
|
"connected=false,direction=north": {
|
||||||
|
"model": "refinedstorage:block/grid/fluid/disconnected",
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"connected=false,direction=east": {
|
||||||
|
"model": "refinedstorage:block/grid/fluid/disconnected",
|
||||||
|
"y": 90
|
||||||
|
},
|
||||||
|
"connected=false,direction=south": {
|
||||||
|
"model": "refinedstorage:block/grid/fluid/disconnected",
|
||||||
|
"y": 180
|
||||||
|
},
|
||||||
|
"connected=false,direction=west": {
|
||||||
|
"model": "refinedstorage:block/grid/fluid/disconnected",
|
||||||
|
"y": 270
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"parent": "refinedstorage:block/cube_north_cutout",
|
||||||
|
"textures": {
|
||||||
|
"particle": "refinedstorage:block/side",
|
||||||
|
"east": "refinedstorage:block/grid/fluid_left",
|
||||||
|
"south": "refinedstorage:block/grid/back",
|
||||||
|
"west": "refinedstorage:block/grid/fluid_right",
|
||||||
|
"up": "refinedstorage:block/grid/fluid_top",
|
||||||
|
"down": "refinedstorage:block/bottom",
|
||||||
|
"north": "refinedstorage:block/grid/fluid_front",
|
||||||
|
"cutout": "refinedstorage:block/grid/cutouts/fluid_front_connected"
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"parent": "refinedstorage:block/cube_north_cutout",
|
||||||
|
"textures": {
|
||||||
|
"particle": "refinedstorage:block/side",
|
||||||
|
"east": "refinedstorage:block/grid/fluid_left",
|
||||||
|
"south": "refinedstorage:block/grid/back",
|
||||||
|
"west": "refinedstorage:block/grid/fluid_right",
|
||||||
|
"up": "refinedstorage:block/grid/fluid_top",
|
||||||
|
"down": "refinedstorage:block/bottom",
|
||||||
|
"north": "refinedstorage:block/grid/fluid_front",
|
||||||
|
"cutout": "refinedstorage:block/grid/cutouts/fluid_front_disconnected"
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"parent": "refinedstorage:block/grid/fluid/disconnected"
|
||||||
|
}
|
Binary file not shown.
Before Width: | Height: | Size: 554 B |
Binary file not shown.
Before Width: | Height: | Size: 1.4 KiB |
Binary file not shown.
Before Width: | Height: | Size: 554 B |
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "refinedstorage:fluid_grid"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:survives_explosion"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@@ -2,18 +2,16 @@
|
|||||||
"type": "minecraft:crafting_shapeless",
|
"type": "minecraft:crafting_shapeless",
|
||||||
"ingredients": [
|
"ingredients": [
|
||||||
{
|
{
|
||||||
"item": "refinedstorage:grid",
|
"item": "refinedstorage:grid"
|
||||||
"data": 0
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"item": "#advanced_processor"
|
"item": "refinedstorage:advanced_processor"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"item": "minecraft:bucket"
|
"item": "minecraft:bucket"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"result": {
|
"result": {
|
||||||
"item": "refinedstorage:grid",
|
"item": "refinedstorage:fluid_grid"
|
||||||
"data": 3
|
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user