Skip to content

Commit ffba4d1

Browse files
committed
misc fix
1 parent 215b260 commit ffba4d1

File tree

10 files changed

+82
-21
lines changed

10 files changed

+82
-21
lines changed

src/main/java/com/teammoeg/chorda/menu/CBaseMenu.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@
2626
import java.util.function.Predicate;
2727

2828
import com.teammoeg.chorda.ChordaNetwork;
29+
import com.teammoeg.chorda.menu.CCustomMenuSlot.SyncableDataSlot;
2930
import com.teammoeg.chorda.network.ContainerDataSyncMessageS2C;
3031
import com.teammoeg.chorda.network.ContainerOperationMessageC2S;
31-
import com.teammoeg.chorda.util.utility.CCustomMenuSlot.SyncableDataSlot;
3232

3333
import blusunrize.immersiveengineering.common.gui.IEContainerMenu.MoveItemsFunc;
3434
import net.minecraft.core.BlockPos;

src/main/java/com/teammoeg/chorda/util/utility/CCustomMenuSlot.java renamed to src/main/java/com/teammoeg/chorda/menu/CCustomMenuSlot.java

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,23 @@
1-
package com.teammoeg.chorda.util.utility;
1+
package com.teammoeg.chorda.menu;
22

3+
import java.util.Comparator;
4+
import java.util.List;
35
import java.util.Objects;
46
import java.util.function.Consumer;
57
import java.util.function.Function;
68
import java.util.function.IntFunction;
79
import java.util.function.Supplier;
10+
import java.util.function.UnaryOperator;
811

9-
import com.teammoeg.chorda.menu.CBaseMenu;
12+
import com.mojang.serialization.Codec;
13+
import com.teammoeg.chorda.util.io.CodecUtil;
14+
import com.teammoeg.chorda.util.io.SerializeUtil;
1015
import com.teammoeg.chorda.util.io.registry.IdRegistry;
1116

1217
import net.minecraft.core.BlockPos;
1318
import net.minecraft.core.Vec3i;
1419
import net.minecraft.network.FriendlyByteBuf;
20+
import net.minecraft.network.chat.Component;
1521
import net.minecraft.world.inventory.ContainerData;
1622
import net.minecraft.world.inventory.DataSlot;
1723
import net.minecraftforge.fluids.FluidStack;
@@ -398,6 +404,35 @@ public boolean isSame(FluidStack data, FluidStack data2) {
398404
static {
399405
encoders.register(SLOT_TANK);
400406
}
407+
public static <T> OtherDataSlotEncoder<T> codec(Codec<T> type,Supplier<T> def,UnaryOperator<T> copy,Comparator<T> comparator){
408+
return new OtherDataSlotEncoder<>(){
409+
410+
@Override
411+
public T read(FriendlyByteBuf network) {
412+
return CodecUtil.readCodec(network, type);
413+
}
414+
415+
@Override
416+
public void write(FriendlyByteBuf network, T data) {
417+
CodecUtil.writeCodec(network, type, data);
418+
}
419+
420+
@Override
421+
public T copy(T data) {
422+
return copy.apply(data);
423+
}
424+
425+
@Override
426+
public T getDefault() {
427+
return def.get();
428+
}
429+
@Override
430+
public boolean isSame(T data, T data2) {
431+
return comparator.compare(data, data2)==0;
432+
}
433+
434+
};
435+
}
401436
public static <T> CDataSlot<T> create(CBaseMenu container, DataSlotConverter<T> type) {
402437
SingleDataSlot<T> slot=new SingleDataSlot<>(type);
403438
container.addDataSlot(slot);

src/main/java/com/teammoeg/chorda/network/ContainerDataSyncMessageS2C.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
import java.util.function.Supplier;
77

88
import com.teammoeg.chorda.menu.CBaseMenu;
9-
import com.teammoeg.chorda.util.utility.CCustomMenuSlot;
10-
import com.teammoeg.chorda.util.utility.CCustomMenuSlot.OtherDataSlotEncoder;
9+
import com.teammoeg.chorda.menu.CCustomMenuSlot;
10+
import com.teammoeg.chorda.menu.CCustomMenuSlot.OtherDataSlotEncoder;
1111
import com.teammoeg.chorda.util.client.ClientUtils;
1212
import com.teammoeg.chorda.util.io.SerializeUtil;
1313

src/main/java/com/teammoeg/frostedheart/content/climate/heatdevice/generator/GeneratorContainer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
import java.util.Optional;
2323

2424
import com.teammoeg.chorda.menu.CBaseMenu;
25-
import com.teammoeg.chorda.util.utility.CCustomMenuSlot;
26-
import com.teammoeg.chorda.util.utility.CCustomMenuSlot.CDataSlot;
25+
import com.teammoeg.chorda.menu.CCustomMenuSlot;
26+
import com.teammoeg.chorda.menu.CCustomMenuSlot.CDataSlot;
2727
import com.teammoeg.chorda.util.ie.CMultiblockHelper;
2828
import com.teammoeg.chorda.util.client.Point;
2929

src/main/java/com/teammoeg/frostedheart/content/climate/heatdevice/generator/GeneratorData.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,9 @@ public void tickHeatedProcess(Level world) {
230230
RLevel = ranged / 100F;
231231

232232
}
233-
233+
public boolean hasFuel() {
234+
return process>0||!inventory.getStackInSlot(INPUT_SLOT).isEmpty();
235+
}
234236
public boolean tickFuelProcess(Level w,SpecialDataHolder<?> teamData) {
235237
if (!isWorking || isBroken)
236238
return false;

src/main/java/com/teammoeg/frostedheart/content/climate/heatdevice/generator/GeneratorLogic.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -249,24 +249,29 @@ public void regist(IMultiblockContext<R> ctx) {
249249
*/
250250
@Override
251251
protected boolean tickFuel(IMultiblockContext<R> ctx) {
252+
R state=ctx.getState();
252253
Optional<GeneratorData> data = getData(ctx);
253254
boolean lastIsBroken = data.map(t -> t.isBroken).orElse(false);
254-
255+
boolean curHasFuel=data.map(t->t.hasFuel()).orElse(false);
256+
if(state.hasFuel!=curHasFuel) {
257+
state.hasFuel=curHasFuel;
258+
ctx.requestMasterBESync();
259+
}
255260
// Tick the GeneratorData
256-
ctx.getState().tickData(ctx.getLevel().getRawLevel(), CMultiblockHelper.getAbsoluteMaster(ctx));
261+
state.tickData(ctx.getLevel().getRawLevel(), CMultiblockHelper.getAbsoluteMaster(ctx));
257262
boolean isActive = data.map(t -> t.isActive).orElse(false);
258263

259264
// If newly broken, start exploding for 100 ticks
260265
boolean isBroken = data.map(t -> t.isBroken).orElse(false);
261266
if (lastIsBroken != isBroken && isBroken) {
262-
ctx.getState().explodeTicks = 100;
267+
state.explodeTicks = 100;
263268
}
264269

265270
Level level = ctx.getLevel().getRawLevel();
266-
if (ctx.getState().explodeTicks > 0) {
271+
if (state.explodeTicks > 0) {
267272
Vec3i size = CMultiblockHelper.getSize(ctx);
268273
// Every 5 ticks, send explosion packet to nearby players
269-
if (ctx.getState().explodeTicks % 5 == 0) {
274+
if (state.explodeTicks % 5 == 0) {
270275
BlockPos pos = ctx.getLevel().toAbsolute(new BlockPos(level.random.nextInt(size.getX()),
271276
level.random.nextInt(size.getY()),
272277
level.random.nextInt(size.getZ())));
@@ -277,7 +282,7 @@ protected boolean tickFuel(IMultiblockContext<R> ctx) {
277282
}
278283
}
279284
// Reduce the explode ticks
280-
ctx.getState().explodeTicks--;
285+
state.explodeTicks--;
281286
}
282287

283288
// Tick the drives

src/main/java/com/teammoeg/frostedheart/content/climate/heatdevice/generator/GeneratorState.java

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,16 @@ public class GeneratorState extends HeatingState {
1515
* Remaining ticks to explode
1616
*/
1717
int explodeTicks;
18-
public HeatEndpoint ep = new HeatEndpoint(200, 0);
18+
boolean hasFuel;
19+
public boolean hasFuel() {
20+
return hasFuel;
21+
}
22+
23+
public void setHasFuel(boolean hasFuel) {
24+
this.hasFuel = hasFuel;
25+
}
26+
27+
public HeatEndpoint ep = new HeatEndpoint(200, 0);
1928
public GeneratorState() {
2029
super();
2130
}
@@ -118,4 +127,16 @@ public void onDataChange() {
118127

119128
}
120129

130+
@Override
131+
public void writeSyncNBT(CompoundTag nbt) {
132+
super.writeSyncNBT(nbt);
133+
nbt.putBoolean("hasFuel", hasFuel);
134+
}
135+
136+
@Override
137+
public void readSyncNBT(CompoundTag nbt) {
138+
super.readSyncNBT(nbt);
139+
hasFuel=nbt.getBoolean("hasFuel");
140+
}
141+
121142
}

src/main/java/com/teammoeg/frostedheart/content/climate/heatdevice/generator/t1/T1GeneratorRenderer.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,8 @@ public void render(MultiblockBlockEntityMaster<T1GeneratorState> blockEntity, fl
5252
final IMultiblockBEHelperMaster<T1GeneratorState> helper = blockEntity.getHelper();
5353
final T1GeneratorState state = helper.getState();
5454
final MultiblockOrientation orientation = helper.getContext().getLevel().getOrientation();
55-
BlockPos blockPos = blockEntity.getBlockPos();
5655

57-
if (state.getData(blockPos).map(t -> !t.inventory.getStackInSlot(GeneratorData.INPUT_SLOT).isEmpty()).orElse(false)) {
56+
if (state.hasFuel()) {
5857
matrixStack.pushPose();
5958
bufferIn = BERenderUtils.mirror(orientation, matrixStack, bufferIn);
6059
Direction facing = orientation.front();

src/main/java/com/teammoeg/frostedheart/content/climate/heatdevice/generator/t2/T2GeneratorContainer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
package com.teammoeg.frostedheart.content.climate.heatdevice.generator.t2;
2121

2222
import com.teammoeg.frostedheart.content.climate.heatdevice.generator.GeneratorContainer;
23-
import com.teammoeg.chorda.util.utility.CCustomMenuSlot;
24-
import com.teammoeg.chorda.util.utility.CCustomMenuSlot.CDataSlot;
23+
import com.teammoeg.chorda.menu.CCustomMenuSlot;
24+
import com.teammoeg.chorda.menu.CCustomMenuSlot.CDataSlot;
2525
import com.teammoeg.chorda.util.client.Point;
2626

2727
import blusunrize.immersiveengineering.common.gui.IEContainerMenu.MultiblockMenuContext;

src/main/java/com/teammoeg/frostedheart/content/climate/heatdevice/generator/t2/T2GeneratorRenderer.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,8 @@ public void render(MultiblockBlockEntityMaster<T2GeneratorState> blockEntity, fl
5252
final IMultiblockBEHelperMaster<T2GeneratorState> helper = blockEntity.getHelper();
5353
final T2GeneratorState state = helper.getState();
5454
final MultiblockOrientation orientation = helper.getContext().getLevel().getOrientation();
55-
BlockPos blockPos = blockEntity.getBlockPos();
5655

57-
if (state.getData(blockPos).map(t -> !t.inventory.getStackInSlot(GeneratorData.INPUT_SLOT).isEmpty()).orElse(false)) {
56+
if (state.hasFuel()) {
5857
matrixStack.pushPose();
5958
bufferIn = BERenderUtils.mirror(orientation, matrixStack, bufferIn);
6059
Direction facing = orientation.front();

0 commit comments

Comments
 (0)