mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2025-07-02 16:05:29 +00:00
add getStructureScript method to LootPopulateEvent
This commit is contained in:
parent
9a97f1178d
commit
ba4a50e234
@ -6,6 +6,7 @@ import com.dfsek.terra.api.event.events.PackEvent;
|
|||||||
import com.dfsek.terra.api.platform.block.Block;
|
import com.dfsek.terra.api.platform.block.Block;
|
||||||
import com.dfsek.terra.api.platform.block.state.Container;
|
import com.dfsek.terra.api.platform.block.state.Container;
|
||||||
import com.dfsek.terra.api.structures.loot.LootTable;
|
import com.dfsek.terra.api.structures.loot.LootTable;
|
||||||
|
import com.dfsek.terra.api.structures.script.StructureScript;
|
||||||
import com.dfsek.terra.api.structures.structure.buffer.items.BufferedLootApplication;
|
import com.dfsek.terra.api.structures.structure.buffer.items.BufferedLootApplication;
|
||||||
import com.dfsek.terra.config.pack.ConfigPack;
|
import com.dfsek.terra.config.pack.ConfigPack;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@ -18,12 +19,14 @@ public class LootPopulateEvent extends AbstractCancellable implements PackEvent,
|
|||||||
private final Container container;
|
private final Container container;
|
||||||
private LootTable table;
|
private LootTable table;
|
||||||
private final ConfigPack pack;
|
private final ConfigPack pack;
|
||||||
|
private final StructureScript script;
|
||||||
|
|
||||||
public LootPopulateEvent(Block block, Container container, LootTable table, ConfigPack pack) {
|
public LootPopulateEvent(Block block, Container container, LootTable table, ConfigPack pack, StructureScript script) {
|
||||||
this.block = block;
|
this.block = block;
|
||||||
this.container = container;
|
this.container = container;
|
||||||
this.table = table;
|
this.table = table;
|
||||||
this.pack = pack;
|
this.pack = pack;
|
||||||
|
this.script = script;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -59,9 +62,19 @@ public class LootPopulateEvent extends AbstractCancellable implements PackEvent,
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the loot table to be populated.
|
* Set the loot table to be populated.
|
||||||
|
*
|
||||||
* @param table New loot table.
|
* @param table New loot table.
|
||||||
*/
|
*/
|
||||||
public void setTable(@NotNull LootTable table) {
|
public void setTable(@NotNull LootTable table) {
|
||||||
this.table = table;
|
this.table = table;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the script used to generate the structure.
|
||||||
|
*
|
||||||
|
* @return Structure script.
|
||||||
|
*/
|
||||||
|
public StructureScript getStructureScript() {
|
||||||
|
return script;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,7 @@ public class StructureScript {
|
|||||||
.registerFunction("setMark", new SetMarkFunctionBuilder())
|
.registerFunction("setMark", new SetMarkFunctionBuilder())
|
||||||
.registerFunction("getMark", new GetMarkFunctionBuilder())
|
.registerFunction("getMark", new GetMarkFunctionBuilder())
|
||||||
.registerFunction("pull", new PullFunctionBuilder(main))
|
.registerFunction("pull", new PullFunctionBuilder(main))
|
||||||
.registerFunction("loot", new LootFunctionBuilder(main, lootRegistry))
|
.registerFunction("loot", new LootFunctionBuilder(main, lootRegistry, this))
|
||||||
.registerFunction("entity", new EntityFunctionBuilder(main))
|
.registerFunction("entity", new EntityFunctionBuilder(main))
|
||||||
.registerFunction("getBiome", new BiomeFunctionBuilder(main))
|
.registerFunction("getBiome", new BiomeFunctionBuilder(main))
|
||||||
.registerFunction("getBlock", new CheckBlockFunctionBuilder())
|
.registerFunction("getBlock", new CheckBlockFunctionBuilder())
|
||||||
|
@ -3,6 +3,7 @@ package com.dfsek.terra.api.structures.script.builders;
|
|||||||
import com.dfsek.terra.api.TerraPlugin;
|
import com.dfsek.terra.api.TerraPlugin;
|
||||||
import com.dfsek.terra.api.structures.parser.lang.Returnable;
|
import com.dfsek.terra.api.structures.parser.lang.Returnable;
|
||||||
import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder;
|
import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder;
|
||||||
|
import com.dfsek.terra.api.structures.script.StructureScript;
|
||||||
import com.dfsek.terra.api.structures.script.functions.LootFunction;
|
import com.dfsek.terra.api.structures.script.functions.LootFunction;
|
||||||
import com.dfsek.terra.api.structures.tokenizer.Position;
|
import com.dfsek.terra.api.structures.tokenizer.Position;
|
||||||
import com.dfsek.terra.registry.config.LootRegistry;
|
import com.dfsek.terra.registry.config.LootRegistry;
|
||||||
@ -12,16 +13,18 @@ import java.util.List;
|
|||||||
public class LootFunctionBuilder implements FunctionBuilder<LootFunction> {
|
public class LootFunctionBuilder implements FunctionBuilder<LootFunction> {
|
||||||
private final TerraPlugin main;
|
private final TerraPlugin main;
|
||||||
private final LootRegistry registry;
|
private final LootRegistry registry;
|
||||||
|
private final StructureScript script;
|
||||||
|
|
||||||
public LootFunctionBuilder(TerraPlugin main, LootRegistry registry) {
|
public LootFunctionBuilder(TerraPlugin main, LootRegistry registry, StructureScript script) {
|
||||||
this.main = main;
|
this.main = main;
|
||||||
this.registry = registry;
|
this.registry = registry;
|
||||||
|
this.script = script;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@Override
|
@Override
|
||||||
public LootFunction build(List<Returnable<?>> argumentList, Position position) {
|
public LootFunction build(List<Returnable<?>> argumentList, Position position) {
|
||||||
return new LootFunction(registry, (Returnable<Number>) argumentList.get(0), (Returnable<Number>) argumentList.get(1), (Returnable<Number>) argumentList.get(2), (Returnable<String>) argumentList.get(3), main, position);
|
return new LootFunction(registry, (Returnable<Number>) argumentList.get(0), (Returnable<Number>) argumentList.get(1), (Returnable<Number>) argumentList.get(2), (Returnable<String>) argumentList.get(3), main, position, script);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -8,6 +8,7 @@ import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments;
|
|||||||
import com.dfsek.terra.api.structures.parser.lang.Returnable;
|
import com.dfsek.terra.api.structures.parser.lang.Returnable;
|
||||||
import com.dfsek.terra.api.structures.parser.lang.functions.Function;
|
import com.dfsek.terra.api.structures.parser.lang.functions.Function;
|
||||||
import com.dfsek.terra.api.structures.parser.lang.variables.Variable;
|
import com.dfsek.terra.api.structures.parser.lang.variables.Variable;
|
||||||
|
import com.dfsek.terra.api.structures.script.StructureScript;
|
||||||
import com.dfsek.terra.api.structures.script.TerraImplementationArguments;
|
import com.dfsek.terra.api.structures.script.TerraImplementationArguments;
|
||||||
import com.dfsek.terra.api.structures.structure.RotationUtil;
|
import com.dfsek.terra.api.structures.structure.RotationUtil;
|
||||||
import com.dfsek.terra.api.structures.structure.buffer.items.BufferedLootApplication;
|
import com.dfsek.terra.api.structures.structure.buffer.items.BufferedLootApplication;
|
||||||
@ -23,8 +24,9 @@ public class LootFunction implements Function<Void> {
|
|||||||
private final Returnable<Number> x, y, z;
|
private final Returnable<Number> x, y, z;
|
||||||
private final Position position;
|
private final Position position;
|
||||||
private final TerraPlugin main;
|
private final TerraPlugin main;
|
||||||
|
private final StructureScript script;
|
||||||
|
|
||||||
public LootFunction(LootRegistry registry, Returnable<Number> x, Returnable<Number> y, Returnable<Number> z, Returnable<String> data, TerraPlugin main, Position position) {
|
public LootFunction(LootRegistry registry, Returnable<Number> x, Returnable<Number> y, Returnable<Number> z, Returnable<String> data, TerraPlugin main, Position position, StructureScript script) {
|
||||||
this.registry = registry;
|
this.registry = registry;
|
||||||
this.position = position;
|
this.position = position;
|
||||||
this.data = data;
|
this.data = data;
|
||||||
@ -32,6 +34,7 @@ public class LootFunction implements Function<Void> {
|
|||||||
this.y = y;
|
this.y = y;
|
||||||
this.z = z;
|
this.z = z;
|
||||||
this.main = main;
|
this.main = main;
|
||||||
|
this.script = script;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -49,7 +52,7 @@ public class LootFunction implements Function<Void> {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
arguments.getBuffer().addItem(new BufferedLootApplication(table, main), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ())).toLocation(arguments.getBuffer().getOrigin().getWorld()));
|
arguments.getBuffer().addItem(new BufferedLootApplication(table, main, script), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), FastMath.roundToInt(xz.getZ())).toLocation(arguments.getBuffer().getOrigin().getWorld()));
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,15 +7,18 @@ import com.dfsek.terra.api.platform.block.Block;
|
|||||||
import com.dfsek.terra.api.platform.block.state.BlockState;
|
import com.dfsek.terra.api.platform.block.state.BlockState;
|
||||||
import com.dfsek.terra.api.platform.block.state.Container;
|
import com.dfsek.terra.api.platform.block.state.Container;
|
||||||
import com.dfsek.terra.api.structures.loot.LootTable;
|
import com.dfsek.terra.api.structures.loot.LootTable;
|
||||||
|
import com.dfsek.terra.api.structures.script.StructureScript;
|
||||||
import com.dfsek.terra.api.util.FastRandom;
|
import com.dfsek.terra.api.util.FastRandom;
|
||||||
|
|
||||||
public class BufferedLootApplication implements BufferedItem {
|
public class BufferedLootApplication implements BufferedItem {
|
||||||
private final LootTable table;
|
private final LootTable table;
|
||||||
private final TerraPlugin main;
|
private final TerraPlugin main;
|
||||||
|
private final StructureScript structure;
|
||||||
|
|
||||||
public BufferedLootApplication(LootTable table, TerraPlugin main) {
|
public BufferedLootApplication(LootTable table, TerraPlugin main, StructureScript structure) {
|
||||||
this.table = table;
|
this.table = table;
|
||||||
this.main = main;
|
this.main = main;
|
||||||
|
this.structure = structure;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -29,7 +32,7 @@ public class BufferedLootApplication implements BufferedItem {
|
|||||||
}
|
}
|
||||||
Container container = (Container) data;
|
Container container = (Container) data;
|
||||||
|
|
||||||
LootPopulateEvent event = new LootPopulateEvent(block, container, table, main.getWorld(block.getLocation().getWorld()).getGenerator().getConfigPack());
|
LootPopulateEvent event = new LootPopulateEvent(block, container, table, main.getWorld(block.getLocation().getWorld()).getGenerator().getConfigPack(), structure);
|
||||||
main.getEventManager().callEvent(event);
|
main.getEventManager().callEvent(event);
|
||||||
if(event.isCancelled()) return;
|
if(event.isCancelled()) return;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user