Ruins commandblocks not working on SMP
LemADEC opened this issue · 37 comments
When server uses KCauldron-1.7.10-1614.200 or Thermos-1.7.10-1614.32, ruins command blocks are not triggered.
When server uses plain forge-1.7.10-10.13.4.1614-1.7.10, it works.
Any idea what's going on?
Likely some bukkit permission thing? Does not have required permission to execute command? Check your logs
The same /summon or /testruin commands work in a command block without the triggering prefix, just using a button.
The same commands works when I'm running them as op.
So, it's not a permission issue on the command, it looks more like the trigger isn't happening.
No. This would have to be debugged, probably. E.G. you stick debugprints all over the code and see what does and doesnt trigger. Disclaimer: I am not going to do this.
The KCauldron is maybe missing the Forge Event for EntityEvent.EnteringChunk, which Ruins uses to trigger the command blocks.
@LemADEC does this show up when you enter the area?
Ruins executed and killed Command Block at [pos]
@AtomicStryker There's no way Thermos would modify this EnteringChunk behavior, that would be a horrible idea. It might be that event subscription for it is just not working.
KCauldron changes the nature of loadedTileEntityList to a custom collection (List based). Depending on how you access it, it'll generate exceptions (for loop on the collection) or serious lag (access by index). Not sure if Thermos has same behavior on that one.
I've seen no logs in console when entering the command block proximity. Is there a flag to enable it maybe?
I'm thinking that's why, not because the event is never called. The event is clearly called in the Thermos code.
Relevant code in Ruins: https://github.com/AtomicStryker/atomicstrykers-minecraft-mods/blob/1.8/Ruins/src/main/java/atomicstryker/ruins/common/RuinsMod.java#L119
I dont remember but i think this is a weak clone (same objects) of the loaded tile entity list
@AtomicStryker you are right, they call it the "addedTileEntityList". This is a stupid idea and should've never been implemented if it creates incompatibility like this. Will be figuring out how to remove it...
@LemADEC try disabling prevent-invalid-ticks...
in cauldron.yml
and restarting
I can't find "prevent-invalid-ticks" in any *.yml of my server, currently running with Thermos-1.7.10-1614.32-server.jar
@LemADEC Woops I meant prevent-invalid-tileentity-updates: false
in tileentities.yml
sorry!
Option was true, it's now false. I've updated to Thermos-1.7.10-1614.35-bleeding-server.jar.
Issue is still reproduced, no logs in sight.
@LemADEC are you certain you don't just have command blocks disabled in-game in your Thermos setup and not in Forge?
The command blocks do seat there and never activate.
As of Thermos-1.7.10-1614.35-bleeding-server.jar, if I remove the "RUINSTRIGGER " prefix and trigger with a button, the command do execute.
Both following commands were tested succesfully;
"/summon Sheep ~0 ~0 ~0 {PersistenceRequired:1}"
"/testruin savanna/ShepherdShack_1v7v10 ~0 ~10 ~0"
I've copied the related template hereafter for reference:
# Shepherd Shack
# MC 1.7.10; 15 Dec 2014
# Created by Ruins mod version 14.4 Ingame Parser
# authoring Player: Jordan_Greywolf
# Last Updated 29 Oct 2015
biomesToSpawnIn=savanna,savanna m,savanna plateau,savanna plateau m
uniqueMinDistance=2000
weight=1
embed_into_distance=1
acceptable_target_blocks=
unacceptable_target_blocks=flowing_water,water,flowing_lava,lava,cloud,Natura:Cloud
dimensions=8,9,9
allowable_overhang=0
max_leveling=2
leveling_buffer=-1
preserve_water=0
preserve_lava=0
preserve_plants=1
rule1=0,100,minecraft:grass-0
rule2=0,100,minecraft:log2-0
rule3=0,100,minecraft:stained_hardened_clay-0
rule4=0,100,minecraft:stained_hardened_clay-8
rule5=0,100,minecraft:tallgrass-1
rule6=0,100,CommandBlock:RUINSTRIGGER /summon Sheep ~0 ~0 ~0 {PersistenceRequired:1}:@
rule7=0,100,minecraft:crafting_table-0
rule8=0,100,minecraft:carpet-0
rule9=0,100,minecraft:fence_gate-2
rule10=0,100,minecraft:wooden_door-1
rule11=0,100,minecraft:lit_furnace-2
rule12=0,100,CommandBlock:RUINSTRIGGER /summon Villager ~0 ~0 ~0 {Profession:0,CustomName:Shepherd,Offers:{Recipes:[{uses:-50,maxUses:50,buy:{id:296,Count:22},sell:{id:388,Count:1}},{maxUses:1,buy:{id:359,Count:1},sell:{id:388,Count:1}},{uses:-50,maxUses:100,buy:{id:35,Count:4},sell:{id:287,Count:12}},{uses:-50,maxUses:100,buy:{id:388,Count:1},sell:{id:35,Count:8}},{uses:-50,maxUses:100,buy:{id:355,Count:1},sell:{id:35,Count:3}},{uses:-50,maxUses:100,buy:{id:351,Count:32},sell:{id:388,Count:1}},{uses:-10,maxUses:10,buy:{id:388,Count:12},sell:{id:359,Count:1,tag:{display:{Name:"Shears of Silk"},ench:[{id:33,lvl:1}]}}},{uses:-10,maxUses:10,buy:{id:388,Count:40},sell:{id:359,Count:1,tag:{display:{Name:"Shears of Fortune"},ench:[{id:33,lvl:1},{id:34,lvl:5},{id:35,lvl:5}]}}}]}}:@
rule13=0,100,minecraft:fence-0
rule14=2,100,minecraft:torch-4
rule15=2,100,minecraft:torch-3
rule16=0,100,minecraft:wooden_door-8
rule17=0,100,minecraft:cobblestone_wall-0
rule18=0,100,minecraft:wool-0
rule19=0,100,minecraft:log2-8
rule20=0,100,minecraft:log2-4
rule21=1,100,minecraft:torch-5
#----------------------------
layer
1,1,1,1,1,1,1,1,1
1,2,3,3,3,3,3,2,1
1,3,4,4,4,4,4,3,1
1,3,4,4,4,4,4,3,1
1,3,4,4,4,4,4,4,4
1,3,4,4,4,4,4,3,1
1,3,4,4,4,4,4,3,1
1,2,3,3,3,3,3,2,1
1,1,1,1,1,1,1,1,1
endlayer
layer
5,5,5,5,5,5,5,5,5
5,2,3,3,3,3,3,2,5
5,3,8,6,7,0,6,3,5
5,3,8,0,9,0,0,3,5
5,3,12,0,11,0,0,10,8
5,3,8,0,13,0,0,3,5
5,3,8,6,13,0,6,3,5
5,2,3,3,3,3,3,2,5
5,5,5,5,5,5,5,5,5
endlayer
layer
0,0,0,0,0,0,0,0,0
15,2,3,3,13,3,3,2,14
0,3,0,0,0,0,0,3,0
0,3,0,0,0,0,0,3,0
0,13,0,0,17,0,0,16,0
0,3,0,0,8,0,0,3,0
0,3,0,0,8,0,0,3,0
15,2,3,3,13,3,3,2,14
0,0,0,0,0,0,0,0,0
endlayer
layer
0,0,0,0,0,0,0,0,0
0,2,3,3,3,3,3,2,0
0,3,0,0,17,0,0,3,0
0,3,0,0,17,0,0,3,0
0,3,17,17,17,17,17,3,0
0,3,0,0,17,0,0,3,0
0,3,0,0,17,0,0,3,0
0,2,3,3,3,3,3,2,0
0,0,0,0,0,0,0,0,0
endlayer
layer
0,18,18,18,18,18,18,18,0
18,18,19,19,19,19,19,18,18
18,20,0,0,0,0,0,20,18
18,20,0,0,21,0,0,20,18
18,20,0,21,17,21,0,20,18
18,20,0,0,21,0,0,20,18
18,20,0,0,0,0,0,20,18
18,18,19,19,19,19,19,18,18
0,18,18,18,18,18,18,18,0
endlayer
layer
0,0,0,0,0,0,0,0,0
0,0,18,18,18,18,18,0,0
0,18,18,0,0,0,18,18,0
0,18,0,0,0,0,0,18,0
0,18,0,0,17,0,0,18,0
0,18,0,0,0,0,0,18,0
0,18,18,0,0,0,18,18,0
0,0,18,18,18,18,18,0,0
0,0,0,0,0,0,0,0,0
endlayer
layer
0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0
0,0,18,18,18,18,18,0,0
0,0,18,18,18,18,18,0,0
0,0,18,18,18,18,18,0,0
0,0,18,18,18,18,18,0,0
0,0,18,18,18,18,18,0,0
0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0
endlayer
layer
0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0
0,0,0,0,17,0,0,0,0
0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0
endlayer
This was fixed in Thermos.
CyberdyneCC/Thermos#180
Weird. I'm using Thermos Build 58 and can still reproduce this issue.
Do I need to change any of the default settings (prevent-invalid-tileentity-updates, tick-no-players for CommandBlock)?
I am not sure ((((
@LemADEC il a été resolu, non?
Yep, after setting prevent-invalid-tileentity-updates to false and tick-no-players to true the problem was resolved (tick-no-players is probably not required).
Did someone manage to solve (or workaround) this problem after all?
I'm currently trying to use Ruins on my Thermos server, and I feel that without functioning Command Blocks lots of structures are too easy to loot.
As far as I remember, you need Thermos and some additional fixes in the mod itself as it's doing bad multithreading.
I did some check and the event is properly fired.
Players are recognized but the tile entity list doesn't include the command blocks.
I did a dump and it seems TileEntityCommandBlock is just not there.
@robotia how are implemented Command Blocks in Cauldron/Thermos?
@LemADEC they should not be any different from Forge default. I will try to see what's wrong though 😕
They don't show up in the tileentity list.
I remember bukkit changes command blocks for some reason, so that might be another reason.
I did some more testing and the tile entities are effectively present on server side when you getTileEntity(), they do have the proper class, they're just missing in the world tile entity list.
Hmm...It might be that the command blocks are stored in the added tile entity list or that they aren't stored because they normally don't tick
This is slightly off topic but tellraw @A is broke AF on thermos also, let's just say... It doesnt stop
Details: it just keeps ticking the command block like its being powered again and again every tick....