-
[1.15.2] How do I check when an item is moved into or out of an inventory?
I have created a custom inventory. I want to have a method run whenever an item is changed. How would I do that?
-
[1.15.2] Energy not resetting
Thank you, that works!
-
[1.15.2] Energy not resetting
https://github.com/TallYate/CrudeTechMod/blob/master/src/main/java/me/joshua/crudetechmod/Blocks/FurnaceGeneratorBlock.java The DeferredRegisters and RegistryObjects are here https://github.com/TallYate/CrudeTechMod/tree/master/src/main/java/me/joshua/crudetechmod/Init
-
[1.15.2] Energy not resetting
It only happens when I break the generator though. If it was tied to the wrong block, I think it would also give that error when I place the generator. Here is when it is registered public static final RegistryObject<TileEntityType<FurnaceGeneratorTileEntity>> FURNACE_GENERATOR = TILE_ENTITY_TYPES.register("furnace_generator", () -> TileEntityType.Builder.create(FurnaceGeneratorTileEntity::new, ModBlocks.FURNACE_GENERATOR.get()).build(null));
-
[1.15.2] Energy not resetting
https://github.com/TallYate/CrudeTechMod/blob/master/src/main/java/me/joshua/crudetechmod/Blocks/FurnaceGeneratorTileEntity.java When I break the generator, the blocks reset and drop, but the energy and burnTime remain the same, how do I make them reset as well? Also, when breaking a furnace generator in a new location, it says: "Block entity invalid: crudetech:furnace_generator @ BlockPos{x=288, y=4, z=169}" but only once per location so I think I might be removing the tileEntity the wrong way.
-
[1.15.2] How to make it save the energy
I tried putting the packet in the @Override openInventory, but it never runs. Is there a way to make the packet output something and have it stored where you call it?
-
[1.15.2] How to make it save the energy
So I can get the energy level from the server and send it back to the client
-
[1.15.2] How to make it save the energy
What are you saying?
-
[1.15.2] How to make it save the energy
Dev joined the game [m[32m[21:54:58] [Server thread/INFO] [minecraft/IntegratedServer]: Saving and pausing game... [m[32m[21:54:58] [Server thread/INFO] [minecraft/MinecraftServer]: Saving chunks for level 'New World'/minecraft:overworld [m[32m[21:54:58] [Server thread/INFO] [me.jo.cr.CrudeTechMod/]: Server-Side wrote Energy: 0 [m[32m[21:54:58] [Server thread/INFO] [me.jo.cr.CrudeTechMod/]: Server-Side wrote BurnTime: 0 [m[32m[21:54:58] [Render thread/INFO] [me.jo.cr.CrudeTechMod/]: sent packet [m[32m[21:54:58] [Render thread/INFO] [me.jo.cr.CrudeTechMod/]: Client-Side read Energy: 0 [m[32m[21:54:58] [Render thread/INFO] [me.jo.cr.CrudeTechMod/]: Client-Side read BurnTime: 0 [m[32m[21:54:58] [Render thread/INFO] [minecraft/AdvancementList]: Loaded 13 advancements [m[33m[21:54:58] [Render thread/WARN] [minecraft/SoundEngine]: Unable to play empty soundEvent: minecraft:entity.slime.squish_small [m[36m[21:54:59] [Server thread/DEBUG] [ne.mi.fm.FMLWorldPersistenceHook/WP]: Gathering id map for writing to world save New World [m[32m[21:54:59] [Server thread/INFO] [me.jo.cr.CrudeTechMod/]: Energy: 0, BurnTime: 0 [m[32m[21:54:59] [Server thread/INFO] [me.jo.cr.CrudeTechMod/]: sender is null, side is Client [m[32m[21:54:59] [Render thread/INFO] [me.jo.cr.CrudeTechMod/]: sender is null, side is Server https://github.com/TallYate/CrudeTechMod/tree/master/src/main/java/me/joshua/crudetechmod The packet is sent once from the Client-Side read method in the tileEntity. But the handler is done twice, from both sides. It should only run server side if the sender is not null. Why does this happen?
-
[1.15.2] How to make it save the energy
- [1.15.2] How to make it save the energy
Create a new world?- [1.15.2] How to make it save the energy
Create a new world?- [1.15.2] How to make it save the energy
public class GeneratorPacket { public final int energy; public final int burnTime; public final boolean fromServer; public final BlockPos pos; public GeneratorPacket(int energy, int burnTime, boolean fromServer, BlockPos pos) { this.energy = energy; this.burnTime = burnTime; this.fromServer = fromServer; this.pos = pos; } public static void encode(GeneratorPacket msg, PacketBuffer buf) { buf.writeInt(msg.energy); buf.writeInt(msg.burnTime); buf.writeBoolean(msg.fromServer); buf.writeBlockPos(msg.pos); } public static GeneratorPacket decode(PacketBuffer buf) { return new GeneratorPacket(buf.readInt(), buf.readInt(), buf.readBoolean(), buf.readBlockPos()); } public static void handle(GeneratorPacket msg, Supplier<NetworkEvent.Context> ctx) { ctx.get().enqueueWork(() -> { TileEntity te = ctx.get().getSender().world.getTileEntity(msg.pos); if(msg.fromServer) { if(te instanceof FurnaceGeneratorTileEntity) { FurnaceGeneratorTileEntity gen = (FurnaceGeneratorTileEntity) te; int energy = gen.getEnergy(); int burnTime = gen.getBurnTime(); PacketTarget target = PacketDistributor.PLAYER.with(() -> ctx.get().getSender()); INSTANCE.send(target, new GeneratorPacket(energy, burnTime, true, msg.pos)); } } else if(te instanceof FurnaceGeneratorTileEntity){ FurnaceGeneratorTileEntity gen = (FurnaceGeneratorTileEntity) te; gen.setEnergy(msg.energy); gen.setBurnTime(msg.burnTime); } }); ctx.get().setPacketHandled(true); } private static final String PROTOCOL_VERSION = "1"; public static final SimpleChannel INSTANCE = NetworkRegistry.newSimpleChannel( new ResourceLocation(CrudeTechMod.MOD_ID, "generator_packet"), () -> PROTOCOL_VERSION, PROTOCOL_VERSION::equals, PROTOCOL_VERSION::equals); public static int i = 0; } @Override public CompoundNBT write(CompoundNBT compound) { super.write(compound); if (!this.checkLootAndWrite(compound)) { ItemStackHelper.saveAllItems(compound, this.generatorContents); } if (this.world.isRemote) { GeneratorPacket.INSTANCE .sendToServer(new GeneratorPacket(this.energy.getEnergyStored(), this.burnTime, false, this.pos)); } compound.putInt("Energy", this.energy.getEnergyStored()); compound.putInt("BurnTime", this.burnTime); CrudeTechMod.log((this.world.isRemote ? "Client-Side " : "Server-Side ") + "wrote Energy: " + Integer.toString(compound.getInt("Energy"))); CrudeTechMod.log((this.world.isRemote ? "Client-Side " : "Server-Side ") + "wrote BurnTime: " + Integer.toString(compound.getInt("BurnTime"))); return compound; } I tried using packets but now the log says this [m[1;31m[15:53:07] [Server thread/ERROR] [minecraft/TileEntity]: Failed to load data for block entity crudetech:furnace_generator java.lang.NullPointerException: null at me.joshua.crudetechmod.Blocks.FurnaceGeneratorTileEntity.read(FurnaceGeneratorTileEntity.java:177) ~[?:?] {re:classloading} at net.minecraft.tileentity.TileEntity.lambda$create$1(TileEntity.java:95) ~[?:?] {re:classloading} at java.util.Optional.map(Unknown Source) ~[?:1.8.0_231] {} at net.minecraft.tileentity.TileEntity.create(TileEntity.java:93) ~[?:?] {re:classloading} at net.minecraft.world.chunk.storage.ChunkSerializer.readEntities(ChunkSerializer.java:395) ~[?:?] {re:classloading} at net.minecraft.world.chunk.storage.ChunkSerializer.lambda$read$2(ChunkSerializer.java:132) ~[?:?] {re:classloading} at net.minecraft.world.chunk.Chunk.postLoad(Chunk.java:470) ~[?:?] {re:classloading} at net.minecraft.world.server.ChunkManager.lambda$null$25(ChunkManager.java:593) ~[?:?] {re:classloading} at com.mojang.datafixers.util.Either.lambda$mapLeft$0(Either.java:162) ~[datafixerupper-2.0.24.jar:?] {} at com.mojang.datafixers.util.Either$Left.map(Either.java:38) ~[datafixerupper-2.0.24.jar:?] {} at com.mojang.datafixers.util.Either.mapLeft(Either.java:162) ~[datafixerupper-2.0.24.jar:?] {} at net.minecraft.world.server.ChunkManager.lambda$func_219200_b$26(ChunkManager.java:580) ~[?:?] {re:classloading} at java.util.concurrent.CompletableFuture.uniApply(Unknown Source) ~[?:1.8.0_231] {} at java.util.concurrent.CompletableFuture$UniApply.tryFire(Unknown Source) ~[?:1.8.0_231] {} at java.util.concurrent.CompletableFuture$Completion.run(Unknown Source) ~[?:1.8.0_231] {} at net.minecraft.world.chunk.ChunkTaskPriorityQueueSorter.lambda$null$1(ChunkTaskPriorityQueueSorter.java:44) ~[?:?] {re:classloading} at net.minecraft.util.concurrent.ThreadTaskExecutor.run(ThreadTaskExecutor.java:140) [?:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.world.server.ServerChunkProvider$ChunkExecutor.run(ServerChunkProvider.java:513) [?:?] {re:classloading} at net.minecraft.util.concurrent.ThreadTaskExecutor.driveOne(ThreadTaskExecutor.java:110) [?:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.world.server.ServerChunkProvider$ChunkExecutor.driveOne(ServerChunkProvider.java:521) [?:?] {re:classloading} at net.minecraft.world.server.ServerChunkProvider.driveOneTask(ServerChunkProvider.java:272) [?:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.MinecraftServer.driveOneInternal(MinecraftServer.java:747) [?:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.MinecraftServer.driveOne(MinecraftServer.java:736) [?:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.util.concurrent.ThreadTaskExecutor.driveUntil(ThreadTaskExecutor.java:123) [?:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.MinecraftServer.runScheduledTasks(MinecraftServer.java:722) [?:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.MinecraftServer.loadInitialChunks(MinecraftServer.java:477) [?:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.integrated.IntegratedServer.loadAllWorlds(IntegratedServer.java:83) [?:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.server.integrated.IntegratedServer.init(IntegratedServer.java:99) [?:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:638) [?:?] {re:classloading,pl:accesstransformer:B} and skips loading my tileEntity This is the line it is referring to CrudeTechMod.log((this.world.isRemote ? "Client-Side " : "Server-Side ") + "wrote Energy: " + Integer.toString(compound.getInt("Energy"))); So I removed the loggers, because maybe it can't get the world when it's not loaded? But the energy was still not synced- [1.15.2] How to make it save the energy
https://github.com/TallYate/CrudeTechMod/tree/master/src/main I added a way for it to charge items, and it charges more than it displays. Maybe the client and server are desynced? And I should send packets?- [1.15.2] How to make it save the energy
<removed> - [1.15.2] How to make it save the energy
IPS spam blocked by CleanTalk.
Important Information
By using this site, you agree to our Terms of Use.