HTTPS
https://git.nageyqma.icu/nageyqma/blade-addons-next.git
SSH
git@git.nageyqma.icu:nageyqma/blade-addons-next.git
HTTPS 链接可直接 git clone;推送代码请使用 SSH。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
package blade.addon.features.dungeon.f7.location;
import blade.addon.utils.Location;
import blade.addon.utils.config.values.Floor7;
import blade.addon.utils.debug.Debug;
import blade.addon.utils.dungeon.Phase;
import blade.addon.utils.events.Events;
import blade.addon.utils.rendering.RenderingEvents;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.fabricmc.fabric.api.client.rendering.v1.level.LevelRenderContext;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.gizmos.GizmoStyle;
import net.minecraft.gizmos.Gizmos;
import net.minecraft.util.ARGB;
import net.minecraft.world.phys.AABB;
import java.util.ArrayList;
public class PositionMessages {
static final ArrayList<PositionMessage> positionMessages = new ArrayList<>();
static PositionMessage SS = new PositionMessage("At SS!", new String[]{"ss"}, new AABB(107, 120, 93, 110, 121, 95), new int[]{0, 1});
static PositionMessage EE2 = new PositionMessage("At EE2!", new String[]{"ee2", "early enter 2"}, new AABB(57, 109, 130, 59, 110, 132), new int[]{1, 2});
static PositionMessage HEE2 = new PositionMessage("At High EE2!", new String[]{"high ee2", "highee2", "hee2"}, new AABB(59, 132, 138, 62, 133, 140), new int[]{1, 2});
static PositionMessage EE3 = new PositionMessage("At EE3!", new String[]{"ee3", "early enter 3", "early entry 3"}, new AABB(1, 109, 103, 3, 110, 106), new int[]{2, 3});
static PositionMessage CORE = new PositionMessage("At Core!", new String[]{"core"}, new AABB(53, 115, 51, 56, 116, 54), new int[]{2, 3, 4});
static PositionMessage TUNNEL = new PositionMessage("Inside Goldor Tunnel!", new String[]{"tunnel"}, new AABB(52, 114, 55, 57, 116, 58), new int[]{4, 5});
static PositionMessage SAFE_2 = new PositionMessage("At 2 Safespot!", new String[]{"2 safespot", "ee2 safespot", "safespot ee2", "s2 safespot", "safespot s2"}, new AABB(46, 109, 121.987, 49, 110, 121.988), new int[]{1, 2});
static PositionMessage SAFE_3 = new PositionMessage("At 3 Safespot!", new String[]{"3 safespot", "ee3 safespot", "freaky ee3", "freak ee", "safespot s3", "safespot 3"}, new AABB(18, 121, 91, 19, 126, 99), new int[]{2, 3});
static PositionMessage SPLIT_2 = new PositionMessage("At Split ee2!", new String[]{"split ee2", "splitee2", "mage term"}, new AABB(58, 119, 124, 60, 123, 126), new int[]{1, 2});
static PositionMessage SAFE_2_HIGH = new PositionMessage("At High 2 Safespot!", new String[]{"2 safespot"}, new AABB(70, 127, 143.7, 57, 133, 146.7), new int[]{1, 2});
public static void init() {
ClientTickEvents.END_CLIENT_TICK.register(PositionMessages::tick);
RenderingEvents.LINE.register(PositionMessages::render);
Events.ON_LOCATION_CHANGE.register(newLocation -> {
disableAll();
return false;
});
Events.ON_PHASE_CHANGE.register(() -> {
if (Phase.inP2()) {
SS.setSent(false);
} else if (Phase.inTerminals()) {
EE2.setSent(false);
HEE2.setSent(false);
EE3.setSent(false);
CORE.setSent(false);
TUNNEL.setSent(false);
SAFE_2.setSent(false);
SAFE_3.setSent(false);
SPLIT_2.setSent(false);
SAFE_2_HIGH.setSent(false);
} else if (Phase.inGoldorTunnel()) {
EE2.setSent(true);
HEE2.setSent(true);
EE3.setSent(true);
CORE.setSent(true);
TUNNEL.setSent(true);
SAFE_2.setSent(true);
SAFE_3.setSent(true);
SPLIT_2.setSent(true);
SAFE_2_HIGH.setSent(true);
}
return false;
});
}
public static void tick(Minecraft client) {
if (!Location.inDungeon() || !Floor7.enablePositionalMessages) return;
LocalPlayer player = client.player;
if (player == null) return;
for (PositionMessage message : positionMessages) {
message.tick(player);
}
}
public static boolean hasBeenSent(String message) {
String lowered = message.toLowerCase();
for (PositionMessage positionMessage : positionMessages) {
if (positionMessage.hasBeenSent(lowered)) {
return true;
}
}
return false;
}
public static void disableAll() {
for (PositionMessage positionMessage : positionMessages) {
positionMessage.setSent(true);
}
}
private static void render(LevelRenderContext context, PoseStack matrixStack, VertexConsumer consumer) {
if (!Location.inDungeon() || !Debug.renderPositions) return;
for (PositionMessage positionMessage : positionMessages) {
AABB box = positionMessage.getBox();
if (positionMessage.sent()) {
Gizmos.cuboid(box, GizmoStyle.stroke(ARGB.colorFromFloat(1.0f, 0, 1, 0)));
} else {
Gizmos.cuboid(box, GizmoStyle.stroke(ARGB.colorFromFloat(1.0f, 1, 0, 0)));
}
}
}
}