mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2025-07-03 08:25:31 +00:00
implement TerraScriptCheckFunctionAddon
This commit is contained in:
parent
b222129478
commit
ad66fa8022
@ -3,10 +3,10 @@ package com.dfsek.terra.addons.chunkgenerator.config;
|
|||||||
import com.dfsek.tectonic.config.ConfigTemplate;
|
import com.dfsek.tectonic.config.ConfigTemplate;
|
||||||
|
|
||||||
|
|
||||||
public class NoiseChunkGeneratorPackConfig implements ConfigTemplate {
|
public class WorldSamplerContext implements ConfigTemplate {
|
||||||
private final int elevationBlend;
|
private final int elevationBlend;
|
||||||
|
|
||||||
public NoiseChunkGeneratorPackConfig(int elevationBlend) {
|
public WorldSamplerContext(int elevationBlend) {
|
||||||
this.elevationBlend = elevationBlend;
|
this.elevationBlend = elevationBlend;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -9,11 +9,9 @@ package com.dfsek.terra.addons.terrascript;
|
|||||||
|
|
||||||
import com.dfsek.tectonic.exception.LoadException;
|
import com.dfsek.tectonic.exception.LoadException;
|
||||||
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import com.dfsek.terra.addons.manifest.api.AddonInitializer;
|
import com.dfsek.terra.addons.manifest.api.AddonInitializer;
|
||||||
import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException;
|
import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException;
|
||||||
|
import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder;
|
||||||
import com.dfsek.terra.addons.terrascript.script.StructureScript;
|
import com.dfsek.terra.addons.terrascript.script.StructureScript;
|
||||||
import com.dfsek.terra.api.Platform;
|
import com.dfsek.terra.api.Platform;
|
||||||
import com.dfsek.terra.api.addon.BaseAddon;
|
import com.dfsek.terra.api.addon.BaseAddon;
|
||||||
@ -25,6 +23,10 @@ import com.dfsek.terra.api.structure.LootTable;
|
|||||||
import com.dfsek.terra.api.structure.Structure;
|
import com.dfsek.terra.api.structure.Structure;
|
||||||
import com.dfsek.terra.api.util.StringUtil;
|
import com.dfsek.terra.api.util.StringUtil;
|
||||||
|
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.lang.reflect.Type;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
||||||
public class TerraScriptAddon implements AddonInitializer {
|
public class TerraScriptAddon implements AddonInitializer {
|
||||||
@Inject
|
@Inject
|
||||||
@ -47,7 +49,8 @@ public class TerraScriptAddon implements AddonInitializer {
|
|||||||
String id = StringUtil.fileName(entry.getKey());
|
String id = StringUtil.fileName(entry.getKey());
|
||||||
StructureScript structureScript = new StructureScript(entry.getValue(), id, platform, structureRegistry,
|
StructureScript structureScript = new StructureScript(entry.getValue(), id, platform, structureRegistry,
|
||||||
lootRegistry,
|
lootRegistry,
|
||||||
event.getPack().getRegistryFactory().create());
|
event.getPack().getOrCreateRegistry(
|
||||||
|
(Type) FunctionBuilder.class));
|
||||||
structureRegistry.register(structureScript.getID(), structureScript);
|
structureRegistry.register(structureScript.getID(), structureScript);
|
||||||
} catch(ParseException e) {
|
} catch(ParseException e) {
|
||||||
throw new LoadException("Failed to load script \"" + entry.getKey() + "\"", e);
|
throw new LoadException("Failed to load script \"" + entry.getKey() + "\"", e);
|
||||||
@ -55,6 +58,7 @@ public class TerraScriptAddon implements AddonInitializer {
|
|||||||
}
|
}
|
||||||
}).close();
|
}).close();
|
||||||
})
|
})
|
||||||
|
.priority(2)
|
||||||
.failThrough();
|
.failThrough();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,13 +7,12 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.addons.terrascript.script;
|
package com.dfsek.terra.addons.terrascript.script;
|
||||||
|
|
||||||
import com.dfsek.terra.api.world.ServerWorld;
|
|
||||||
import com.dfsek.terra.api.world.WritableWorld;
|
|
||||||
|
|
||||||
import com.google.common.cache.Cache;
|
import com.google.common.cache.Cache;
|
||||||
import com.google.common.cache.CacheBuilder;
|
import com.google.common.cache.CacheBuilder;
|
||||||
import net.jafama.FastMath;
|
import net.jafama.FastMath;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
@ -29,7 +28,6 @@ import com.dfsek.terra.addons.terrascript.script.builders.BinaryNumberFunctionBu
|
|||||||
import com.dfsek.terra.addons.terrascript.script.builders.BiomeFunctionBuilder;
|
import com.dfsek.terra.addons.terrascript.script.builders.BiomeFunctionBuilder;
|
||||||
import com.dfsek.terra.addons.terrascript.script.builders.BlockFunctionBuilder;
|
import com.dfsek.terra.addons.terrascript.script.builders.BlockFunctionBuilder;
|
||||||
import com.dfsek.terra.addons.terrascript.script.builders.CheckBlockFunctionBuilder;
|
import com.dfsek.terra.addons.terrascript.script.builders.CheckBlockFunctionBuilder;
|
||||||
import com.dfsek.terra.addons.terrascript.script.builders.CheckFunctionBuilder;
|
|
||||||
import com.dfsek.terra.addons.terrascript.script.builders.EntityFunctionBuilder;
|
import com.dfsek.terra.addons.terrascript.script.builders.EntityFunctionBuilder;
|
||||||
import com.dfsek.terra.addons.terrascript.script.builders.GetMarkFunctionBuilder;
|
import com.dfsek.terra.addons.terrascript.script.builders.GetMarkFunctionBuilder;
|
||||||
import com.dfsek.terra.addons.terrascript.script.builders.LootFunctionBuilder;
|
import com.dfsek.terra.addons.terrascript.script.builders.LootFunctionBuilder;
|
||||||
@ -53,11 +51,10 @@ import com.dfsek.terra.api.structure.buffer.buffers.DirectBuffer;
|
|||||||
import com.dfsek.terra.api.structure.buffer.buffers.StructureBuffer;
|
import com.dfsek.terra.api.structure.buffer.buffers.StructureBuffer;
|
||||||
import com.dfsek.terra.api.util.Rotation;
|
import com.dfsek.terra.api.util.Rotation;
|
||||||
import com.dfsek.terra.api.util.vector.Vector3;
|
import com.dfsek.terra.api.util.vector.Vector3;
|
||||||
|
import com.dfsek.terra.api.world.ServerWorld;
|
||||||
|
import com.dfsek.terra.api.world.WritableWorld;
|
||||||
import com.dfsek.terra.api.world.chunk.Chunk;
|
import com.dfsek.terra.api.world.chunk.Chunk;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
|
|
||||||
public class StructureScript implements Structure {
|
public class StructureScript implements Structure {
|
||||||
private final Block block;
|
private final Block block;
|
||||||
@ -83,7 +80,6 @@ public class StructureScript implements Structure {
|
|||||||
parser
|
parser
|
||||||
.registerFunction("block", new BlockFunctionBuilder(platform))
|
.registerFunction("block", new BlockFunctionBuilder(platform))
|
||||||
.registerFunction("debugBlock", new BlockFunctionBuilder(platform))
|
.registerFunction("debugBlock", new BlockFunctionBuilder(platform))
|
||||||
.registerFunction("check", new CheckFunctionBuilder(platform))
|
|
||||||
.registerFunction("structure", new StructureFunctionBuilder(registry, platform))
|
.registerFunction("structure", new StructureFunctionBuilder(registry, platform))
|
||||||
.registerFunction("randomInt", new RandomFunctionBuilder())
|
.registerFunction("randomInt", new RandomFunctionBuilder())
|
||||||
.registerFunction("recursions", new RecursionsFunctionBuilder())
|
.registerFunction("recursions", new RecursionsFunctionBuilder())
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
* reference the LICENSE file in this module's root directory.
|
* reference the LICENSE file in this module's root directory.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.dfsek.terra.addons.terrascript.script.functions;
|
package com.dfsek.terra.addon.terrascript.check;
|
||||||
|
|
||||||
import com.dfsek.terra.api.world.WritableWorld;
|
import com.dfsek.terra.api.world.WritableWorld;
|
||||||
|
|
||||||
@ -27,12 +27,10 @@ import com.dfsek.terra.api.world.chunk.generation.util.math.SamplerProvider;
|
|||||||
|
|
||||||
|
|
||||||
public class CheckFunction implements Function<String> {
|
public class CheckFunction implements Function<String> {
|
||||||
private final Platform platform;
|
|
||||||
private final Returnable<Number> x, y, z;
|
private final Returnable<Number> x, y, z;
|
||||||
private final Position position;
|
private final Position position;
|
||||||
|
|
||||||
public CheckFunction(Platform platform, Returnable<Number> x, Returnable<Number> y, Returnable<Number> z, Position position) {
|
public CheckFunction(Returnable<Number> x, Returnable<Number> y, Returnable<Number> z, Position position) {
|
||||||
this.platform = platform;
|
|
||||||
this.x = x;
|
this.x = x;
|
||||||
this.y = y;
|
this.y = y;
|
||||||
this.z = z;
|
this.z = z;
|
@ -5,13 +5,12 @@
|
|||||||
* reference the LICENSE file in this module's root directory.
|
* reference the LICENSE file in this module's root directory.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.dfsek.terra.addons.terrascript.script.builders;
|
package com.dfsek.terra.addon.terrascript.check;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.terrascript.parser.lang.Returnable;
|
import com.dfsek.terra.addons.terrascript.parser.lang.Returnable;
|
||||||
import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder;
|
import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder;
|
||||||
import com.dfsek.terra.addons.terrascript.script.functions.CheckFunction;
|
|
||||||
import com.dfsek.terra.addons.terrascript.tokenizer.Position;
|
import com.dfsek.terra.addons.terrascript.tokenizer.Position;
|
||||||
import com.dfsek.terra.api.Platform;
|
import com.dfsek.terra.api.Platform;
|
||||||
|
|
||||||
@ -26,7 +25,7 @@ public class CheckFunctionBuilder implements FunctionBuilder<CheckFunction> {
|
|||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@Override
|
@Override
|
||||||
public CheckFunction build(List<Returnable<?>> argumentList, Position position) {
|
public CheckFunction build(List<Returnable<?>> argumentList, Position position) {
|
||||||
return new CheckFunction(platform, (Returnable<Number>) argumentList.get(0), (Returnable<Number>) argumentList.get(1),
|
return new CheckFunction((Returnable<Number>) argumentList.get(0), (Returnable<Number>) argumentList.get(1),
|
||||||
(Returnable<Number>) argumentList.get(2), position);
|
(Returnable<Number>) argumentList.get(2), position);
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,30 @@
|
|||||||
|
package com.dfsek.terra.addon.terrascript.check;
|
||||||
|
|
||||||
|
import com.dfsek.terra.addons.manifest.api.AddonInitializer;
|
||||||
|
import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder;
|
||||||
|
import com.dfsek.terra.api.Platform;
|
||||||
|
import com.dfsek.terra.api.addon.BaseAddon;
|
||||||
|
import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent;
|
||||||
|
import com.dfsek.terra.api.event.functional.FunctionalEventHandler;
|
||||||
|
import com.dfsek.terra.api.inject.annotations.Inject;
|
||||||
|
|
||||||
|
|
||||||
|
public class TerraScriptCheckFunctionAddon implements AddonInitializer {
|
||||||
|
@Inject
|
||||||
|
private Platform platform;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private BaseAddon addon;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initialize() {
|
||||||
|
platform.getEventManager()
|
||||||
|
.getHandler(FunctionalEventHandler.class)
|
||||||
|
.register(addon, ConfigPackPreLoadEvent.class)
|
||||||
|
.priority(1)
|
||||||
|
.then(event -> {
|
||||||
|
event.getPack().getOrCreateRegistry(FunctionBuilder.class).register("check", new CheckFunctionBuilder(platform));
|
||||||
|
})
|
||||||
|
.failThrough();
|
||||||
|
}
|
||||||
|
}
|
@ -4,7 +4,7 @@ contributors:
|
|||||||
id: structure-terrascript-loader
|
id: structure-terrascript-loader
|
||||||
version: @VERSION@
|
version: @VERSION@
|
||||||
entrypoints:
|
entrypoints:
|
||||||
- "com.dfsek.terra.addons.terrascript.TerraScriptAddon"
|
- "com.dfsek.terra.addon.terrascript.check.TerraScriptCheckFunctionAddon"
|
||||||
website:
|
website:
|
||||||
issues: https://github.com/PolyhedralDev/Terra-structure-terrascript-loader/issues
|
issues: https://github.com/PolyhedralDev/Terra-structure-terrascript-loader/issues
|
||||||
source: https://github.com/PolyhedralDev/Terra-structure-terrascript-loader
|
source: https://github.com/PolyhedralDev/Terra-structure-terrascript-loader
|
||||||
|
Loading…
x
Reference in New Issue
Block a user