aboutsummaryrefslogtreecommitdiff
path: root/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit
diff options
context:
space:
mode:
authorsyeyoung <cyoung06@naver.com>2022-05-21 21:18:14 +0900
committersyeyoung <cyoung06@naver.com>2022-05-21 21:28:52 +0900
commit20dd3f99a7b139b5848128246c622fd9cfefa478 (patch)
tree78e5f84ad22fd53876d488f6b58c3528aebe6501 /mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit
parent50de034c046c4ddea033b73793c8825ecb5bb86f (diff)
downloadSkyblock-Dungeons-Guide-20dd3f99a7b139b5848128246c622fd9cfefa478.tar.gz
Skyblock-Dungeons-Guide-20dd3f99a7b139b5848128246c622fd9cfefa478.tar.bz2
Skyblock-Dungeons-Guide-20dd3f99a7b139b5848128246c622fd9cfefa478.zip
- Project separation
Diffstat (limited to 'mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit')
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditBreakableWall.java144
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditDoor.java158
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditDummy.java121
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditFairySoul.java122
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditJournal.java122
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditLever.java137
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditNPC.java121
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditOnewayDoor.java144
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditOnewayLever.java137
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditPressurePlate.java136
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditSecret.java130
-rwxr-xr-xmod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditTomb.java122
12 files changed, 1594 insertions, 0 deletions
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditBreakableWall.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditBreakableWall.java
new file mode 100755
index 00000000..1ae2541a
--- /dev/null
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditBreakableWall.java
@@ -0,0 +1,144 @@
+/*
+ * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
+ * Copyright (C) 2021 cyoung06
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package kr.syeyoung.dungeonsguide.roomedit.mechanicedit;
+
+import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
+import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPointSet;
+import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonBreakableWall;
+import kr.syeyoung.dungeonsguide.gui.elements.*;
+import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
+import kr.syeyoung.dungeonsguide.gui.MPanel;
+import kr.syeyoung.dungeonsguide.roomedit.Parameter;
+import kr.syeyoung.dungeonsguide.gui.elements.*;
+import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEdit;
+import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditCreator;
+import kr.syeyoung.dungeonsguide.utils.TextUtils;
+import net.minecraft.init.Blocks;
+
+import java.awt.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Collections;
+
+public class ValueEditBreakableWall extends MPanel implements ValueEdit<DungeonBreakableWall> {
+ private Parameter parameter;
+
+ // scroll pane
+ // just create
+ // add set
+ private final DungeonBreakableWall dungeonBreakableWall;
+
+ private final MLabel label;
+ private final MValue<OffsetPointSet> value;
+ private final MTextField preRequisite;
+ private final MLabelAndElement preRequisite2;
+ private final MButton updateOnlyAir;
+
+ public ValueEditBreakableWall(final Parameter parameter2) {
+ this.parameter = parameter2;
+ this.dungeonBreakableWall = (DungeonBreakableWall) parameter2.getNewData();
+
+
+ label = new MLabel();
+ label.setText("Wall Points");
+ label.setAlignment(MLabel.Alignment.LEFT);
+ add(label);
+
+ value = new MValue(dungeonBreakableWall.getSecretPoint(), Collections.emptyList());
+ add(value);
+
+ updateOnlyAir = new MButton();
+ updateOnlyAir.setText("Update Air");
+ updateOnlyAir.setBackgroundColor(Color.green);
+ updateOnlyAir.setForeground(Color.black);
+ updateOnlyAir.setBounds(new Rectangle(0,40,getBounds().width, 20));
+ add(updateOnlyAir);
+ updateOnlyAir.setOnActionPerformed(new Runnable() {
+ @Override
+ public void run() {
+ OffsetPointSet ofs = dungeonBreakableWall.getSecretPoint();
+ List<OffsetPoint> filtered = new ArrayList<OffsetPoint>();
+ for (OffsetPoint offsetPoint : ofs.getOffsetPointList()) {
+ if (offsetPoint.getBlock(EditingContext.getEditingContext().getRoom()) != Blocks.air) continue;
+ filtered.add(offsetPoint);
+ }
+ dungeonBreakableWall.getSecretPoint().setOffsetPointList(filtered);
+ }
+ });
+
+ preRequisite = new MTextField() {
+ @Override
+ public void edit(String str) {
+ dungeonBreakableWall.setPreRequisite(Arrays.asList(str.split(",")));
+ }
+ };
+ preRequisite.setText(TextUtils.join(dungeonBreakableWall.getPreRequisite(), ","));
+ preRequisite2 = new MLabelAndElement("Req.",preRequisite);
+ preRequisite2.setBounds(new Rectangle(0,60,getBounds().width,20));
+ add(preRequisite2);
+ }
+
+ @Override
+ public void onBoundsUpdate() {
+ label.setBounds(new Rectangle(0,0,getBounds().width, 20));
+ value.setBounds(new Rectangle(0,20,getBounds().width, 20));
+ updateOnlyAir.setBounds(new Rectangle(0,40,getBounds().width, 20));
+ preRequisite2.setBounds(new Rectangle(0,60,getBounds().width,20));
+ }
+
+ @Override
+ public void setParameter(Parameter parameter) {
+ this.parameter = parameter;
+ }
+
+ @Override
+ public void renderWorld(float partialTicks) {
+ dungeonBreakableWall.highlight(new Color(0,255,255,50), parameter.getName(), EditingContext.getEditingContext().getRoom(), partialTicks);
+ }
+
+ @Override
+ public void resize(int parentWidth, int parentHeight) {
+ this.setBounds(new Rectangle(0,0,parentWidth, parentHeight));
+ }
+
+ public static class Generator implements ValueEditCreator<ValueEditBreakableWall> {
+
+ @Override
+ public ValueEditBreakableWall createValueEdit(Parameter parameter) {
+ return new ValueEditBreakableWall(parameter);
+ }
+
+ @Override
+ public Object createDefaultValue(Parameter parameter) {
+ return new DungeonBreakableWall();
+ }
+
+ @Override
+ public Object cloneObj(Object object) {
+ try {
+ return ((DungeonBreakableWall)object).clone();
+ } catch (CloneNotSupportedException e) {
+ e.printStackTrace();
+ }
+ assert false;
+ return null;
+ }
+ }
+}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditDoor.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditDoor.java
new file mode 100755
index 00000000..949e5c2e
--- /dev/null
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditDoor.java
@@ -0,0 +1,158 @@
+/*
+ * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
+ * Copyright (C) 2021 cyoung06
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package kr.syeyoung.dungeonsguide.roomedit.mechanicedit;
+
+import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
+import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPointSet;
+import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonDoor;
+import kr.syeyoung.dungeonsguide.gui.elements.*;
+import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
+import kr.syeyoung.dungeonsguide.gui.MPanel;
+import kr.syeyoung.dungeonsguide.roomedit.Parameter;
+import kr.syeyoung.dungeonsguide.gui.elements.*;
+import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEdit;
+import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditCreator;
+import kr.syeyoung.dungeonsguide.utils.TextUtils;
+import net.minecraft.init.Blocks;
+
+import java.awt.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+public class ValueEditDoor extends MPanel implements ValueEdit<DungeonDoor> {
+ private Parameter parameter;
+
+ // scroll pane
+ // just create
+ // add set
+ private final DungeonDoor dungeonDoor;
+
+ private final MLabel label;
+ private final MValue<OffsetPointSet> value;
+ private final MTextField preRequisite;
+ private final MLabelAndElement preRequisite_par;
+ private final MTextField preRequisite2;
+ private final MLabelAndElement preRequisite2_par;
+ private final MButton updateOnlyAir;
+
+ public ValueEditDoor(final Parameter parameter2) {
+ this.parameter = parameter2;
+ this.dungeonDoor = (DungeonDoor) parameter2.getNewData();
+
+
+ label = new MLabel();
+ label.setText("Wall Points");
+ label.setAlignment(MLabel.Alignment.LEFT);
+ add(label);
+
+ value = new MValue(dungeonDoor.getSecretPoint(), Collections.emptyList());
+ add(value);
+
+ updateOnlyAir = new MButton();
+ updateOnlyAir.setText("Update Air");
+ updateOnlyAir.setBackgroundColor(Color.green);
+ updateOnlyAir.setForeground(Color.black);
+ updateOnlyAir.setBounds(new Rectangle(0,40,getBounds().width, 20));
+ add(updateOnlyAir);
+ updateOnlyAir.setOnActionPerformed(new Runnable() {
+ @Override
+ public void run() {
+ OffsetPointSet ofs = dungeonDoor.getSecretPoint();
+ List<OffsetPoint> filtered = new ArrayList<OffsetPoint>();
+ for (OffsetPoint offsetPoint : ofs.getOffsetPointList()) {
+ if (offsetPoint.getBlock(EditingContext.getEditingContext().getRoom()) != Blocks.air) continue;
+ filtered.add(offsetPoint);
+ }
+ dungeonDoor.getSecretPoint().setOffsetPointList(filtered);
+ }
+ });
+
+ preRequisite = new MTextField() {
+ @Override
+ public void edit(String str) {
+ dungeonDoor.setOpenPreRequisite(Arrays.asList(str.split(",")));
+ }
+ };
+ preRequisite.setText(TextUtils.join(dungeonDoor.getOpenPreRequisite(), ","));
+ preRequisite_par = new MLabelAndElement("Open Req.",preRequisite);
+ preRequisite_par.setBounds(new Rectangle(0,60,getBounds().width,20));
+ add(preRequisite_par);
+
+ preRequisite2 = new MTextField() {
+ @Override
+ public void edit(String str) {
+ dungeonDoor.setClosePreRequisite(Arrays.asList(str.split(",")));
+ }
+ };
+ preRequisite2.setText(TextUtils.join(dungeonDoor.getClosePreRequisite(), ","));
+ preRequisite2_par = new MLabelAndElement("Close Req.",preRequisite2);
+ preRequisite2_par.setBounds(new Rectangle(0,80,getBounds().width,20));
+ add(preRequisite2_par);
+ }
+
+ @Override
+ public void onBoundsUpdate() {
+ label.setBounds(new Rectangle(0,0,getBounds().width, 20));
+ value.setBounds(new Rectangle(0,20,getBounds().width, 20));
+ updateOnlyAir.setBounds(new Rectangle(0,40,getBounds().width, 20));
+ preRequisite_par.setBounds(new Rectangle(0,60,getBounds().width,20));
+ preRequisite2_par.setBounds(new Rectangle(0,80,getBounds().width,20));
+ }
+
+ @Override
+ public void setParameter(Parameter parameter) {
+ this.parameter = parameter;
+ }
+
+ @Override
+ public void renderWorld(float partialTicks) {
+ dungeonDoor.highlight(new Color(0,255,255,50), parameter.getName(), EditingContext.getEditingContext().getRoom(), partialTicks);
+ }
+
+ @Override
+ public void resize(int parentWidth, int parentHeight) {
+ this.setBounds(new Rectangle(0,0,parentWidth, parentHeight));
+ }
+
+ public static class Generator implements ValueEditCreator<ValueEditDoor> {
+
+ @Override
+ public ValueEditDoor createValueEdit(Parameter parameter) {
+ return new ValueEditDoor(parameter);
+ }
+
+ @Override
+ public Object createDefaultValue(Parameter parameter) {
+ return new DungeonDoor();
+ }
+
+ @Override
+ public Object cloneObj(Object object) {
+ try {
+ return ((DungeonDoor)object).clone();
+ } catch (CloneNotSupportedException e) {
+ e.printStackTrace();
+ }
+ assert false;
+ return null;
+ }
+ }
+}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditDummy.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditDummy.java
new file mode 100755
index 00000000..c0cae9b8
--- /dev/null
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditDummy.java
@@ -0,0 +1,121 @@
+/*
+ * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
+ * Copyright (C) 2021 cyoung06
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package kr.syeyoung.dungeonsguide.roomedit.mechanicedit;
+
+import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
+import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonDummy;
+import kr.syeyoung.dungeonsguide.gui.MPanel;
+import kr.syeyoung.dungeonsguide.gui.elements.MLabel;
+import kr.syeyoung.dungeonsguide.gui.elements.MLabelAndElement;
+import kr.syeyoung.dungeonsguide.gui.elements.MTextField;
+import kr.syeyoung.dungeonsguide.gui.elements.MValue;
+import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
+import kr.syeyoung.dungeonsguide.roomedit.Parameter;
+import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEdit;
+import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditCreator;
+import kr.syeyoung.dungeonsguide.utils.TextUtils;
+
+import java.awt.*;
+import java.util.Arrays;
+import java.util.Collections;
+
+public class ValueEditDummy extends MPanel implements ValueEdit<DungeonDummy> {
+ private Parameter parameter;
+
+ // scroll pane
+ // just create
+ // add set
+ private final DungeonDummy dungeonSecret;
+
+ private final MLabel label;
+ private final MValue<OffsetPoint> value;
+ private final MTextField preRequisite;
+ private final MLabelAndElement preRequisite2;
+
+ public ValueEditDummy(final Parameter parameter2) {
+ this.parameter = parameter2;
+ this.dungeonSecret = (DungeonDummy) parameter2.getNewData();
+
+
+ label = new MLabel();
+ label.setText("Dummy Point");
+ label.setAlignment(MLabel.Alignment.LEFT);
+ add(label);
+
+ value = new MValue(dungeonSecret.getSecretPoint(), Collections.emptyList());
+ add(value);
+
+ preRequisite = new MTextField() {
+ @Override
+ public void edit(String str) {
+ dungeonSecret.setPreRequisite(Arrays.asList(str.split(",")));
+ }
+ };
+ preRequisite.setText(TextUtils.join(dungeonSecret.getPreRequisite(), ","));
+ preRequisite2 = new MLabelAndElement("Req.",preRequisite);
+ preRequisite2.setBounds(new Rectangle(0,40,getBounds().width,20));
+ add(preRequisite2);
+ }
+
+ @Override
+ public void onBoundsUpdate() {
+ label.setBounds(new Rectangle(0,0,getBounds().width, 20));
+ value.setBounds(new Rectangle(0,20,getBounds().width, 20));
+ preRequisite2.setBounds(new Rectangle(0,40,getBounds().width,20));
+ }
+
+ @Override
+ public void setParameter(Parameter parameter) {
+ this.parameter = parameter;
+ }
+
+ @Override
+ public void renderWorld(float partialTicks) {
+ dungeonSecret.highlight(new Color(0,255,0,50), parameter.getName(), EditingContext.getEditingContext().getRoom(), partialTicks);
+ }
+
+ @Override
+ public void resize(int parentWidth, int parentHeight) {
+ this.setBounds(new Rectangle(0,0,parentWidth, parentHeight));
+ }
+
+ public static class Generator implements ValueEditCreator<ValueEditDummy> {
+
+ @Override
+ public ValueEditDummy createValueEdit(Parameter parameter) {
+ return new ValueEditDummy(parameter);
+ }
+
+ @Override
+ public Object createDefaultValue(Parameter parameter) {
+ return new DungeonDummy();
+ }
+
+ @Override
+ public Object cloneObj(Object object) {
+ try {
+ return ((DungeonDummy)object).clone();
+ } catch (CloneNotSupportedException e) {
+ e.printStackTrace();
+ }
+ assert false;
+ return null;
+ }
+ }
+}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditFairySoul.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditFairySoul.java
new file mode 100755
index 00000000..8deb8d85
--- /dev/null
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditFairySoul.java
@@ -0,0 +1,122 @@
+/*
+ * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
+ * Copyright (C) 2021 cyoung06
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package kr.syeyoung.dungeonsguide.roomedit.mechanicedit;
+
+import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
+import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonFairySoul;
+import kr.syeyoung.dungeonsguide.gui.MPanel;
+import kr.syeyoung.dungeonsguide.gui.elements.MLabel;
+import kr.syeyoung.dungeonsguide.gui.elements.MLabelAndElement;
+import kr.syeyoung.dungeonsguide.gui.elements.MTextField;
+import kr.syeyoung.dungeonsguide.gui.elements.MValue;
+import kr.syeyoung.dungeonsguide.gui.elements.*;
+import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
+import kr.syeyoung.dungeonsguide.roomedit.Parameter;
+import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEdit;
+import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditCreator;
+import kr.syeyoung.dungeonsguide.utils.TextUtils;
+
+import java.awt.*;
+import java.util.Arrays;
+import java.util.Collections;
+
+public class ValueEditFairySoul extends MPanel implements ValueEdit<DungeonFairySoul> {
+ private Parameter parameter;
+
+ // scroll pane
+ // just create
+ // add set
+ private final DungeonFairySoul dungeonSecret;
+
+ private final MLabel label;
+ private final MValue<OffsetPoint> value;
+ private final MTextField preRequisite;
+ private final MLabelAndElement preRequisite2;
+
+ public ValueEditFairySoul(final Parameter parameter2) {
+ this.parameter = parameter2;
+ this.dungeonSecret = (DungeonFairySoul) parameter2.getNewData();
+
+
+ label = new MLabel();
+ label.setText("FairySoul Point");
+ label.setAlignment(MLabel.Alignment.LEFT);
+ add(label);
+
+ value = new MValue(dungeonSecret.getSecretPoint(), Collections.emptyList());
+ add(value);
+
+ preRequisite = new MTextField() {
+ @Override
+ public void edit(String str) {
+ dungeonSecret.setPreRequisite(Arrays.asList(str.split(",")));
+ }
+ };
+ preRequisite.setText(TextUtils.join(dungeonSecret.getPreRequisite(), ","));
+ preRequisite2 = new MLabelAndElement("Req.",preRequisite);
+ preRequisite2.setBounds(new Rectangle(0,40,getBounds().width,20));
+ add(preRequisite2);
+ }
+
+ @Override
+ public void onBoundsUpdate() {
+ label.setBounds(new Rectangle(0,0,getBounds().width, 20));
+ value.setBounds(new Rectangle(0,20,getBounds().width, 20));
+ preRequisite2.setBounds(new Rectangle(0,40,getBounds().width,20));
+ }
+
+ @Override
+ public void setParameter(Parameter parameter) {
+ this.parameter = parameter;
+ }
+
+ @Override
+ public void renderWorld(float partialTicks) {
+ dungeonSecret.highlight(new Color(0,255,0,50), parameter.getName(), EditingContext.getEditingContext().getRoom(), partialTicks);
+ }
+
+ @Override
+ public void resize(int parentWidth, int parentHeight) {
+ this.setBounds(new Rectangle(0,0,parentWidth, parentHeight));
+ }
+
+ public static class Generator implements ValueEditCreator<ValueEditFairySoul> {
+
+ @Override
+ public ValueEditFairySoul createValueEdit(Parameter parameter) {
+ return new ValueEditFairySoul(parameter);
+ }
+
+ @Override
+ public Object createDefaultValue(Parameter parameter) {
+ return new DungeonFairySoul();
+ }
+
+ @Override
+ public Object cloneObj(Object object) {
+ try {
+ return ((DungeonFairySoul)object).clone();
+ } catch (CloneNotSupportedException e) {
+ e.printStackTrace();
+ }
+ assert false;
+ return null;
+ }
+ }
+}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditJournal.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditJournal.java
new file mode 100755
index 00000000..aa82763a
--- /dev/null
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditJournal.java
@@ -0,0 +1,122 @@
+/*
+ * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
+ * Copyright (C) 2021 cyoung06
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package kr.syeyoung.dungeonsguide.roomedit.mechanicedit;
+
+import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
+import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonJournal;
+import kr.syeyoung.dungeonsguide.gui.MPanel;
+import kr.syeyoung.dungeonsguide.gui.elements.MLabel;
+import kr.syeyoung.dungeonsguide.gui.elements.MLabelAndElement;
+import kr.syeyoung.dungeonsguide.gui.elements.MTextField;
+import kr.syeyoung.dungeonsguide.gui.elements.MValue;
+import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
+import kr.syeyoung.dungeonsguide.roomedit.Parameter;
+import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEdit;
+import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditCreator;
+import kr.syeyoung.dungeonsguide.utils.TextUtils;
+
+import java.awt.*;
+import java.util.Arrays;
+import java.util.Collections;
+
+
+public class ValueEditJournal extends MPanel implements ValueEdit<DungeonJournal> {
+ private Parameter parameter;
+
+ // scroll pane
+ // just create
+ // add set
+ private final DungeonJournal dungeonSecret;
+
+ private final MLabel label;
+ private final MValue<OffsetPoint> value;
+ private final MTextField preRequisite;
+ private final MLabelAndElement preRequisite2;
+
+ public ValueEditJournal(final Parameter parameter2) {
+ this.parameter = parameter2;
+ this.dungeonSecret = (DungeonJournal) parameter2.getNewData();
+
+
+ label = new MLabel();
+ label.setText("Journal Point");
+ label.setAlignment(MLabel.Alignment.LEFT);
+ add(label);
+
+ value = new MValue(dungeonSecret.getSecretPoint(), Collections.emptyList());
+ add(value);
+
+ preRequisite = new MTextField() {
+ @Override
+ public void edit(String str) {
+ dungeonSecret.setPreRequisite(Arrays.asList(str.split(",")));
+ }
+ };
+ preRequisite.setText(TextUtils.join(dungeonSecret.getPreRequisite(), ","));
+ preRequisite2 = new MLabelAndElement("Req.",preRequisite);
+ preRequisite2.setBounds(new Rectangle(0,40,getBounds().width,20));
+ add(preRequisite2);
+ }
+
+ @Override
+ public void onBoundsUpdate() {
+ label.setBounds(new Rectangle(0,0,getBounds().width, 20));
+ value.setBounds(new Rectangle(0,20,getBounds().width, 20));
+ preRequisite2.setBounds(new Rectangle(0,40,getBounds().width,20));
+ }
+
+ @Override
+ public void setParameter(Parameter parameter) {
+ this.parameter = parameter;
+ }
+
+ @Override
+ public void renderWorld(float partialTicks) {
+ dungeonSecret.highlight(new Color(0,255,0,50), parameter.getName(), EditingContext.getEditingContext().getRoom(), partialTicks);
+ }
+
+ @Override
+ public void resize(int parentWidth, int parentHeight) {
+ this.setBounds(new Rectangle(0,0,parentWidth, parentHeight));
+ }
+
+ public static class Generator implements ValueEditCreator<ValueEditJournal> {
+
+ @Override
+ public ValueEditJournal createValueEdit(Parameter parameter) {
+ return new ValueEditJournal(parameter);
+ }
+
+ @Override
+ public Object createDefaultValue(Parameter parameter) {
+ return new DungeonJournal();
+ }
+
+ @Override
+ public Object cloneObj(Object object) {
+ try {
+ return ((DungeonJournal)object).clone();
+ } catch (CloneNotSupportedException e) {
+ e.printStackTrace();
+ }
+ assert false;
+ return null;
+ }
+ }
+}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditLever.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditLever.java
new file mode 100755
index 00000000..145209a5
--- /dev/null
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditLever.java
@@ -0,0 +1,137 @@
+/*
+ * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
+ * Copyright (C) 2021 cyoung06
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package kr.syeyoung.dungeonsguide.roomedit.mechanicedit;
+
+import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
+import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonLever;
+import kr.syeyoung.dungeonsguide.gui.elements.MLabel;
+import kr.syeyoung.dungeonsguide.gui.elements.MLabelAndElement;
+import kr.syeyoung.dungeonsguide.gui.elements.MTextField;
+import kr.syeyoung.dungeonsguide.gui.elements.MValue;
+import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
+import kr.syeyoung.dungeonsguide.gui.MPanel;
+import kr.syeyoung.dungeonsguide.roomedit.Parameter;
+import kr.syeyoung.dungeonsguide.gui.elements.*;
+import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEdit;
+import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditCreator;
+import kr.syeyoung.dungeonsguide.utils.TextUtils;
+
+import java.awt.*;
+import java.util.Arrays;
+import java.util.Collections;
+
+public class ValueEditLever extends MPanel implements ValueEdit<DungeonLever> {
+ private Parameter parameter;
+
+ // scroll pane
+ // just create
+ // add set
+ private final DungeonLever dungeonLever;
+
+ private final MLabel label;
+ private final MValue<OffsetPoint> value;
+ private final MTextField preRequisite;
+ private final MLabelAndElement preRequisite2;
+ private final MTextField target;
+ private final MLabelAndElement target2;
+
+ public ValueEditLever(final Parameter parameter2) {
+ this.parameter = parameter2;
+ this.dungeonLever = (DungeonLever) parameter2.getNewData();
+
+
+ label = new MLabel();
+ label.setText("Secret Point");
+ label.setAlignment(MLabel.Alignment.LEFT);
+ add(label);
+
+ value = new MValue(dungeonLever.getLeverPoint(), Collections.emptyList());
+ add(value);
+
+ preRequisite = new MTextField() {
+ @Override
+ public void edit(String str) {
+ dungeonLever.setPreRequisite(Arrays.asList(str.split(",")));
+ }
+ };
+ preRequisite.setText(TextUtils.join(dungeonLever.getPreRequisite(), ","));
+ preRequisite2 = new MLabelAndElement("Req.",preRequisite);
+ preRequisite2.setBounds(new Rectangle(0,40,getBounds().width,20));
+ add(preRequisite2);
+
+
+ target = new MTextField() {
+ @Override
+ public void edit(String str) {
+ dungeonLever.setTriggering(str);
+ }
+ };
+ target.setText(dungeonLever.getTriggering());
+ target2 = new MLabelAndElement("Target",target);
+ target2.setBounds(new Rectangle(0,60,getBounds().width,20));
+ add(target2);
+ }
+
+ @Override
+ public void onBoundsUpdate() {
+ label.setBounds(new Rectangle(0,0,getBounds().width, 20));
+ value.setBounds(new Rectangle(0,20,getBounds().width, 20));
+ preRequisite2.setBounds(new Rectangle(0,40,getBounds().width,20));
+ target2.setBounds(new Rectangle(0,60,getBounds().width,20));
+ }
+
+ @Override
+ public void setParameter(Parameter parameter) {
+ this.parameter = parameter;
+ }
+
+ @Override
+ public void renderWorld(float partialTicks) {
+ dungeonLever.highlight(new Color(0,255,0,50), parameter.getName(), EditingContext.getEditingContext().getRoom(), partialTicks);
+ }
+
+ @Override
+ public void resize(int parentWidth, int parentHeight) {
+ this.setBounds(new Rectangle(0,0,parentWidth, parentHeight));
+ }
+
+ public static class Generator implements ValueEditCreator<ValueEditLever> {
+
+ @Override
+ public ValueEditLever createValueEdit(Parameter parameter) {
+ return new ValueEditLever(parameter);
+ }
+
+ @Override
+ public Object createDefaultValue(Parameter parameter) {
+ return new DungeonLever();
+ }
+
+ @Override
+ public Object cloneObj(Object object) {
+ try {
+ return ((DungeonLever)object).clone();
+ } catch (CloneNotSupportedException e) {
+ e.printStackTrace();
+ }
+ assert false;
+ return null;
+ }
+ }
+}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditNPC.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditNPC.java
new file mode 100755
index 00000000..83c9e69c
--- /dev/null
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditNPC.java
@@ -0,0 +1,121 @@
+/*
+ * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
+ * Copyright (C) 2021 cyoung06
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package kr.syeyoung.dungeonsguide.roomedit.mechanicedit;
+
+import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
+import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonNPC;
+import kr.syeyoung.dungeonsguide.gui.MPanel;
+import kr.syeyoung.dungeonsguide.gui.elements.MLabel;
+import kr.syeyoung.dungeonsguide.gui.elements.MLabelAndElement;
+import kr.syeyoung.dungeonsguide.gui.elements.MTextField;
+import kr.syeyoung.dungeonsguide.gui.elements.MValue;
+import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
+import kr.syeyoung.dungeonsguide.roomedit.Parameter;
+import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEdit;
+import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditCreator;
+import kr.syeyoung.dungeonsguide.utils.TextUtils;
+
+import java.awt.*;
+import java.util.Arrays;
+import java.util.Collections;
+
+public class ValueEditNPC extends MPanel implements ValueEdit<DungeonNPC> {
+ private Parameter parameter;
+
+ // scroll pane
+ // just create
+ // add set
+ private final DungeonNPC dungeonSecret;
+
+ private final MLabel label;
+ private final MValue<OffsetPoint> value;
+ private final MTextField preRequisite;
+ private final MLabelAndElement preRequisite2;
+
+ public ValueEditNPC(final Parameter parameter2) {
+ this.parameter = parameter2;
+ this.dungeonSecret = (DungeonNPC) parameter2.getNewData();
+
+
+ label = new MLabel();
+ label.setText("NPC Point");
+ label.setAlignment(MLabel.Alignment.LEFT);
+ add(label);
+
+ value = new MValue(dungeonSecret.getSecretPoint(), Collections.emptyList());
+ add(value);
+
+ preRequisite = new MTextField() {
+ @Override
+ public void edit(String str) {
+ dungeonSecret.setPreRequisite(Arrays.asList(str.split(",")));
+ }
+ };
+ preRequisite.setText(TextUtils.join(dungeonSecret.getPreRequisite(), ","));
+ preRequisite2 = new MLabelAndElement("Req.",preRequisite);
+ preRequisite2.setBounds(new Rectangle(0,40,getBounds().width,20));
+ add(preRequisite2);
+ }
+
+ @Override
+ public void onBoundsUpdate() {
+ label.setBounds(new Rectangle(0,0,getBounds().width, 20));
+ value.setBounds(new Rectangle(0,20,getBounds().width, 20));
+ preRequisite2.setBounds(new Rectangle(0,40,getBounds().width,20));
+ }
+
+ @Override
+ public void setParameter(Parameter parameter) {
+ this.parameter = parameter;
+ }
+
+ @Override
+ public void renderWorld(float partialTicks) {
+ dungeonSecret.highlight(new Color(0,255,0,50), parameter.getName(), EditingContext.getEditingContext().getRoom(), partialTicks);
+ }
+
+ @Override
+ public void resize(int parentWidth, int parentHeight) {
+ this.setBounds(new Rectangle(0,0,parentWidth, parentHeight));
+ }
+
+ public static class Generator implements ValueEditCreator<ValueEditNPC> {
+
+ @Override
+ public ValueEditNPC createValueEdit(Parameter parameter) {
+ return new ValueEditNPC(parameter);
+ }
+
+ @Override
+ public Object createDefaultValue(Parameter parameter) {
+ return new DungeonNPC();
+ }
+
+ @Override
+ public Object cloneObj(Object object) {
+ try {
+ return ((DungeonNPC)object).clone();
+ } catch (CloneNotSupportedException e) {
+ e.printStackTrace();
+ }
+ assert false;
+ return null;
+ }
+ }
+}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditOnewayDoor.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditOnewayDoor.java
new file mode 100755
index 00000000..cd9a8427
--- /dev/null
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditOnewayDoor.java
@@ -0,0 +1,144 @@
+/*
+ * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
+ * Copyright (C) 2021 cyoung06
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package kr.syeyoung.dungeonsguide.roomedit.mechanicedit;
+
+import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
+import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPointSet;
+import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonOnewayDoor;
+import kr.syeyoung.dungeonsguide.gui.elements.*;
+import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
+import kr.syeyoung.dungeonsguide.gui.MPanel;
+import kr.syeyoung.dungeonsguide.roomedit.Parameter;
+import kr.syeyoung.dungeonsguide.gui.elements.*;
+import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEdit;
+import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditCreator;
+import kr.syeyoung.dungeonsguide.utils.TextUtils;
+import net.minecraft.init.Blocks;
+
+import java.awt.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+public class ValueEditOnewayDoor extends MPanel implements ValueEdit<DungeonOnewayDoor> {
+ private Parameter parameter;
+
+ // scroll pane
+ // just create
+ // add set
+ private final DungeonOnewayDoor dungeonDoor;
+
+ private final MLabel label;
+ private final MValue<OffsetPointSet> value;
+ private final MTextField preRequisite;
+ private final MLabelAndElement preRequisite2;
+ private final MButton updateOnlyAir;
+
+ public ValueEditOnewayDoor(final Parameter parameter2) {
+ this.parameter = parameter2;
+ this.dungeonDoor = (DungeonOnewayDoor) parameter2.getNewData();
+
+
+ label = new MLabel();
+ label.setText("Wall Points");
+ label.setAlignment(MLabel.Alignment.LEFT);
+ add(label);
+
+ value = new MValue(dungeonDoor.getSecretPoint(), Collections.emptyList());
+ add(value);
+
+ updateOnlyAir = new MButton();
+ updateOnlyAir.setText("Update Air");
+ updateOnlyAir.setBackgroundColor(Color.green);
+ updateOnlyAir.setForeground(Color.black);
+ updateOnlyAir.setBounds(new Rectangle(0,40,getBounds().width, 20));
+ add(updateOnlyAir);
+ updateOnlyAir.setOnActionPerformed(new Runnable() {
+ @Override
+ public void run() {
+ OffsetPointSet ofs = dungeonDoor.getSecretPoint();
+ List<OffsetPoint> filtered = new ArrayList<OffsetPoint>();
+ for (OffsetPoint offsetPoint : ofs.getOffsetPointList()) {
+ if (offsetPoint.getBlock(EditingContext.getEditingContext().getRoom()) != Blocks.air) continue;
+ filtered.add(offsetPoint);
+ }
+ dungeonDoor.getSecretPoint().setOffsetPointList(filtered);
+ }
+ });
+
+ preRequisite = new MTextField() {
+ @Override
+ public void edit(String str) {
+ dungeonDoor.setPreRequisite(Arrays.asList(str.split(",")));
+ }
+ };
+ preRequisite.setText(TextUtils.join(dungeonDoor.getPreRequisite(), ","));
+ preRequisite2 = new MLabelAndElement("Req.",preRequisite);
+ preRequisite2.setBounds(new Rectangle(0,60,getBounds().width,20));
+ add(preRequisite2);
+ }
+
+ @Override
+ public void onBoundsUpdate() {
+ label.setBounds(new Rectangle(0,0,getBounds().width, 20));
+ value.setBounds(new Rectangle(0,20,getBounds().width, 20));
+ updateOnlyAir.setBounds(new Rectangle(0,40,getBounds().width, 20));
+ preRequisite2.setBounds(new Rectangle(0,60,getBounds().width,20));
+ }
+
+ @Override
+ public void setParameter(Parameter parameter) {
+ this.parameter = parameter;
+ }
+
+ @Override
+ public void renderWorld(float partialTicks) {
+ dungeonDoor.highlight(new Color(0,255,255,50), parameter.getName(), EditingContext.getEditingContext().getRoom(), partialTicks);
+ }
+
+ @Override
+ public void resize(int parentWidth, int parentHeight) {
+ this.setBounds(new Rectangle(0,0,parentWidth, parentHeight));
+ }
+
+ public static class Generator implements ValueEditCreator<ValueEditOnewayDoor> {
+
+ @Override
+ public ValueEditOnewayDoor createValueEdit(Parameter parameter) {
+ return new ValueEditOnewayDoor(parameter);
+ }
+
+ @Override
+ public Object createDefaultValue(Parameter parameter) {
+ return new DungeonOnewayDoor();
+ }
+
+ @Override
+ public Object cloneObj(Object object) {
+ try {
+ return ((DungeonOnewayDoor)object).clone();
+ } catch (CloneNotSupportedException e) {
+ e.printStackTrace();
+ }
+ assert false;
+ return null;
+ }
+ }
+}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditOnewayLever.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditOnewayLever.java
new file mode 100755
index 00000000..1c1588de
--- /dev/null
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditOnewayLever.java
@@ -0,0 +1,137 @@
+/*
+ * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
+ * Copyright (C) 2021 cyoung06
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package kr.syeyoung.dungeonsguide.roomedit.mechanicedit;
+
+import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
+import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonOnewayLever;
+import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
+import kr.syeyoung.dungeonsguide.gui.MPanel;
+import kr.syeyoung.dungeonsguide.roomedit.Parameter;
+import kr.syeyoung.dungeonsguide.gui.elements.MLabel;
+import kr.syeyoung.dungeonsguide.gui.elements.MLabelAndElement;
+import kr.syeyoung.dungeonsguide.gui.elements.MTextField;
+import kr.syeyoung.dungeonsguide.gui.elements.MValue;
+import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEdit;
+import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditCreator;
+import kr.syeyoung.dungeonsguide.utils.TextUtils;
+
+import java.awt.*;
+import java.util.Arrays;
+import java.util.Collections;
+
+public class ValueEditOnewayLever extends MPanel implements ValueEdit<DungeonOnewayLever> {
+ private Parameter parameter;
+
+ // scroll pane
+ // just create
+ // add set
+ private final DungeonOnewayLever dungeonLever;
+
+ private final MLabel label;
+ private final MValue<OffsetPoint> value;
+ private final MTextField preRequisite;
+ private final MLabelAndElement preRequisite2;
+ private final MTextField target;
+ private final MLabelAndElement target2;
+
+
+ public ValueEditOnewayLever(final Parameter parameter2) {
+ this.parameter = parameter2;
+ this.dungeonLever = (DungeonOnewayLever) parameter2.getNewData();
+
+
+ label = new MLabel();
+ label.setText("Secret Point");
+ label.setAlignment(MLabel.Alignment.LEFT);
+ add(label);
+
+ value = new MValue(dungeonLever.getLeverPoint(), Collections.emptyList());
+ add(value);
+
+ preRequisite = new MTextField() {
+ @Override
+ public void edit(String str) {
+ dungeonLever.setPreRequisite(Arrays.asList(str.split(",")));
+ }
+ };
+ preRequisite.setText(TextUtils.join(dungeonLever.getPreRequisite(), ","));
+ preRequisite2 = new MLabelAndElement("Req.",preRequisite);
+ preRequisite2.setBounds(new Rectangle(0,40,getBounds().width,20));
+ add(preRequisite2);
+
+
+ target = new MTextField() {
+ @Override
+ public void edit(String str) {
+ dungeonLever.setTriggering(str);
+ }
+ };
+ target.setText(dungeonLever.getTriggering());
+ target2 = new MLabelAndElement("Target",target);
+ target2.setBounds(new Rectangle(0,60,getBounds().width,20));
+ add(target2);
+ }
+
+ @Override
+ public void onBoundsUpdate() {
+ label.setBounds(new Rectangle(0,0,getBounds().width, 20));
+ value.setBounds(new Rectangle(0,20,getBounds().width, 20));
+ preRequisite2.setBounds(new Rectangle(0,40,getBounds().width,20));
+ target2.setBounds(new Rectangle(0,60,getBounds().width,20));
+ }
+
+ @Override
+ public void setParameter(Parameter parameter) {
+ this.parameter = parameter;
+ }
+
+ @Override
+ public void renderWorld(float partialTicks) {
+ dungeonLever.highlight(new Color(0,255,0,50), parameter.getName(), EditingContext.getEditingContext().getRoom(), partialTicks);
+ }
+
+ @Override
+ public void resize(int parentWidth, int parentHeight) {
+ this.setBounds(new Rectangle(0,0,parentWidth, parentHeight));
+ }
+
+ public static class Generator implements ValueEditCreator<ValueEditOnewayLever> {
+
+ @Override
+ public ValueEditOnewayLever createValueEdit(Parameter parameter) {
+ return new ValueEditOnewayLever(parameter);
+ }
+
+ @Override
+ public Object createDefaultValue(Parameter parameter) {
+ return new DungeonOnewayLever();
+ }
+
+ @Override
+ public Object cloneObj(Object object) {
+ try {
+ return ((DungeonOnewayLever)object).clone();
+ } catch (CloneNotSupportedException e) {
+ e.printStackTrace();
+ }
+ assert false;
+ return null;
+ }
+ }
+}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditPressurePlate.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditPressurePlate.java
new file mode 100755
index 00000000..ffab9440
--- /dev/null
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditPressurePlate.java
@@ -0,0 +1,136 @@
+/*
+ * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
+ * Copyright (C) 2021 cyoung06
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package kr.syeyoung.dungeonsguide.roomedit.mechanicedit;
+
+import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
+import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonPressurePlate;
+import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
+import kr.syeyoung.dungeonsguide.gui.MPanel;
+import kr.syeyoung.dungeonsguide.roomedit.Parameter;
+import kr.syeyoung.dungeonsguide.gui.elements.MLabel;
+import kr.syeyoung.dungeonsguide.gui.elements.MLabelAndElement;
+import kr.syeyoung.dungeonsguide.gui.elements.MTextField;
+import kr.syeyoung.dungeonsguide.gui.elements.MValue;
+import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEdit;
+import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditCreator;
+import kr.syeyoung.dungeonsguide.utils.TextUtils;
+import java.awt.*;
+import java.util.Arrays;
+import java.util.Collections;
+
+public class ValueEditPressurePlate extends MPanel implements ValueEdit<DungeonPressurePlate> {
+ private Parameter parameter;
+
+ // scroll pane
+ // just create
+ // add set
+ private final DungeonPressurePlate dungeonPressureplate;
+
+ private final MLabel label;
+ private final MValue<OffsetPoint> value;
+ private final MTextField preRequisite;
+ private final MLabelAndElement preRequisite2;
+ private final MTextField target;
+ private final MLabelAndElement target2;
+
+
+ public ValueEditPressurePlate(final Parameter parameter2) {
+ this.parameter = parameter2;
+ this.dungeonPressureplate = (DungeonPressurePlate) parameter2.getNewData();
+
+
+ label = new MLabel();
+ label.setText("Secret Point");
+ label.setAlignment(MLabel.Alignment.LEFT);
+ add(label);
+
+ value = new MValue(dungeonPressureplate.getPlatePoint(), Collections.emptyList());
+ add(value);
+
+ preRequisite = new MTextField() {
+ @Override
+ public void edit(String str) {
+ dungeonPressureplate.setPreRequisite(Arrays.asList(str.split(",")));
+ }
+ };
+ preRequisite.setText(TextUtils.join(dungeonPressureplate.getPreRequisite(), ","));
+ preRequisite2 = new MLabelAndElement("Req.",preRequisite);
+ preRequisite2.setBounds(new Rectangle(0,40,getBounds().width,20));
+ add(preRequisite2);
+
+
+ target = new MTextField() {
+ @Override
+ public void edit(String str) {
+ dungeonPressureplate.setTriggering(str);
+ }
+ };
+ target.setText(dungeonPressureplate.getTriggering());
+ target2 = new MLabelAndElement("Target",target);
+ target2.setBounds(new Rectangle(0,60,getBounds().width,20));
+ add(target2);
+ }
+
+ @Override
+ public void onBoundsUpdate() {
+ label.setBounds(new Rectangle(0,0,getBounds().width, 20));
+ value.setBounds(new Rectangle(0,20,getBounds().width, 20));
+ preRequisite2.setBounds(new Rectangle(0,40,getBounds().width,20));
+ target2.setBounds(new Rectangle(0,60,getBounds().width,20));
+ }
+
+ @Override
+ public void setParameter(Parameter parameter) {
+ this.parameter = parameter;
+ }
+
+ @Override
+ public void renderWorld(float partialTicks) {
+ dungeonPressureplate.highlight(new Color(0,255,0,50), parameter.getName(), EditingContext.getEditingContext().getRoom(), partialTicks);
+ }
+
+ @Override
+ public void resize(int parentWidth, int parentHeight) {
+ this.setBounds(new Rectangle(0,0,parentWidth, parentHeight));
+ }
+
+ public static class Generator implements ValueEditCreator<ValueEditPressurePlate> {
+
+ @Override
+ public ValueEditPressurePlate createValueEdit(Parameter parameter) {
+ return new ValueEditPressurePlate(parameter);
+ }
+
+ @Override
+ public Object createDefaultValue(Parameter parameter) {
+ return new DungeonPressurePlate();
+ }
+
+ @Override
+ public Object cloneObj(Object object) {
+ try {
+ return ((DungeonPressurePlate)object).clone();
+ } catch (CloneNotSupportedException e) {
+ e.printStackTrace();
+ }
+ assert false;
+ return null;
+ }
+ }
+}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditSecret.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditSecret.java
new file mode 100755
index 00000000..aed8e10a
--- /dev/null
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditSecret.java
@@ -0,0 +1,130 @@
+/*
+ * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
+ * Copyright (C) 2021 cyoung06
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package kr.syeyoung.dungeonsguide.roomedit.mechanicedit;
+
+import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
+import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonSecret;
+import kr.syeyoung.dungeonsguide.gui.elements.*;
+import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
+import kr.syeyoung.dungeonsguide.gui.MPanel;
+import kr.syeyoung.dungeonsguide.roomedit.Parameter;
+import kr.syeyoung.dungeonsguide.gui.elements.*;
+import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEdit;
+import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditCreator;
+import kr.syeyoung.dungeonsguide.utils.TextUtils;
+
+import java.awt.*;
+import java.util.Arrays;
+import java.util.Collections;
+
+public class ValueEditSecret extends MPanel implements ValueEdit<DungeonSecret> {
+ private Parameter parameter;
+
+ // scroll pane
+ // just create
+ // add set
+ private final DungeonSecret dungeonSecret;
+
+ private final MLabel label;
+ private final MValue<OffsetPoint> value;
+ private final MStringSelectionButton selectionButton;
+ private final MTextField preRequisite;
+ private final MLabelAndElement preRequisite2;
+
+ public ValueEditSecret(final Parameter parameter2) {
+ this.parameter = parameter2;
+ this.dungeonSecret = (DungeonSecret) parameter2.getNewData();
+
+
+ label = new MLabel();
+ label.setText("Secret Point");
+ label.setAlignment(MLabel.Alignment.LEFT);
+ add(label);
+
+ value = new MValue(dungeonSecret.getSecretPoint(), Collections.emptyList());
+ add(value);
+
+ selectionButton = new MStringSelectionButton(Arrays.asList("CHEST", "BAT", "ITEM_DROP", "ESSENCE"), dungeonSecret.getSecretType().name());
+ selectionButton.setOnUpdate(new Runnable() {
+ @Override
+ public void run() {
+ dungeonSecret.setSecretType(DungeonSecret.SecretType.valueOf(selectionButton.getSelected()));
+ }
+ });
+ add(selectionButton);
+
+ preRequisite = new MTextField() {
+ @Override
+ public void edit(String str) {
+ dungeonSecret.setPreRequisite(Arrays.asList(str.split(",")));
+ }
+ };
+ preRequisite.setText(TextUtils.join(dungeonSecret.getPreRequisite(), ","));
+ preRequisite2 = new MLabelAndElement("Req.",preRequisite);
+ preRequisite2.setBounds(new Rectangle(0,60,getBounds().width,20));
+ add(preRequisite2);
+ }
+
+ @Override
+ public void onBoundsUpdate() {
+ label.setBounds(new Rectangle(0,0,getBounds().width, 20));
+ value.setBounds(new Rectangle(0,20,getBounds().width, 20));
+ selectionButton.setBounds(new Rectangle(0,40,getBounds().width, 20));
+ preRequisite2.setBounds(new Rectangle(0,60,getBounds().width,20));
+ }
+
+ @Override
+ public void setParameter(Parameter parameter) {
+ this.parameter = parameter;
+ }
+
+ @Override
+ public void renderWorld(float partialTicks) {
+ dungeonSecret.highlight(new Color(0,255,0,50), parameter.getName(), EditingContext.getEditingContext().getRoom(), partialTicks);
+ }
+
+ @Override
+ public void resize(int parentWidth, int parentHeight) {
+ this.setBounds(new Rectangle(0,0,parentWidth, parentHeight));
+ }
+
+ public static class Generator implements ValueEditCreator<ValueEditSecret> {
+
+ @Override
+ public ValueEditSecret createValueEdit(Parameter parameter) {
+ return new ValueEditSecret(parameter);
+ }
+
+ @Override
+ public Object createDefaultValue(Parameter parameter) {
+ return new DungeonSecret();
+ }
+
+ @Override
+ public Object cloneObj(Object object) {
+ try {
+ return ((DungeonSecret)object).clone();
+ } catch (CloneNotSupportedException e) {
+ e.printStackTrace();
+ }
+ assert false;
+ return null;
+ }
+ }
+}
diff --git a/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditTomb.java b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditTomb.java
new file mode 100755
index 00000000..291883b0
--- /dev/null
+++ b/mod/src/main/java/kr/syeyoung/dungeonsguide/roomedit/mechanicedit/ValueEditTomb.java
@@ -0,0 +1,122 @@
+/*
+ * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
+ * Copyright (C) 2021 cyoung06
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package kr.syeyoung.dungeonsguide.roomedit.mechanicedit;
+
+import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPointSet;
+import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonTomb;
+import kr.syeyoung.dungeonsguide.gui.elements.MLabel;
+import kr.syeyoung.dungeonsguide.gui.elements.MLabelAndElement;
+import kr.syeyoung.dungeonsguide.gui.elements.MTextField;
+import kr.syeyoung.dungeonsguide.gui.elements.MValue;
+import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
+import kr.syeyoung.dungeonsguide.gui.MPanel;
+import kr.syeyoung.dungeonsguide.roomedit.Parameter;
+import kr.syeyoung.dungeonsguide.gui.elements.*;
+import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEdit;
+import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditCreator;
+import kr.syeyoung.dungeonsguide.utils.TextUtils;
+
+import java.awt.*;
+import java.util.Arrays;
+import java.util.Collections;
+
+public class ValueEditTomb extends MPanel implements ValueEdit<DungeonTomb> {
+ private Parameter parameter;
+
+ // scroll pane
+ // just create
+ // add set
+ private final DungeonTomb dungeonTomb;
+
+ private final MLabel label;
+ private final MValue<OffsetPointSet> value;
+ private final MTextField preRequisite;
+ private final MLabelAndElement preRequisite2;
+
+ public ValueEditTomb(final Parameter parameter2) {
+ this.parameter = parameter2;
+ this.dungeonTomb = (DungeonTomb) parameter2.getNewData();
+
+
+ label = new MLabel();
+ label.setText("Tomb Points");
+ label.setAlignment(MLabel.Alignment.LEFT);
+ add(label);
+
+ value = new MValue(dungeonTomb.getSecretPoint(), Collections.emptyList());
+ add(value);
+
+ preRequisite = new MTextField() {
+ @Override
+ public void edit(String str) {
+ dungeonTomb.setPreRequisite(Arrays.asList(str.split(",")));
+ }
+ };
+ preRequisite.setText(TextUtils.join(dungeonTomb.getPreRequisite(), ","));
+ preRequisite2 = new MLabelAndElement("Req.",preRequisite);
+ preRequisite2.setBounds(new Rectangle(0,40,getBounds().width,20));
+ add(preRequisite2);
+ }
+
+ @Override
+ public void onBoundsUpdate() {
+ label.setBounds(new Rectangle(0,0,getBounds().width, 20));
+ value.setBounds(new Rectangle(0,20,getBounds().width, 20));
+ preRequisite2.setBounds(new Rectangle(0,40,getBounds().width,20));
+ }
+
+ @Override
+ public void setParameter(Parameter parameter) {
+ this.parameter = parameter;
+ }
+
+ @Override
+ public void renderWorld(float partialTicks) {
+ dungeonTomb.highlight(new Color(0,255,255,50), parameter.getName(), EditingContext.getEditingContext().getRoom(), partialTicks);
+ }
+
+ @Override
+ public void resize(int parentWidth, int parentHeight) {
+ this.setBounds(new Rectangle(0,0,parentWidth, parentHeight));
+ }
+
+ public static class Generator implements ValueEditCreator<ValueEditTomb> {
+
+ @Override
+ public ValueEditTomb createValueEdit(Parameter parameter) {
+ return new ValueEditTomb(parameter);
+ }
+
+ @Override
+ public Object createDefaultValue(Parameter parameter) {
+ return new DungeonTomb();
+ }
+
+ @Override
+ public Object cloneObj(Object object) {
+ try {
+ return ((DungeonTomb)object).clone();
+ } catch (CloneNotSupportedException e) {
+ e.printStackTrace();
+ }
+ assert false;
+ return null;
+ }
+ }
+}