Skip to content

Conversation

@LordIdra
Copy link
Contributor

  • Remove hydraulic excavator
  • Add hydraulic breaker
  • Add hydraulic miner
  • Add diesel breaker
  • Add diesel miner

@LordIdra LordIdra changed the title Breakers and miners [ref:breakers-and-miners] Breakers and miners Dec 25, 2025
Base automatically changed from idras-little-fixes to moar-diesel-thingies December 30, 2025 12:53
Base automatically changed from moar-diesel-thingies to master December 30, 2025 13:26
@balugaq
Copy link
Collaborator

balugaq commented Jan 2, 2026

QQ_1767367027795

miner and breaker breaks multiblock

@balugaq
Copy link
Collaborator

balugaq commented Jan 2, 2026

breaker breaks block without outputing item

@balugaq
Copy link
Collaborator

balugaq commented Jan 2, 2026

when miner/breaker breaks container, inner items won't be dropped or saved, except shulker box.

@jiajia06403
Copy link

miner break bedrock (very fast! with any tool!)

@LordIdra LordIdra changed the title [ref:breakers-and-miners] Breakers and miners [ref:more-cargo-blocks] Breakers and miners Jan 3, 2026
@LordIdra
Copy link
Contributor Author

LordIdra commented Jan 3, 2026

breaker breaks block without outputing item

Lmao what the hell, how did I miss that

All issues should be fixed, thanks for testing 👍

Copy link
Contributor

@OhmV-IR OhmV-IR left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Doesn't pass the ingame vibe check
Image

  • Error when breaking things using a breaker with an item that isn't a tool (eg creative fluid source block)
    [00:39:06 ERROR]: [PylonCore] Error when handling block(pylonbase:hydraulic_miner, Location{world=CraftWorld{name=world},x=7.0,y=70.0,z=-53.0,pitch=0.0,yaw=0.0}) ticking: Cannot invoke "java.lang.Integer.intValue()" because the return value of "org.bukkit.inventory.ItemStack.getData(io.papermc.paper.datacomponent.DataComponentType$Valued)" is null
    [00:39:06 WARN]: java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "org.bukkit.inventory.ItemStack.getData(io.papermc.paper.datacomponent.DataComponentType$Valued)" is null
    [00:39:06 WARN]: at pylon-base-1.0.0-SNAPSHOT.jar//io.github.pylonmc.pylon.base.content.machines.hydraulics.HydraulicMiner.onProcessFinished(HydraulicMiner.java:206)
    [00:39:06 WARN]: at pylon-core-1.0.0-SNAPSHOT.jar//io.github.pylonmc.pylon.core.block.base.PylonProcessor.finishProcess(PylonProcessor.kt:72)
    [00:39:06 WARN]: at pylon-core-1.0.0-SNAPSHOT.jar//io.github.pylonmc.pylon.core.block.base.PylonProcessor.progressProcess(PylonProcessor.kt:89)
    [00:39:06 WARN]: at pylon-base-1.0.0-SNAPSHOT.jar//io.github.pylonmc.pylon.base.content.machines.hydraulics.HydraulicMiner.tick(HydraulicMiner.java:172)
    [00:39:06 WARN]: at pylon-core-1.0.0-SNAPSHOT.jar//io.github.pylonmc.pylon.core.block.base.PylonTickingBlock$Companion$startTicker$1.invokeSuspend(PylonTickingBlock.kt:159)
    [00:39:06 WARN]: at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    [00:39:06 WARN]: at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
    [00:39:06 WARN]: at org.bukkit.craftbukkit.scheduler.CraftTask.run(CraftTask.java:78)
    [00:39:06 WARN]: at org.bukkit.craftbukkit.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:474)
    [00:39:06 WARN]: at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1744)
    [00:39:06 WARN]: at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1618)
    [00:39:06 WARN]: at net.minecraft.server.dedicated.DedicatedServer.tickServer(DedicatedServer.java:430)
    [00:39:06 WARN]: at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1338)
    [00:39:06 WARN]: at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:384)
    [00:39:06 WARN]: at java.base/java.lang.Thread.run(Thread.java:1474)
  • Diesel miner randomly stops working when in a setup with multiple diesel miners side by side in the same chunk
  • Diesel breaker works without any diesel
    Still left for me to test:
  • Diesel hammerhead
  • Diesel mixing attachment
  • Diesel pipe bender
  • Diesel press
  • Diesel table saw
  • hydraulic hammer head
  • diesel smeltery heater
  • code review

@OhmV-IR
Copy link
Contributor

OhmV-IR commented Jan 5, 2026

oh here's some extra errors when stopping my server too: [01:09:34 ERROR]: Could not pass event PylonChunkBlocksUnloadEvent to PylonCore v1.0.0-SNAPSHOT
java.lang.IllegalStateException: No direction was set for block pylonbase:diesel_breaker
at pylon-core-1.0.0-SNAPSHOT.jar/io.github.pylonmc.pylon.core.block.base.PylonDirectionalBlock.getFacing(PylonDirectionalBlock.kt:25) ~[pylon-core-1.0.0-SNAPSHOT.jar:?]
at pylon-base-1.0.0-SNAPSHOT.jar/io.github.pylonmc.pylon.base.content.machines.diesel.DieselBreaker.getChunksOccupied(DieselBreaker.java:236) ~[pylon-base-1.0.0-SNAPSHOT.jar:?]
at pylon-core-1.0.0-SNAPSHOT.jar/io.github.pylonmc.pylon.core.block.MultiblockCache.onMultiblockRemoved(MultiblockCache.kt:125) ~[pylon-core-1.0.0-SNAPSHOT.jar:?]
at pylon-core-1.0.0-SNAPSHOT.jar/io.github.pylonmc.pylon.core.block.MultiblockCache.handle(MultiblockCache.kt:171) ~[pylon-core-1.0.0-SNAPSHOT.jar:?]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[paper-api-1.21.10-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:71) ~[paper-api-1.21.10-R0.1-SNAPSHOT.jar:?]
at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:131) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:628) ~[paper-api-1.21.10-R0.1-SNAPSHOT.jar:?]
at org.bukkit.event.Event.callEvent(Event.java:46) ~[paper-api-1.21.10-R0.1-SNAPSHOT.jar:?]
at pylon-core-1.0.0-SNAPSHOT.jar/io.github.pylonmc.pylon.core.block.BlockStorage.onChunkUnload(BlockStorage.kt:509) ~[pylon-core-1.0.0-SNAPSHOT.jar:?]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[paper-api-1.21.10-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:71) ~[paper-api-1.21.10-R0.1-SNAPSHOT.jar:?]
at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:131) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:628) ~[paper-api-1.21.10-R0.1-SNAPSHOT.jar:?]
at net.minecraft.world.level.chunk.LevelChunk.unloadCallback(LevelChunk.java:690) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at ca.spottedleaf.moonrise.paper.util.BaseChunkSystemHooks.onChunkNotBorder(BaseChunkSystemHooks.java:101) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at ca.spottedleaf.moonrise.patches.chunk_system.scheduling.NewChunkHolder.handleFullStatusChange(NewChunkHolder.java:1287) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkHolderManager.processPendingFullUpdate(ChunkHolderManager.java:1489) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkHolderManager.processTicketUpdates(ChunkHolderManager.java:1449) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkHolderManager.tick(ChunkHolderManager.java:909) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at net.minecraft.world.level.TicketStorage.purgeStaleTickets(TicketStorage.java:262) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at net.minecraft.server.level.ServerChunkCache.tick(ServerChunkCache.java:487) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at net.minecraft.server.level.ServerLevel.tick(ServerLevel.java:794) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1807) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1618) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at net.minecraft.server.dedicated.DedicatedServer.tickServer(DedicatedServer.java:430) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1338) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:384) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at java.base/java.lang.Thread.run(Thread.java:1474) ~[?:?]
[01:09:34 ERROR]: Could not pass event ChunkUnloadEvent to PylonCore v1.0.0-SNAPSHOT
java.lang.IllegalArgumentException: The provided value cannot be null
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:143) ~[guava-33.3.1-jre.jar:?]
at org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer.set(CraftPersistentDataContainer.java:42) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at pylon-base-1.0.0-SNAPSHOT.jar/io.github.pylonmc.pylon.base.content.machines.hydraulics.HydraulicMiner.write(HydraulicMiner.java:123) ~[pylon-base-1.0.0-SNAPSHOT.jar:?]
at pylon-core-1.0.0-SNAPSHOT.jar/io.github.pylonmc.pylon.core.block.PylonBlock$Companion.serialize$pylon_core(PylonBlock.kt:362) ~[pylon-core-1.0.0-SNAPSHOT.jar:?]
at pylon-core-1.0.0-SNAPSHOT.jar/io.github.pylonmc.pylon.core.block.BlockStorage.save(BlockStorage.kt:446) ~[pylon-core-1.0.0-SNAPSHOT.jar:?]
at pylon-core-1.0.0-SNAPSHOT.jar/io.github.pylonmc.pylon.core.block.BlockStorage.onChunkUnload(BlockStorage.kt:502) ~[pylon-core-1.0.0-SNAPSHOT.jar:?]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[paper-api-1.21.10-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:71) ~[paper-api-1.21.10-R0.1-SNAPSHOT.jar:?]
at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:131) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:628) ~[paper-api-1.21.10-R0.1-SNAPSHOT.jar:?]
at net.minecraft.world.level.chunk.LevelChunk.unloadCallback(LevelChunk.java:690) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at ca.spottedleaf.moonrise.paper.util.BaseChunkSystemHooks.onChunkNotBorder(BaseChunkSystemHooks.java:101) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at ca.spottedleaf.moonrise.patches.chunk_system.scheduling.NewChunkHolder.handleFullStatusChange(NewChunkHolder.java:1287) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkHolderManager.processPendingFullUpdate(ChunkHolderManager.java:1489) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkHolderManager.processTicketUpdates(ChunkHolderManager.java:1449) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkHolderManager.tick(ChunkHolderManager.java:909) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at net.minecraft.world.level.TicketStorage.purgeStaleTickets(TicketStorage.java:262) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at net.minecraft.server.level.ServerChunkCache.tick(ServerChunkCache.java:487) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at net.minecraft.server.level.ServerLevel.tick(ServerLevel.java:794) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1807) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1618) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at net.minecraft.server.dedicated.DedicatedServer.tickServer(DedicatedServer.java:430) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1338) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:384) ~[paper-1.21.10.jar:1.21.10-129-3e25649]
at java.base/java.lang.Thread.run(Thread.java:1474) ~[?:?]

@LordIdra
Copy link
Contributor Author

LordIdra commented Jan 5, 2026

Diesel miner randomly stops working when in a setup with multiple diesel miners side by side in the same chunk

This is the BANE OF MY EXISTENCE. I think miners/breakers breaking blocks that are part of multiblocks will just have to be a feature

@LordIdra
Copy link
Contributor Author

LordIdra commented Jan 5, 2026

All errors should be fixed, thanks for finding em. Tried to prevent placing miners within their mining radius as their behaviour makes no sense when next to each other anyway (and not sure how to make it make sense) but ran into a host of issues... so think I might leave it for now. The current behaviour where all but one just stop working if there are multiple too close together is acceptable IMO

@LordIdra LordIdra requested a review from OhmV-IR January 5, 2026 23:44
@Seggan
Copy link
Member

Seggan commented Jan 7, 2026

Bug: diesel breaker doesnt detect sand fallen into the front

Copy link
Member

@Seggan Seggan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM otherwise

@LordIdra LordIdra merged commit ca6e5bf into master Jan 9, 2026
1 check failed
@LordIdra LordIdra deleted the breakers-and-miners branch January 9, 2026 02:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants