Merge branch 'main' into StructureVerifier
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"format_version": 2,
|
"format_version": 2,
|
||||||
"header": {
|
"header": {
|
||||||
"name": "StrucTool",
|
"name": "StrucTool [BP] v1.0.0",
|
||||||
"description": "Survival building extension for §l§aCanopy§r by §aForestOfLight§r.",
|
"description": "Survival building extension for §l§aCanopy§r by §aForestOfLight§r.",
|
||||||
"uuid": "8c0c0153-d8b9-482a-889f-aef922b8fe58",
|
"uuid": "8c0c0153-d8b9-482a-889f-aef922b8fe58",
|
||||||
"min_engine_version": [1, 21, 70],
|
"min_engine_version": [1, 21, 70],
|
||||||
@@ -32,6 +32,10 @@
|
|||||||
"module_name": "@minecraft/server-ui",
|
"module_name": "@minecraft/server-ui",
|
||||||
"version": "2.0.0-beta"
|
"version": "2.0.0-beta"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"uuid": "375ec465-3dc1-429f-8b4c-a337889e1ed4", // StrucTool RP
|
||||||
|
"version": [1, 0, 0]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"uuid": "bcf34368-ed0c-4cf7-938e-582cccf9950d", // Canopy RP
|
"uuid": "bcf34368-ed0c-4cf7-938e-582cccf9950d", // Canopy RP
|
||||||
"version": [1, 0, 3]
|
"version": [1, 0, 3]
|
||||||
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 64 KiB |
@@ -6,8 +6,8 @@ export class Outliner {
|
|||||||
dimension;
|
dimension;
|
||||||
min = new Vector();
|
min = new Vector();
|
||||||
max = new Vector();
|
max = new Vector();
|
||||||
drawParticle = "minecraft:villager_happy";
|
drawParticle = "structool:outline";
|
||||||
drawFrequency = 8;
|
drawFrequency = 20;
|
||||||
|
|
||||||
#drawParticles = [];
|
#drawParticles = [];
|
||||||
#runner = null;
|
#runner = null;
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"format_version": 2,
|
||||||
|
"header": {
|
||||||
|
"name": "StrucTool [RP] v1.0.0",
|
||||||
|
"description": "Survival building extension for §l§aCanopy§r by §aForestOfLight§r.",
|
||||||
|
"uuid": "375ec465-3dc1-429f-8b4c-a337889e1ed4",
|
||||||
|
"version": [1, 0, 0],
|
||||||
|
"min_engine_version": [1,17,0]
|
||||||
|
},
|
||||||
|
"modules": [
|
||||||
|
{
|
||||||
|
"type": "resources",
|
||||||
|
"uuid": "7f6b23df-a583-476b-b0e4-87457e65f7c0",
|
||||||
|
"version": [1, 0, 0]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dependencies": [
|
||||||
|
{
|
||||||
|
"uuid": "8c0c0153-d8b9-482a-889f-aef922b8fe58", // StrucTool BP
|
||||||
|
"version": [1, 0, 0]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"uuid": "7f6b23df-a583-476b-b0e4-87457e65f7c0", // Canopy BP
|
||||||
|
"version": [1, 3, 9]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"authors": [ "ForestOfLight" ],
|
||||||
|
"license": "MIT"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"format_version": "1.10.0",
|
||||||
|
"particle_effect": {
|
||||||
|
"description": {
|
||||||
|
"identifier": "structool:blockoverlay",
|
||||||
|
"basic_render_parameters": {
|
||||||
|
"material": "particles_blend",
|
||||||
|
"texture": "textures/particle/white"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"components": {
|
||||||
|
"minecraft:emitter_rate_instant": {
|
||||||
|
"num_particles": 1
|
||||||
|
},
|
||||||
|
"minecraft:emitter_lifetime_once": {
|
||||||
|
"active_time": 1
|
||||||
|
},
|
||||||
|
"minecraft:emitter_shape_point": {},
|
||||||
|
"minecraft:particle_lifetime_expression": {
|
||||||
|
"max_lifetime": 1
|
||||||
|
},
|
||||||
|
"minecraft:particle_appearance_billboard": {
|
||||||
|
"size": [0.5, 0.5],
|
||||||
|
"facing_camera_mode": "emitter_transform_xz"
|
||||||
|
},
|
||||||
|
"minecraft:particle_appearance_tinting": {
|
||||||
|
"color": [1, 0, 0, 0.5]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
"format_version": "1.10.0",
|
||||||
|
"particle_effect": {
|
||||||
|
"description": {
|
||||||
|
"identifier": "structool:outline",
|
||||||
|
"basic_render_parameters": {
|
||||||
|
"material": "particles_blend",
|
||||||
|
"texture": "textures/particle/particles"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"components": {
|
||||||
|
"minecraft:emitter_rate_instant": {
|
||||||
|
"num_particles": 1
|
||||||
|
},
|
||||||
|
"minecraft:emitter_lifetime_once": {
|
||||||
|
"active_time": 1
|
||||||
|
},
|
||||||
|
"minecraft:emitter_shape_point": {},
|
||||||
|
"minecraft:particle_lifetime_expression": {
|
||||||
|
"max_lifetime": 1
|
||||||
|
},
|
||||||
|
"minecraft:particle_appearance_billboard": {
|
||||||
|
"size": [0.2, 0.2],
|
||||||
|
"facing_camera_mode": "rotate_xyz",
|
||||||
|
"uv": {
|
||||||
|
"texture_width": 16,
|
||||||
|
"texture_height": 16,
|
||||||
|
"uv": [6, 11],
|
||||||
|
"uv_size": [1, 1]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"minecraft:particle_appearance_tinting": {
|
||||||
|
"color": [0, 0.66667, 0, 1]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 83 B |
@@ -1,115 +0,0 @@
|
|||||||
import { Command } from '../lib/canopy/CanopyExtension';
|
|
||||||
import { extension } from '../config';
|
|
||||||
import { structureCollection } from '../classes/StructureCollection';
|
|
||||||
import { MaterialCounter } from '../classes/MaterialCounter';
|
|
||||||
|
|
||||||
const structCmd = new Command({
|
|
||||||
name: 'struct',
|
|
||||||
description: { text: 'Manages current StrucTool structures.' },
|
|
||||||
usage: 'struct <name> <add/remove/place/layer/info> [args...]',
|
|
||||||
callback: structCommand,
|
|
||||||
args: [
|
|
||||||
{ type: 'string', name: 'name' },
|
|
||||||
{ type: 'string', name: 'option' },
|
|
||||||
{ type: 'string|number', name: 'arg3' }
|
|
||||||
]
|
|
||||||
});
|
|
||||||
extension.addCommand(structCmd);
|
|
||||||
|
|
||||||
function structCommand(sender, args) {
|
|
||||||
const { name, option, arg3 } = args;
|
|
||||||
switch (option) {
|
|
||||||
case 'add':
|
|
||||||
addStructure(sender, name);
|
|
||||||
break;
|
|
||||||
case 'remove':
|
|
||||||
removeStructure(sender, name);
|
|
||||||
break;
|
|
||||||
case 'place':
|
|
||||||
placeStructure(sender, name);
|
|
||||||
break;
|
|
||||||
case 'layer':
|
|
||||||
setLayer(sender, name, arg3);
|
|
||||||
break;
|
|
||||||
case 'info':
|
|
||||||
printInfo(sender, name);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
structCmd.sendUsage(sender);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function addStructure(sender, name) {
|
|
||||||
try {
|
|
||||||
structureCollection.add(name, name);
|
|
||||||
} catch (e) {
|
|
||||||
if (e.message.includes('already exists')) {
|
|
||||||
sender.sendMessage({ text: `§cStructure '${name}' already exists.` });
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
sender.sendMessage({ text: `§cFailed to add structure '${name}'.` });
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
sender.sendMessage({ text: `§7Added structure '${name}'` });
|
|
||||||
}
|
|
||||||
|
|
||||||
function removeStructure(sender, name) {
|
|
||||||
try {
|
|
||||||
structureCollection.remove(name);
|
|
||||||
} catch (e) {
|
|
||||||
sender.sendMessage({ text: `§cStructure '${name}' not found.` });
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
sender.sendMessage({ text: `Removed structure '${name}'` });
|
|
||||||
}
|
|
||||||
|
|
||||||
function placeStructure(sender, name) {
|
|
||||||
let structure;
|
|
||||||
try {
|
|
||||||
structure = structureCollection.get(name);
|
|
||||||
} catch (e) {
|
|
||||||
try {
|
|
||||||
structure = structureCollection.add(name, name);
|
|
||||||
} catch (e) {
|
|
||||||
if (e.message.includes('already exists')) {
|
|
||||||
sender.sendMessage({ text: `§cStructure '${name}' already exists.` });
|
|
||||||
return;
|
|
||||||
} else if (e.message.includes('not found')) {
|
|
||||||
sender.sendMessage({ text: `§cStructure '${name}' not found.` });
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
sender.sendMessage({ text: `§cFailed to place structure '${name}'.` });
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
structure.place(sender.dimension.id, sender.location);
|
|
||||||
sender.sendMessage({ text: `§7Placed structure '${name}'.` });
|
|
||||||
}
|
|
||||||
|
|
||||||
function setLayer(sender, name, layer) {
|
|
||||||
let structure;
|
|
||||||
try {
|
|
||||||
structure = structureCollection.get(name);
|
|
||||||
} catch (e) {
|
|
||||||
sender.sendMessage({ text: `§cStructure '${name}' not found.` });
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
structure.setLayer(layer);
|
|
||||||
sender.sendMessage({ text: `§7Set layer of structure '${name}' to ${layer}.` });
|
|
||||||
}
|
|
||||||
|
|
||||||
function printInfo(sender, name) {
|
|
||||||
let structure;
|
|
||||||
try {
|
|
||||||
structure = structureCollection.get(name);
|
|
||||||
} catch (e) {
|
|
||||||
sender.sendMessage({ text: `§cStructure '${name}' not found.` });
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const { dimensionId, location } = structure.getLocation();
|
|
||||||
sender.sendMessage({ text: `§7Structure '${name}' at [${location.x} ${location.y} ${location.z}] in '${dimensionId}'` });
|
|
||||||
sender.sendMessage({ text: `§7Current Layer: ${structure.getLayer()}` });
|
|
||||||
sender.sendMessage({ text: `§7Materials: ${MaterialCounter.getPrintable(name)}` });
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user