Rule for Serpulo core unloaders taking items from the core

This commit is contained in:
Anuken
2025-12-21 16:01:27 -05:00
parent f64279fb75
commit 861678fd71
6 changed files with 24 additions and 0 deletions

View File

@@ -120,6 +120,8 @@ public class Rules{
public boolean cleanupDeadTeams = true;
/** If true, items can only be deposited in the core. */
public boolean onlyDepositCore = false;
/** If true, Serpulo unloaders can take items from the core. */
public boolean allowCoreUnloaders = true;
/** Cooldown, in seconds, of item depositing for players. */
public float itemDepositCooldown = 0.5f;
/** If true, every enemy block in the radius of the (enemy) core is destroyed upon death. Used for campaign maps. */

View File

@@ -394,6 +394,13 @@ public class ContentParser{
}
}
@Override
protected Object newInstance(Class type){
Object o = super.newInstance(type);
onNewInstance(o, type);
return o;
}
@Override
public <T> T readValue(Class<T> type, Class elementType, JsonValue jsonData, Class keyType){
T t = internalRead(type, elementType, jsonData, keyType);
@@ -1347,6 +1354,8 @@ public class ContentParser{
Log.warn(string, format);
}
void onNewInstance(Object object, Class<?> type){}
public Json getJson(){
checkInit();
return parser;

View File

@@ -162,6 +162,7 @@ public class CustomRulesDialog extends BaseDialog{
check("@rules.alloweditworldprocessors", b -> rules.allowEditWorldProcessors = b, () -> rules.allowEditWorldProcessors);
check("@rules.infiniteresources", b -> rules.infiniteResources = b, () -> rules.infiniteResources);
check("@rules.onlydepositcore", b -> rules.onlyDepositCore = b, () -> rules.onlyDepositCore);
check("@rules.coreunloaders", b -> rules.allowCoreUnloaders = b, () -> rules.allowCoreUnloaders);
check("@rules.derelictrepair", b -> rules.derelictRepair = b, () -> rules.derelictRepair);
check("@rules.reactorexplosions", b -> rules.reactorExplosions = b, () -> rules.reactorExplosions);
check("@rules.schematic", b -> rules.schematicsAllowed = b, () -> rules.schematicsAllowed);

View File

@@ -276,6 +276,11 @@ public class CoreBlock extends StorageBlock{
commandPos = target;
}
@Override
public boolean canUnload(){
return block.unloadable && state.rules.allowCoreUnloaders;
}
@Override
public void draw(){
//draw thrusters when just landed

View File

@@ -53,6 +53,11 @@ public class StorageBlock extends Block{
return linkedCore != null ? linkedCore.acceptItem(source, item) : items.get(item) < getMaximumAccepted(item);
}
@Override
public boolean canUnload(){
return linkedCore == null ? super.canUnload() : linkedCore.canUnload();
}
@Override
public void handleItem(Building source, Item item){
if(linkedCore != null){