dimensional coords extension
This commit is contained in:
parent
081fae98c4
commit
ac6c413fb8
@ -44,11 +44,14 @@ import net.minecraft.util.text.ITextComponent;
|
|||||||
import net.minecraft.util.text.TextComponentString;
|
import net.minecraft.util.text.TextComponentString;
|
||||||
import net.minecraft.util.text.TextFormatting;
|
import net.minecraft.util.text.TextFormatting;
|
||||||
import net.minecraft.util.text.event.ClickEvent;
|
import net.minecraft.util.text.event.ClickEvent;
|
||||||
|
import net.minecraft.world.DimensionType;
|
||||||
import net.minecraft.world.chunk.Chunk;
|
import net.minecraft.world.chunk.Chunk;
|
||||||
|
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
|
import static org.apache.commons.lang3.StringUtils.isNumeric;
|
||||||
|
|
||||||
public class ExampleBaritoneControl implements Helper, AbstractGameEventListener {
|
public class ExampleBaritoneControl implements Helper, AbstractGameEventListener {
|
||||||
private static final String COMMAND_PREFIX = "#";
|
private static final String COMMAND_PREFIX = "#";
|
||||||
|
|
||||||
@ -260,7 +263,7 @@ public class ExampleBaritoneControl implements Helper, AbstractGameEventListener
|
|||||||
try {
|
try {
|
||||||
String[] coords = msg.substring("build".length()).trim().split(" ");
|
String[] coords = msg.substring("build".length()).trim().split(" ");
|
||||||
file = coords[0] + ".schematic";
|
file = coords[0] + ".schematic";
|
||||||
origin = new BlockPos(parseOrDefault(coords[1], ctx.playerFeet().x), parseOrDefault(coords[2], ctx.playerFeet().y), parseOrDefault(coords[3], ctx.playerFeet().z));
|
origin = new BlockPos(parseOrDefault(coords[1], ctx.playerFeet().x, 1), parseOrDefault(coords[2], ctx.playerFeet().y, 1), parseOrDefault(coords[3], ctx.playerFeet().z, 1));
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
file = msg.substring(5).trim() + ".schematic";
|
file = msg.substring(5).trim() + ".schematic";
|
||||||
origin = ctx.playerFeet();
|
origin = ctx.playerFeet();
|
||||||
@ -672,8 +675,8 @@ public class ExampleBaritoneControl implements Helper, AbstractGameEventListener
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private int parseOrDefault(String str, int i) {
|
private int parseOrDefault(String str, int i, double dimensionFactor) {
|
||||||
return str.equals("~") ? i : str.startsWith("~") ? Integer.parseInt(str.substring(1)) + i : Integer.parseInt(str);
|
return str.equals("~") ? i : str.startsWith("~") ? (int) (Integer.parseInt(str.substring(1)) * dimensionFactor) + i : (int) (Integer.parseInt(str) * dimensionFactor);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void log(List<ItemStack> stacks) {
|
private void log(List<ItemStack> stacks) {
|
||||||
@ -688,18 +691,23 @@ public class ExampleBaritoneControl implements Helper, AbstractGameEventListener
|
|||||||
Goal goal;
|
Goal goal;
|
||||||
try {
|
try {
|
||||||
BetterBlockPos playerFeet = ctx.playerFeet();
|
BetterBlockPos playerFeet = ctx.playerFeet();
|
||||||
switch (params.length) {
|
|
||||||
|
int length = params.length - 1; // length has to be smaller when a dimension parameter is added
|
||||||
|
if (params.length < 1 || (isNumeric(params[params.length - 1]) || params[params.length - 1].startsWith("~"))) {
|
||||||
|
length = params.length;
|
||||||
|
}
|
||||||
|
switch (length) {
|
||||||
case 0:
|
case 0:
|
||||||
goal = new GoalBlock(playerFeet);
|
goal = new GoalBlock(playerFeet);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
goal = new GoalYLevel(parseOrDefault(params[0], playerFeet.y));
|
goal = new GoalYLevel(parseOrDefault(params[0], playerFeet.y, 1));
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
goal = new GoalXZ(parseOrDefault(params[0], playerFeet.x), parseOrDefault(params[1], playerFeet.z));
|
goal = new GoalXZ(parseOrDefault(params[0], playerFeet.x, calculateDimensionFactor(params[params.length - 1])), parseOrDefault(params[1], playerFeet.z, calculateDimensionFactor(params[params.length - 1])));
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
goal = new GoalBlock(new BlockPos(parseOrDefault(params[0], playerFeet.x), parseOrDefault(params[1], playerFeet.y), parseOrDefault(params[2], playerFeet.z)));
|
goal = new GoalBlock(new BlockPos(parseOrDefault(params[0], playerFeet.x, calculateDimensionFactor(params[params.length - 1])), parseOrDefault(params[1], playerFeet.y, 1), parseOrDefault(params[2], playerFeet.z, calculateDimensionFactor(params[params.length - 1]))));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
logDirect("unable to understand lol");
|
logDirect("unable to understand lol");
|
||||||
@ -711,4 +719,24 @@ public class ExampleBaritoneControl implements Helper, AbstractGameEventListener
|
|||||||
}
|
}
|
||||||
return goal;
|
return goal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private double calculateDimensionFactor(String to) {
|
||||||
|
return Math.pow(8, ctx.world().provider.getDimensionType().getId() - getDimensionByName(to.toLowerCase()).getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
private DimensionType getDimensionByName(String name) {
|
||||||
|
if ("the_end".contains(name)) {
|
||||||
|
return DimensionType.THE_END;
|
||||||
|
}
|
||||||
|
if ("the_overworld".contains(name) || "surface".contains(name)) {
|
||||||
|
return DimensionType.OVERWORLD;
|
||||||
|
}
|
||||||
|
if ("the_nether".contains(name) || "hell".contains(name)) {
|
||||||
|
return DimensionType.NETHER;
|
||||||
|
}
|
||||||
|
return ctx.world().provider.getDimensionType();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user