forked from SteamWar/SteamWar
Merge pull request 'Remove more Reflection usage' (#368) from ReduceReflection into main
Reviewed-on: SteamWar/SteamWar#368
This commit is contained in:
+2
-2
@@ -210,7 +210,7 @@ public abstract class LoaderInteractionElement<T extends Enum<T> & LoaderSetting
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (currentElement.hasTicks(this)) {
|
if (currentElement.hasTicks(this)) {
|
||||||
swInventory.setItem(ticksStart + 3, new SWItem(SWItem.getDye(1), BauSystem.MESSAGE.parse("LOADER_SETTING_TICKS_REMOVE_ONE", player), Arrays.asList(BauSystem.MESSAGE.parse("LOADER_SETTING_TICKS_REMOVE_ONE_SHIFT", player)), false, clickType -> {}).getItemStack(), clickType -> {
|
swInventory.setItem(ticksStart + 3, new SWItem(Material.RED_DYE, BauSystem.MESSAGE.parse("LOADER_SETTING_TICKS_REMOVE_ONE", player), Arrays.asList(BauSystem.MESSAGE.parse("LOADER_SETTING_TICKS_REMOVE_ONE_SHIFT", player)), false, clickType -> {}).getItemStack(), clickType -> {
|
||||||
long ticks = extraTicks.get(index);
|
long ticks = extraTicks.get(index);
|
||||||
ticks -= clickType.isShiftClick() ? 5 : 1;
|
ticks -= clickType.isShiftClick() ? 5 : 1;
|
||||||
if (ticks < 1) ticks = 1;
|
if (ticks < 1) ticks = 1;
|
||||||
@@ -234,7 +234,7 @@ public abstract class LoaderInteractionElement<T extends Enum<T> & LoaderSetting
|
|||||||
swAnvilInv.open();
|
swAnvilInv.open();
|
||||||
});
|
});
|
||||||
|
|
||||||
swInventory.setItem(ticksStart + 5, new SWItem(SWItem.getDye(10), BauSystem.MESSAGE.parse("LOADER_SETTING_TICKS_ADD_ONE", player), Arrays.asList(BauSystem.MESSAGE.parse("LOADER_SETTING_TICKS_ADD_ONE_SHIFT", player)), false, clickType -> {}).getItemStack(), clickType -> {
|
swInventory.setItem(ticksStart + 5, new SWItem(Material.LIME_DYE, BauSystem.MESSAGE.parse("LOADER_SETTING_TICKS_ADD_ONE", player), Arrays.asList(BauSystem.MESSAGE.parse("LOADER_SETTING_TICKS_ADD_ONE_SHIFT", player)), false, clickType -> {}).getItemStack(), clickType -> {
|
||||||
long ticks = extraTicks.get(index);
|
long ticks = extraTicks.get(index);
|
||||||
ticks += clickType.isShiftClick() ? 5 : 1;
|
ticks += clickType.isShiftClick() ? 5 : 1;
|
||||||
extraTicks.set(index, ticks);
|
extraTicks.set(index, ticks);
|
||||||
|
|||||||
+2
-2
@@ -63,7 +63,7 @@ public class LoaderWait implements LoaderElement {
|
|||||||
for (int i = 9; i < 18; i++) swInventory.setItem(i, new SWItem(Material.GRAY_STAINED_GLASS_PANE, "§7"));
|
for (int i = 9; i < 18; i++) swInventory.setItem(i, new SWItem(Material.GRAY_STAINED_GLASS_PANE, "§7"));
|
||||||
swInventory.setItem(9, new SWItem(Material.ARROW, BauSystem.MESSAGE.parse("LOADER_GUI_WAIT_BACK", player)).setCustomModelData(CMDs.BACK).getItemStack(), clickType -> backAction.run());
|
swInventory.setItem(9, new SWItem(Material.ARROW, BauSystem.MESSAGE.parse("LOADER_GUI_WAIT_BACK", player)).setCustomModelData(CMDs.BACK).getItemStack(), clickType -> backAction.run());
|
||||||
|
|
||||||
swInventory.setItem(3, new SWItem(SWItem.getDye(1), BauSystem.MESSAGE.parse("LOADER_SETTING_TICKS_REMOVE_ONE", player), Arrays.asList(BauSystem.MESSAGE.parse("LOADER_SETTING_TICKS_REMOVE_ONE_SHIFT", player)), false, clickType -> {}).getItemStack(), clickType -> {
|
swInventory.setItem(3, new SWItem(Material.RED_DYE, BauSystem.MESSAGE.parse("LOADER_SETTING_TICKS_REMOVE_ONE", player), Arrays.asList(BauSystem.MESSAGE.parse("LOADER_SETTING_TICKS_REMOVE_ONE_SHIFT", player)), false, clickType -> {}).getItemStack(), clickType -> {
|
||||||
delay -= clickType.isShiftClick() ? 5 : 1;
|
delay -= clickType.isShiftClick() ? 5 : 1;
|
||||||
if (delay < 0) delay = 0;
|
if (delay < 0) delay = 0;
|
||||||
swInventory.setItem(4, menu(player));
|
swInventory.setItem(4, menu(player));
|
||||||
@@ -80,7 +80,7 @@ public class LoaderWait implements LoaderElement {
|
|||||||
});
|
});
|
||||||
swAnvilInv.open();
|
swAnvilInv.open();
|
||||||
});
|
});
|
||||||
swInventory.setItem(5, new SWItem(SWItem.getDye(10), BauSystem.MESSAGE.parse("LOADER_SETTING_TICKS_ADD_ONE", player), Arrays.asList(BauSystem.MESSAGE.parse("LOADER_SETTING_TICKS_ADD_ONE_SHIFT", player)), false, clickType -> {}).getItemStack(), clickType -> {
|
swInventory.setItem(5, new SWItem(Material.LIME_DYE, BauSystem.MESSAGE.parse("LOADER_SETTING_TICKS_ADD_ONE", player), Arrays.asList(BauSystem.MESSAGE.parse("LOADER_SETTING_TICKS_ADD_ONE_SHIFT", player)), false, clickType -> {}).getItemStack(), clickType -> {
|
||||||
delay += clickType.isShiftClick() ? 5 : 1;
|
delay += clickType.isShiftClick() ? 5 : 1;
|
||||||
swInventory.setItem(4, menu(player));
|
swInventory.setItem(4, menu(player));
|
||||||
});
|
});
|
||||||
|
|||||||
+8
-8
@@ -69,7 +69,7 @@ public class SimulatorGroupSettingsGui extends SimulatorBaseGui {
|
|||||||
|
|
||||||
// Base Tick
|
// Base Tick
|
||||||
int baseTicks = simulatorGroup.getBaseTick();
|
int baseTicks = simulatorGroup.getBaseTick();
|
||||||
inventory.setItem(9, new SWItem(SWItem.getDye(10), "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
inventory.setItem(9, new SWItem(Material.LIME_DYE, "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
||||||
simulatorGroup.changeBaseTicks(clickType.isShiftClick() ? 5 : 1);
|
simulatorGroup.changeBaseTicks(clickType.isShiftClick() ? 5 : 1);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}).setCustomModelData(CMDs.Simulator.INCREMENT_OR_DISABLED));
|
}).setCustomModelData(CMDs.Simulator.INCREMENT_OR_DISABLED));
|
||||||
@@ -83,7 +83,7 @@ public class SimulatorGroupSettingsGui extends SimulatorBaseGui {
|
|||||||
});
|
});
|
||||||
baseTick.getItemStack().setAmount(Math.max(1, Math.min(baseTicks, 64)));
|
baseTick.getItemStack().setAmount(Math.max(1, Math.min(baseTicks, 64)));
|
||||||
inventory.setItem(18, baseTick);
|
inventory.setItem(18, baseTick);
|
||||||
inventory.setItem(27, new SWItem(SWItem.getDye(baseTicks > 0 ? 1 : 8), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(27, new SWItem(baseTicks > 0 ? Material.RED_DYE : Material.GRAY_DYE, "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
||||||
if (baseTicks - (clickType.isShiftClick() ? 5 : 1) < 0) {
|
if (baseTicks - (clickType.isShiftClick() ? 5 : 1) < 0) {
|
||||||
simulatorGroup.changeBaseTicks(-baseTicks);
|
simulatorGroup.changeBaseTicks(-baseTicks);
|
||||||
} else {
|
} else {
|
||||||
@@ -163,7 +163,7 @@ public class SimulatorGroupSettingsGui extends SimulatorBaseGui {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Pos X
|
//Pos X
|
||||||
inventory.setItem(15, new SWItem(SWItem.getDye(10), "§e+1", Arrays.asList(allTNT ? "§7Shift§8: §e+0.0625" : "§7Shift§8: §e+5"), false, clickType -> {
|
inventory.setItem(15, new SWItem(Material.LIME_DYE, "§e+1", Arrays.asList(allTNT ? "§7Shift§8: §e+0.0625" : "§7Shift§8: §e+5"), false, clickType -> {
|
||||||
simulatorGroup.move(clickType.isShiftClick() ? (allTNT ? 0.0625 : 5) : 1, 0, 0);
|
simulatorGroup.move(clickType.isShiftClick() ? (allTNT ? 0.0625 : 5) : 1, 0, 0);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}).setCustomModelData(CMDs.Simulator.INCREMENT_OR_DISABLED));
|
}).setCustomModelData(CMDs.Simulator.INCREMENT_OR_DISABLED));
|
||||||
@@ -177,13 +177,13 @@ public class SimulatorGroupSettingsGui extends SimulatorBaseGui {
|
|||||||
return true;
|
return true;
|
||||||
}, this).setItem(Material.PAPER).open();
|
}, this).setItem(Material.PAPER).open();
|
||||||
}));
|
}));
|
||||||
inventory.setItem(33, new SWItem(SWItem.getDye(1), "§e-1", Arrays.asList(allTNT ? "§7Shift§8: §e-0.0625" : "§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(33, new SWItem(Material.RED_DYE, "§e-1", Arrays.asList(allTNT ? "§7Shift§8: §e-0.0625" : "§7Shift§8: §e-5"), false, clickType -> {
|
||||||
simulatorGroup.move(clickType.isShiftClick() ? (allTNT ? -0.0625 : -5) : -1, 0, 0);
|
simulatorGroup.move(clickType.isShiftClick() ? (allTNT ? -0.0625 : -5) : -1, 0, 0);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED));
|
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED));
|
||||||
|
|
||||||
//Pos Y
|
//Pos Y
|
||||||
inventory.setItem(16, new SWItem(SWItem.getDye(10), "§e+1", Arrays.asList(allTNT ? "§7Shift§8: §e+0.0625" : "§7Shift§8: §e+5"), false, clickType -> {
|
inventory.setItem(16, new SWItem(Material.LIME_DYE, "§e+1", Arrays.asList(allTNT ? "§7Shift§8: §e+0.0625" : "§7Shift§8: §e+5"), false, clickType -> {
|
||||||
simulatorGroup.move(0, clickType.isShiftClick() ? (allTNT ? 0.0625 : 5) : 1, 0);
|
simulatorGroup.move(0, clickType.isShiftClick() ? (allTNT ? 0.0625 : 5) : 1, 0);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}).setCustomModelData(CMDs.Simulator.INCREMENT_OR_DISABLED));
|
}).setCustomModelData(CMDs.Simulator.INCREMENT_OR_DISABLED));
|
||||||
@@ -197,13 +197,13 @@ public class SimulatorGroupSettingsGui extends SimulatorBaseGui {
|
|||||||
return true;
|
return true;
|
||||||
}, this).setItem(Material.PAPER).open();
|
}, this).setItem(Material.PAPER).open();
|
||||||
}));
|
}));
|
||||||
inventory.setItem(34, new SWItem(SWItem.getDye(1), "§e-1", Arrays.asList(allTNT ? "§7Shift§8: §e-0.0625" : "§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(34, new SWItem(Material.RED_DYE, "§e-1", Arrays.asList(allTNT ? "§7Shift§8: §e-0.0625" : "§7Shift§8: §e-5"), false, clickType -> {
|
||||||
simulatorGroup.move(0, clickType.isShiftClick() ? (allTNT ? -0.0625 : -5) : -1, 0);
|
simulatorGroup.move(0, clickType.isShiftClick() ? (allTNT ? -0.0625 : -5) : -1, 0);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}).setCustomModelData(CMDs.Simulator.ENABLED_OR_DISABLED));
|
}).setCustomModelData(CMDs.Simulator.ENABLED_OR_DISABLED));
|
||||||
|
|
||||||
//Pos Z
|
//Pos Z
|
||||||
inventory.setItem(17, new SWItem(SWItem.getDye(10), "§e+1", Arrays.asList(allTNT ? "§7Shift§8: §e+0.0625" : "§7Shift§8: §e+5"), false, clickType -> {
|
inventory.setItem(17, new SWItem(Material.LIME_DYE, "§e+1", Arrays.asList(allTNT ? "§7Shift§8: §e+0.0625" : "§7Shift§8: §e+5"), false, clickType -> {
|
||||||
simulatorGroup.move(0, 0, clickType.isShiftClick() ? (allTNT ? 0.0625 : 5) : 1);
|
simulatorGroup.move(0, 0, clickType.isShiftClick() ? (allTNT ? 0.0625 : 5) : 1);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}).setCustomModelData(CMDs.Simulator.INCREMENT_OR_DISABLED));
|
}).setCustomModelData(CMDs.Simulator.INCREMENT_OR_DISABLED));
|
||||||
@@ -217,7 +217,7 @@ public class SimulatorGroupSettingsGui extends SimulatorBaseGui {
|
|||||||
return true;
|
return true;
|
||||||
}, this).setItem(Material.PAPER).open();
|
}, this).setItem(Material.PAPER).open();
|
||||||
}));
|
}));
|
||||||
inventory.setItem(35, new SWItem(SWItem.getDye(1), "§e-1", Arrays.asList(allTNT ? "§7Shift§8: §e-0.0625" : "§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(35, new SWItem(Material.RED_DYE, "§e-1", Arrays.asList(allTNT ? "§7Shift§8: §e-0.0625" : "§7Shift§8: §e-5"), false, clickType -> {
|
||||||
simulatorGroup.move(0, 0, clickType.isShiftClick() ? (allTNT ? -0.0625 : -5) : -1);
|
simulatorGroup.move(0, 0, clickType.isShiftClick() ? (allTNT ? -0.0625 : -5) : -1);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED));
|
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED));
|
||||||
|
|||||||
+4
-4
@@ -149,13 +149,13 @@ public class SimulatorObserverGui extends SimulatorScrollGui<ObserverPhase> {
|
|||||||
Supplier<Integer> getter = observerPhase::getTickOffset;
|
Supplier<Integer> getter = observerPhase::getTickOffset;
|
||||||
Consumer<Integer> setter = observerPhase::setTickOffset;
|
Consumer<Integer> setter = observerPhase::setTickOffset;
|
||||||
return new SWItem[] {
|
return new SWItem[] {
|
||||||
new SWItem(SWItem.getDye(getter.get() < max ? 10 : 8), "§e+1", Arrays.asList("§7Shift§8:§e +5"), false, clickType -> {
|
new SWItem(getter.get() < max ? Material.LIME_DYE : Material.GRAY_DYE, "§e+1", Arrays.asList("§7Shift§8:§e +5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
setter.accept(Math.min(max, getter.get() + (clickType.isShiftClick() ? 5 : 1)));
|
setter.accept(Math.min(max, getter.get() + (clickType.isShiftClick() ? 5 : 1)));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}).setCustomModelData(CMDs.Simulator.INCREMENT_OR_DISABLED),
|
}).setCustomModelData(CMDs.Simulator.INCREMENT_OR_DISABLED),
|
||||||
observer,
|
observer,
|
||||||
new SWItem(SWItem.getDye(getter.get() > min ? 1 : 8), "§e-1", Arrays.asList("§7Shift§8:§e -5"), false, clickType -> {
|
new SWItem(getter.get() > min ? Material.RED_DYE : Material.GRAY_DYE, "§e-1", Arrays.asList("§7Shift§8:§e -5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
setter.accept(Math.max(min, getter.get() - (clickType.isShiftClick() ? 5 : 1)));
|
setter.accept(Math.max(min, getter.get() - (clickType.isShiftClick() ? 5 : 1)));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -169,13 +169,13 @@ public class SimulatorObserverGui extends SimulatorScrollGui<ObserverPhase> {
|
|||||||
@Override
|
@Override
|
||||||
public SWItem[] lastColumn() {
|
public SWItem[] lastColumn() {
|
||||||
return new SWItem[]{
|
return new SWItem[]{
|
||||||
new SWItem(SWItem.getDye(10), "§e+1", Arrays.asList("§7Shift§8:§e +5"), false, clickType -> {
|
new SWItem(Material.LIME_DYE, "§e+1", Arrays.asList("§7Shift§8:§e +5"), false, clickType -> {
|
||||||
addNewPhase(clickType.isShiftClick());
|
addNewPhase(clickType.isShiftClick());
|
||||||
}).setCustomModelData(CMDs.Simulator.INCREMENT_OR_DISABLED),
|
}).setCustomModelData(CMDs.Simulator.INCREMENT_OR_DISABLED),
|
||||||
new SWItem(Material.QUARTZ, "§eObserver§8:§a New Phase", clickType -> {
|
new SWItem(Material.QUARTZ, "§eObserver§8:§a New Phase", clickType -> {
|
||||||
addNewPhase(false);
|
addNewPhase(false);
|
||||||
}).setCustomModelData(CMDs.Simulator.NEW_PHASE),
|
}).setCustomModelData(CMDs.Simulator.NEW_PHASE),
|
||||||
new SWItem(SWItem.getDye(8), "§7", clickType -> {
|
new SWItem(Material.GRAY_DYE, "§7", clickType -> {
|
||||||
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED),
|
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -96,7 +96,7 @@ public class SimulatorObserverPhaseSettingsGui extends SimulatorBaseGui {
|
|||||||
|
|
||||||
//Tick Offset
|
//Tick Offset
|
||||||
int offset = observer.getTickOffset();
|
int offset = observer.getTickOffset();
|
||||||
inventory.setItem(10, new SWItem(SWItem.getDye(offset < max ? 10 : 8), "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
inventory.setItem(10, new SWItem(offset < max ? Material.LIME_DYE : Material.GRAY_DYE, "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
observer.setTickOffset(Math.min(max, offset + (clickType.isShiftClick() ? 5 : 1)));
|
observer.setTickOffset(Math.min(max, offset + (clickType.isShiftClick() ? 5 : 1)));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -113,7 +113,7 @@ public class SimulatorObserverPhaseSettingsGui extends SimulatorBaseGui {
|
|||||||
offsetItem.getItemStack().setAmount(Math.max(1, Math.min(offset, 64)));
|
offsetItem.getItemStack().setAmount(Math.max(1, Math.min(offset, 64)));
|
||||||
inventory.setItem(19, offsetItem);
|
inventory.setItem(19, offsetItem);
|
||||||
|
|
||||||
inventory.setItem(28, new SWItem(SWItem.getDye(offset > min ? 1 : 8), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(28, new SWItem(offset > min ? Material.RED_DYE : Material.GRAY_DYE, "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
observer.setTickOffset(Math.max(min, offset - (clickType.isShiftClick() ? 5 : 1)));
|
observer.setTickOffset(Math.max(min, offset - (clickType.isShiftClick() ? 5 : 1)));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -121,7 +121,7 @@ public class SimulatorObserverPhaseSettingsGui extends SimulatorBaseGui {
|
|||||||
|
|
||||||
//Order
|
//Order
|
||||||
int order = observer.getOrder();
|
int order = observer.getOrder();
|
||||||
inventory.setItem(13, new SWItem(SWItem.getDye(order < SimulatorPhase.ORDER_LIMIT ? 10 : 8), "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
inventory.setItem(13, new SWItem(order < SimulatorPhase.ORDER_LIMIT ? Material.LIME_DYE : Material.GRAY_DYE, "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
observer.setOrder(Math.min(SimulatorPhase.ORDER_LIMIT, order + (clickType.isShiftClick() ? 5 : 1)));
|
observer.setOrder(Math.min(SimulatorPhase.ORDER_LIMIT, order + (clickType.isShiftClick() ? 5 : 1)));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -139,7 +139,7 @@ public class SimulatorObserverPhaseSettingsGui extends SimulatorBaseGui {
|
|||||||
orderItem.getItemStack().setAmount(Math.max(1, Math.min(Math.abs(order), 30)));
|
orderItem.getItemStack().setAmount(Math.max(1, Math.min(Math.abs(order), 30)));
|
||||||
inventory.setItem(22, orderItem);
|
inventory.setItem(22, orderItem);
|
||||||
|
|
||||||
inventory.setItem(31, new SWItem(SWItem.getDye(order > -SimulatorPhase.ORDER_LIMIT ? 1 : 8), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(31, new SWItem(order > -SimulatorPhase.ORDER_LIMIT ? Material.RED_DYE : Material.GRAY_DYE, "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
observer.setOrder(Math.max(-SimulatorPhase.ORDER_LIMIT, order - (clickType.isShiftClick() ? 5 : 1)));
|
observer.setOrder(Math.max(-SimulatorPhase.ORDER_LIMIT, order - (clickType.isShiftClick() ? 5 : 1)));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
|
|||||||
+8
-8
@@ -67,7 +67,7 @@ public class SimulatorObserverSettingsGui extends SimulatorBaseGui {
|
|||||||
|
|
||||||
// Base Tick
|
// Base Tick
|
||||||
int baseTicks = observer.getBaseTick();
|
int baseTicks = observer.getBaseTick();
|
||||||
inventory.setItem(9, new SWItem(SWItem.getDye(10), "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
inventory.setItem(9, new SWItem(Material.LIME_DYE, "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
observer.changeBaseTicks(clickType.isShiftClick() ? 5 : 1);
|
observer.changeBaseTicks(clickType.isShiftClick() ? 5 : 1);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -82,7 +82,7 @@ public class SimulatorObserverSettingsGui extends SimulatorBaseGui {
|
|||||||
});
|
});
|
||||||
baseTick.getItemStack().setAmount(Math.max(1, Math.min(baseTicks, 64)));
|
baseTick.getItemStack().setAmount(Math.max(1, Math.min(baseTicks, 64)));
|
||||||
inventory.setItem(18, baseTick);
|
inventory.setItem(18, baseTick);
|
||||||
inventory.setItem(27, new SWItem(SWItem.getDye(baseTicks > 0 ? 1 : 8), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(27, new SWItem(baseTicks > 0 ? Material.RED_DYE : Material.GRAY_DYE, "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
if (baseTicks - (clickType.isShiftClick() ? 5 : 1) < 0) {
|
if (baseTicks - (clickType.isShiftClick() ? 5 : 1) < 0) {
|
||||||
observer.changeBaseTicks(-baseTicks);
|
observer.changeBaseTicks(-baseTicks);
|
||||||
@@ -93,7 +93,7 @@ public class SimulatorObserverSettingsGui extends SimulatorBaseGui {
|
|||||||
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED));
|
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED));
|
||||||
|
|
||||||
//Pos X
|
//Pos X
|
||||||
inventory.setItem(15, new SWItem(SWItem.getDye(10), "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
inventory.setItem(15, new SWItem(Material.LIME_DYE, "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
observer.move(clickType.isShiftClick() ? 5 : 1, 0, 0);
|
observer.move(clickType.isShiftClick() ? 5 : 1, 0, 0);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -105,14 +105,14 @@ public class SimulatorObserverSettingsGui extends SimulatorBaseGui {
|
|||||||
return true;
|
return true;
|
||||||
}, this).open();
|
}, this).open();
|
||||||
}));
|
}));
|
||||||
inventory.setItem(33, new SWItem(SWItem.getDye(1), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(33, new SWItem(Material.RED_DYE, "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
observer.move(clickType.isShiftClick() ? -5 : -1, 0, 0);
|
observer.move(clickType.isShiftClick() ? -5 : -1, 0, 0);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED));
|
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED));
|
||||||
|
|
||||||
//Pos Y
|
//Pos Y
|
||||||
inventory.setItem(16, new SWItem(SWItem.getDye(10), "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
inventory.setItem(16, new SWItem(Material.LIME_DYE, "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
observer.move(0, clickType.isShiftClick() ? 5 : 1, 0);
|
observer.move(0, clickType.isShiftClick() ? 5 : 1, 0);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -124,14 +124,14 @@ public class SimulatorObserverSettingsGui extends SimulatorBaseGui {
|
|||||||
return true;
|
return true;
|
||||||
}, this).open();
|
}, this).open();
|
||||||
}));
|
}));
|
||||||
inventory.setItem(34, new SWItem(SWItem.getDye(1), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(34, new SWItem(Material.RED_DYE, "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
observer.move(0, clickType.isShiftClick() ? -5 : -1, 0);
|
observer.move(0, clickType.isShiftClick() ? -5 : -1, 0);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED));
|
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED));
|
||||||
|
|
||||||
//Pos Z
|
//Pos Z
|
||||||
inventory.setItem(17, new SWItem(SWItem.getDye(10), "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
inventory.setItem(17, new SWItem(Material.LIME_DYE, "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
observer.move(0, 0, clickType.isShiftClick() ? 5 : 1);
|
observer.move(0, 0, clickType.isShiftClick() ? 5 : 1);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -143,7 +143,7 @@ public class SimulatorObserverSettingsGui extends SimulatorBaseGui {
|
|||||||
return true;
|
return true;
|
||||||
}, this).open();
|
}, this).open();
|
||||||
}));
|
}));
|
||||||
inventory.setItem(35, new SWItem(SWItem.getDye(1), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(35, new SWItem(Material.RED_DYE, "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
observer.move(0, 0, clickType.isShiftClick() ? -5 : -1);
|
observer.move(0, 0, clickType.isShiftClick() ? -5 : -1);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
|
|||||||
+4
-4
@@ -164,13 +164,13 @@ public class SimulatorRedstoneGui extends SimulatorScrollGui<SimulatorRedstoneGu
|
|||||||
Supplier<Integer> getter = redstoneSubPhase.place ? redstoneSubPhase.phase::getTickOffset : redstoneSubPhase.phase::getLifetime;
|
Supplier<Integer> getter = redstoneSubPhase.place ? redstoneSubPhase.phase::getTickOffset : redstoneSubPhase.phase::getLifetime;
|
||||||
Consumer<Integer> setter = redstoneSubPhase.place ? redstoneSubPhase.phase::setTickOffset : redstoneSubPhase.phase::setLifetime;
|
Consumer<Integer> setter = redstoneSubPhase.place ? redstoneSubPhase.phase::setTickOffset : redstoneSubPhase.phase::setLifetime;
|
||||||
return new SWItem[] {
|
return new SWItem[] {
|
||||||
new SWItem(SWItem.getDye(getter.get() < max ? 10 : 8), "§e+1", Arrays.asList("§7Shift§8:§e +5"), false, clickType -> {
|
new SWItem(getter.get() < max ? Material.LIME_DYE : Material.GRAY_DYE, "§e+1", Arrays.asList("§7Shift§8:§e +5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
setter.accept(Math.min(max, getter.get() + (clickType.isShiftClick() ? 5 : 1)));
|
setter.accept(Math.min(max, getter.get() + (clickType.isShiftClick() ? 5 : 1)));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}).setCustomModelData(CMDs.Simulator.INCREMENT_OR_DISABLED),
|
}).setCustomModelData(CMDs.Simulator.INCREMENT_OR_DISABLED),
|
||||||
redstone,
|
redstone,
|
||||||
new SWItem(SWItem.getDye(getter.get() > min ? 1 : 8), "§e-1", Arrays.asList("§7Shift§8:§e -5"), false, clickType -> {
|
new SWItem(getter.get() > min ? Material.RED_DYE : Material.GRAY_DYE, "§e-1", Arrays.asList("§7Shift§8:§e -5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
setter.accept(Math.max(min, getter.get() - (clickType.isShiftClick() ? 5 : 1)));
|
setter.accept(Math.max(min, getter.get() - (clickType.isShiftClick() ? 5 : 1)));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -184,13 +184,13 @@ public class SimulatorRedstoneGui extends SimulatorScrollGui<SimulatorRedstoneGu
|
|||||||
@Override
|
@Override
|
||||||
public SWItem[] lastColumn() {
|
public SWItem[] lastColumn() {
|
||||||
return new SWItem[]{
|
return new SWItem[]{
|
||||||
new SWItem(SWItem.getDye(10), "§e+1", Arrays.asList("§7Shift§8:§e +5"), false, clickType -> {
|
new SWItem(Material.LIME_DYE, "§e+1", Arrays.asList("§7Shift§8:§e +5"), false, clickType -> {
|
||||||
addNewPhase(clickType.isShiftClick());
|
addNewPhase(clickType.isShiftClick());
|
||||||
}).setCustomModelData(CMDs.Simulator.INCREMENT_OR_DISABLED),
|
}).setCustomModelData(CMDs.Simulator.INCREMENT_OR_DISABLED),
|
||||||
new SWItem(Material.REDSTONE, "§eRedstone§8:§a New Phase", clickType -> {
|
new SWItem(Material.REDSTONE, "§eRedstone§8:§a New Phase", clickType -> {
|
||||||
addNewPhase(false);
|
addNewPhase(false);
|
||||||
}).setCustomModelData(CMDs.Simulator.NEW_PHASE),
|
}).setCustomModelData(CMDs.Simulator.NEW_PHASE),
|
||||||
new SWItem(SWItem.getDye(8), "§7", clickType -> {
|
new SWItem(Material.GRAY_DYE, "§7", clickType -> {
|
||||||
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED),
|
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-6
@@ -97,7 +97,7 @@ public class SimulatorRedstonePhaseSettingsGui extends SimulatorBaseGui {
|
|||||||
|
|
||||||
//Tick Offset
|
//Tick Offset
|
||||||
int offset = redstone.getTickOffset();
|
int offset = redstone.getTickOffset();
|
||||||
inventory.setItem(10, new SWItem(SWItem.getDye(offset < maxOffset ? 10 : 8), "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
inventory.setItem(10, new SWItem(offset < maxOffset ? Material.LIME_DYE : Material.GRAY_DYE, "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
redstone.setTickOffset(Math.min(maxOffset, offset + (clickType.isShiftClick() ? 5 : 1)));
|
redstone.setTickOffset(Math.min(maxOffset, offset + (clickType.isShiftClick() ? 5 : 1)));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -114,7 +114,7 @@ public class SimulatorRedstonePhaseSettingsGui extends SimulatorBaseGui {
|
|||||||
offsetItem.getItemStack().setAmount(Math.max(1, Math.min(offset, 64)));
|
offsetItem.getItemStack().setAmount(Math.max(1, Math.min(offset, 64)));
|
||||||
inventory.setItem(19, offsetItem);
|
inventory.setItem(19, offsetItem);
|
||||||
|
|
||||||
inventory.setItem(28, new SWItem(SWItem.getDye(offset > min ? 1 : 8), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(28, new SWItem(offset > min ? Material.RED_DYE : Material.GRAY_DYE, "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
redstone.setTickOffset(Math.max(min, offset - (clickType.isShiftClick() ? 5 : 1)));
|
redstone.setTickOffset(Math.max(min, offset - (clickType.isShiftClick() ? 5 : 1)));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -122,7 +122,7 @@ public class SimulatorRedstonePhaseSettingsGui extends SimulatorBaseGui {
|
|||||||
|
|
||||||
//Lifetime
|
//Lifetime
|
||||||
int lifetime = redstone.getLifetime();
|
int lifetime = redstone.getLifetime();
|
||||||
inventory.setItem(11, new SWItem(SWItem.getDye(lifetime < maxLifetime ? 10 : 8), "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
inventory.setItem(11, new SWItem(lifetime < maxLifetime ? Material.LIME_DYE : Material.GRAY_DYE, "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
redstone.setLifetime(Math.min(maxLifetime, lifetime + (clickType.isShiftClick() ? 5 : 1)));
|
redstone.setLifetime(Math.min(maxLifetime, lifetime + (clickType.isShiftClick() ? 5 : 1)));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -139,7 +139,7 @@ public class SimulatorRedstonePhaseSettingsGui extends SimulatorBaseGui {
|
|||||||
lifetimeItem.getItemStack().setAmount(Math.max(1, Math.min(lifetime, 64)));
|
lifetimeItem.getItemStack().setAmount(Math.max(1, Math.min(lifetime, 64)));
|
||||||
inventory.setItem(20, lifetimeItem);
|
inventory.setItem(20, lifetimeItem);
|
||||||
|
|
||||||
inventory.setItem(29, new SWItem(SWItem.getDye(lifetime > 0 ? 1 : 8), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(29, new SWItem(lifetime > 0 ? Material.RED_DYE : Material.GRAY_DYE, "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
redstone.setLifetime(Math.max(0, lifetime - (clickType.isShiftClick() ? 5 : 1)));
|
redstone.setLifetime(Math.max(0, lifetime - (clickType.isShiftClick() ? 5 : 1)));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -147,7 +147,7 @@ public class SimulatorRedstonePhaseSettingsGui extends SimulatorBaseGui {
|
|||||||
|
|
||||||
//Order
|
//Order
|
||||||
int order = redstone.getOrder();
|
int order = redstone.getOrder();
|
||||||
inventory.setItem(13, new SWItem(SWItem.getDye(order < SimulatorPhase.ORDER_LIMIT ? 10 : 8), "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
inventory.setItem(13, new SWItem(order < SimulatorPhase.ORDER_LIMIT ? Material.LIME_DYE : Material.GRAY_DYE, "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
redstone.setOrder(Math.min(SimulatorPhase.ORDER_LIMIT, order + (clickType.isShiftClick() ? 5 : 1)));
|
redstone.setOrder(Math.min(SimulatorPhase.ORDER_LIMIT, order + (clickType.isShiftClick() ? 5 : 1)));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -165,7 +165,7 @@ public class SimulatorRedstonePhaseSettingsGui extends SimulatorBaseGui {
|
|||||||
orderItem.getItemStack().setAmount(Math.max(1, Math.min(Math.abs(order), 30)));
|
orderItem.getItemStack().setAmount(Math.max(1, Math.min(Math.abs(order), 30)));
|
||||||
inventory.setItem(22, orderItem);
|
inventory.setItem(22, orderItem);
|
||||||
|
|
||||||
inventory.setItem(31, new SWItem(SWItem.getDye(order > -SimulatorPhase.ORDER_LIMIT ? 1 : 8), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(31, new SWItem(order > -SimulatorPhase.ORDER_LIMIT ? Material.RED_DYE : Material.GRAY_DYE, "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
redstone.setOrder(Math.max(-SimulatorPhase.ORDER_LIMIT, order - (clickType.isShiftClick() ? 5 : 1)));
|
redstone.setOrder(Math.max(-SimulatorPhase.ORDER_LIMIT, order - (clickType.isShiftClick() ? 5 : 1)));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
|
|||||||
+8
-8
@@ -66,7 +66,7 @@ public class SimulatorRedstoneSettingsGui extends SimulatorBaseGui {
|
|||||||
|
|
||||||
// Base Tick
|
// Base Tick
|
||||||
int baseTicks = redstone.getBaseTick();
|
int baseTicks = redstone.getBaseTick();
|
||||||
inventory.setItem(9, new SWItem(SWItem.getDye(10), "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
inventory.setItem(9, new SWItem(Material.LIME_DYE, "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
redstone.changeBaseTicks(clickType.isShiftClick() ? 5 : 1);
|
redstone.changeBaseTicks(clickType.isShiftClick() ? 5 : 1);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -81,7 +81,7 @@ public class SimulatorRedstoneSettingsGui extends SimulatorBaseGui {
|
|||||||
});
|
});
|
||||||
baseTick.getItemStack().setAmount(Math.max(1, Math.min(baseTicks, 64)));
|
baseTick.getItemStack().setAmount(Math.max(1, Math.min(baseTicks, 64)));
|
||||||
inventory.setItem(18, baseTick);
|
inventory.setItem(18, baseTick);
|
||||||
inventory.setItem(27, new SWItem(SWItem.getDye(baseTicks > 0 ? 1 : 8), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(27, new SWItem(baseTicks > 0 ? Material.RED_DYE : Material.GRAY_DYE, "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
if (baseTicks - (clickType.isShiftClick() ? 5 : 1) < 0) {
|
if (baseTicks - (clickType.isShiftClick() ? 5 : 1) < 0) {
|
||||||
redstone.changeBaseTicks(-baseTicks);
|
redstone.changeBaseTicks(-baseTicks);
|
||||||
@@ -92,7 +92,7 @@ public class SimulatorRedstoneSettingsGui extends SimulatorBaseGui {
|
|||||||
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED));
|
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED));
|
||||||
|
|
||||||
//Pos X
|
//Pos X
|
||||||
inventory.setItem(15, new SWItem(SWItem.getDye(10), "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
inventory.setItem(15, new SWItem(Material.LIME_DYE, "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
redstone.move(clickType.isShiftClick() ? 5 : 1, 0, 0);
|
redstone.move(clickType.isShiftClick() ? 5 : 1, 0, 0);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -104,14 +104,14 @@ public class SimulatorRedstoneSettingsGui extends SimulatorBaseGui {
|
|||||||
return true;
|
return true;
|
||||||
}, this).open();
|
}, this).open();
|
||||||
}));
|
}));
|
||||||
inventory.setItem(33, new SWItem(SWItem.getDye(1), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(33, new SWItem(Material.RED_DYE, "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
redstone.move(clickType.isShiftClick() ? -5 : -1, 0, 0);
|
redstone.move(clickType.isShiftClick() ? -5 : -1, 0, 0);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED));
|
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED));
|
||||||
|
|
||||||
//Pos Y
|
//Pos Y
|
||||||
inventory.setItem(16, new SWItem(SWItem.getDye(10), "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
inventory.setItem(16, new SWItem(Material.LIME_DYE, "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
redstone.move(0, clickType.isShiftClick() ? 5 : 1, 0);
|
redstone.move(0, clickType.isShiftClick() ? 5 : 1, 0);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -123,14 +123,14 @@ public class SimulatorRedstoneSettingsGui extends SimulatorBaseGui {
|
|||||||
return true;
|
return true;
|
||||||
}, this).open();
|
}, this).open();
|
||||||
}));
|
}));
|
||||||
inventory.setItem(34, new SWItem(SWItem.getDye(1), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(34, new SWItem(Material.RED_DYE, "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
redstone.move(0, clickType.isShiftClick() ? -5 : -1, 0);
|
redstone.move(0, clickType.isShiftClick() ? -5 : -1, 0);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED));
|
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED));
|
||||||
|
|
||||||
//Pos Z
|
//Pos Z
|
||||||
inventory.setItem(17, new SWItem(SWItem.getDye(10), "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
inventory.setItem(17, new SWItem(Material.LIME_DYE, "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
redstone.move(0, 0, clickType.isShiftClick() ? 5 : 1);
|
redstone.move(0, 0, clickType.isShiftClick() ? 5 : 1);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -142,7 +142,7 @@ public class SimulatorRedstoneSettingsGui extends SimulatorBaseGui {
|
|||||||
return true;
|
return true;
|
||||||
}, this).open();
|
}, this).open();
|
||||||
}));
|
}));
|
||||||
inventory.setItem(35, new SWItem(SWItem.getDye(1), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(35, new SWItem(Material.RED_DYE, "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
redstone.move(0, 0, clickType.isShiftClick() ? -5 : -1);
|
redstone.move(0, 0, clickType.isShiftClick() ? -5 : -1);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
|
|||||||
+6
-6
@@ -66,37 +66,37 @@ public class SimulatorSettingsGui extends SimulatorBaseGui {
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
//Pos X
|
//Pos X
|
||||||
inventory.setItem(15, new SWItem(SWItem.getDye(10), "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
inventory.setItem(15, new SWItem(Material.LIME_DYE, "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
||||||
simulator.move(clickType.isShiftClick() ? 5 : 1, 0, 0);
|
simulator.move(clickType.isShiftClick() ? 5 : 1, 0, 0);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}).setCustomModelData(CMDs.Simulator.INCREMENT_OR_DISABLED));
|
}).setCustomModelData(CMDs.Simulator.INCREMENT_OR_DISABLED));
|
||||||
inventory.setItem(24, new SWItem(Material.PAPER, "§eX", clickType -> {
|
inventory.setItem(24, new SWItem(Material.PAPER, "§eX", clickType -> {
|
||||||
}));
|
}));
|
||||||
inventory.setItem(33, new SWItem(SWItem.getDye(1), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(33, new SWItem(Material.RED_DYE, "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
||||||
simulator.move(clickType.isShiftClick() ? -5 : -1, 0, 0);
|
simulator.move(clickType.isShiftClick() ? -5 : -1, 0, 0);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED));
|
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED));
|
||||||
|
|
||||||
//Pos Y
|
//Pos Y
|
||||||
inventory.setItem(16, new SWItem(SWItem.getDye(10), "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
inventory.setItem(16, new SWItem(Material.LIME_DYE, "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
||||||
simulator.move(0, clickType.isShiftClick() ? 5 : 1, 0);
|
simulator.move(0, clickType.isShiftClick() ? 5 : 1, 0);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}).setCustomModelData(CMDs.Simulator.INCREMENT_OR_DISABLED));
|
}).setCustomModelData(CMDs.Simulator.INCREMENT_OR_DISABLED));
|
||||||
inventory.setItem(25, new SWItem(Material.PAPER, "§eY", clickType -> {
|
inventory.setItem(25, new SWItem(Material.PAPER, "§eY", clickType -> {
|
||||||
}));
|
}));
|
||||||
inventory.setItem(34, new SWItem(SWItem.getDye(1), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(34, new SWItem(Material.RED_DYE, "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
||||||
simulator.move(0, clickType.isShiftClick() ? -5 : -1, 0);
|
simulator.move(0, clickType.isShiftClick() ? -5 : -1, 0);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED));
|
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED));
|
||||||
|
|
||||||
//Pos Z
|
//Pos Z
|
||||||
inventory.setItem(17, new SWItem(SWItem.getDye(10), "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
inventory.setItem(17, new SWItem(Material.LIME_DYE, "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
||||||
simulator.move(0, 0, clickType.isShiftClick() ? 5 : 1);
|
simulator.move(0, 0, clickType.isShiftClick() ? 5 : 1);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}).setCustomModelData(CMDs.Simulator.INCREMENT_OR_DISABLED));
|
}).setCustomModelData(CMDs.Simulator.INCREMENT_OR_DISABLED));
|
||||||
inventory.setItem(26, new SWItem(Material.PAPER, "§eZ", clickType -> {
|
inventory.setItem(26, new SWItem(Material.PAPER, "§eZ", clickType -> {
|
||||||
}));
|
}));
|
||||||
inventory.setItem(35, new SWItem(SWItem.getDye(1), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(35, new SWItem(Material.RED_DYE, "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
||||||
simulator.move(0, 0, clickType.isShiftClick() ? -5 : -1);
|
simulator.move(0, 0, clickType.isShiftClick() ? -5 : -1);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED));
|
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED));
|
||||||
|
|||||||
+4
-4
@@ -134,13 +134,13 @@ public class SimulatorTNTGui extends SimulatorScrollGui<TNTPhase> {
|
|||||||
tnt.getItemStack().setAmount(Math.min(tntSetting.getCount(), 64));
|
tnt.getItemStack().setAmount(Math.min(tntSetting.getCount(), 64));
|
||||||
|
|
||||||
return new SWItem[]{
|
return new SWItem[]{
|
||||||
new SWItem(SWItem.getDye(10), "§e+1", Arrays.asList("§7Shift§8:§e +5"), false, clickType -> {
|
new SWItem(Material.LIME_DYE, "§e+1", Arrays.asList("§7Shift§8:§e +5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
tntSetting.setCount(tntSetting.getCount() + (clickType.isShiftClick() ? 5 : 1));
|
tntSetting.setCount(tntSetting.getCount() + (clickType.isShiftClick() ? 5 : 1));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}).setCustomModelData(CMDs.Simulator.INCREMENT_OR_DISABLED),
|
}).setCustomModelData(CMDs.Simulator.INCREMENT_OR_DISABLED),
|
||||||
tnt,
|
tnt,
|
||||||
new SWItem(SWItem.getDye(tntSetting.getCount() > 1 ? 1 : 8), "§e-1", Arrays.asList("§7Shift§8:§e -5"), false, clickType -> {
|
new SWItem(tntSetting.getCount() > 1 ? Material.RED_DYE : Material.GRAY_DYE, "§e-1", Arrays.asList("§7Shift§8:§e -5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
tntSetting.setCount(Math.max(1, tntSetting.getCount() - (clickType.isShiftClick() ? 5 : 1)));
|
tntSetting.setCount(Math.max(1, tntSetting.getCount() - (clickType.isShiftClick() ? 5 : 1)));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -154,13 +154,13 @@ public class SimulatorTNTGui extends SimulatorScrollGui<TNTPhase> {
|
|||||||
@Override
|
@Override
|
||||||
public SWItem[] lastColumn() {
|
public SWItem[] lastColumn() {
|
||||||
return new SWItem[]{
|
return new SWItem[]{
|
||||||
new SWItem(SWItem.getDye(10), "§e+1", Arrays.asList("§7Shift§8:§e +5"), false, clickType -> {
|
new SWItem(Material.LIME_DYE, "§e+1", Arrays.asList("§7Shift§8:§e +5"), false, clickType -> {
|
||||||
addNewPhase(clickType.isShiftClick());
|
addNewPhase(clickType.isShiftClick());
|
||||||
}).setCustomModelData(CMDs.Simulator.INCREMENT_OR_DISABLED),
|
}).setCustomModelData(CMDs.Simulator.INCREMENT_OR_DISABLED),
|
||||||
new SWItem(Material.GUNPOWDER, "§eTNT§8:§a New Phase", clickType -> {
|
new SWItem(Material.GUNPOWDER, "§eTNT§8:§a New Phase", clickType -> {
|
||||||
addNewPhase(false);
|
addNewPhase(false);
|
||||||
}).setCustomModelData(CMDs.Simulator.NEW_PHASE),
|
}).setCustomModelData(CMDs.Simulator.NEW_PHASE),
|
||||||
new SWItem(SWItem.getDye(8), "§7", clickType -> {
|
new SWItem(Material.GRAY_DYE, "§7", clickType -> {
|
||||||
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED),
|
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-8
@@ -77,7 +77,7 @@ public class SimulatorTNTPhaseSettingsGui extends SimulatorBaseGui {
|
|||||||
|
|
||||||
//Count
|
//Count
|
||||||
int count = tnt.getCount();
|
int count = tnt.getCount();
|
||||||
inventory.setItem(9, new SWItem(SWItem.getDye(10), "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
inventory.setItem(9, new SWItem(Material.LIME_DYE, "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
tnt.setCount(count + (clickType.isShiftClick() ? 5 : 1));
|
tnt.setCount(count + (clickType.isShiftClick() ? 5 : 1));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -94,7 +94,7 @@ public class SimulatorTNTPhaseSettingsGui extends SimulatorBaseGui {
|
|||||||
countItem.getItemStack().setAmount(Math.max(1, Math.min(count, 64)));
|
countItem.getItemStack().setAmount(Math.max(1, Math.min(count, 64)));
|
||||||
inventory.setItem(18, countItem);
|
inventory.setItem(18, countItem);
|
||||||
|
|
||||||
inventory.setItem(27, new SWItem(SWItem.getDye(count > 1 ? 1 : 8), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(27, new SWItem(count > 1 ? Material.RED_DYE : Material.GRAY_DYE, "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
tnt.setCount(Math.max(1, count - (clickType.isShiftClick() ? 5 : 1)));
|
tnt.setCount(Math.max(1, count - (clickType.isShiftClick() ? 5 : 1)));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -102,7 +102,7 @@ public class SimulatorTNTPhaseSettingsGui extends SimulatorBaseGui {
|
|||||||
|
|
||||||
//Tick Offset
|
//Tick Offset
|
||||||
int offset = tnt.getTickOffset();
|
int offset = tnt.getTickOffset();
|
||||||
inventory.setItem(10, new SWItem(SWItem.getDye(10), "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
inventory.setItem(10, new SWItem(Material.LIME_DYE, "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
tnt.setTickOffset(offset + (clickType.isShiftClick() ? 5 : 1));
|
tnt.setTickOffset(offset + (clickType.isShiftClick() ? 5 : 1));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -119,7 +119,7 @@ public class SimulatorTNTPhaseSettingsGui extends SimulatorBaseGui {
|
|||||||
offsetItem.getItemStack().setAmount(Math.max(1, Math.min(offset, 64)));
|
offsetItem.getItemStack().setAmount(Math.max(1, Math.min(offset, 64)));
|
||||||
inventory.setItem(19, offsetItem);
|
inventory.setItem(19, offsetItem);
|
||||||
|
|
||||||
inventory.setItem(28, new SWItem(SWItem.getDye(offset > 0 ? 1 : 8), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(28, new SWItem(offset > 0 ? Material.RED_DYE : Material.GRAY_DYE, "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
tnt.setTickOffset(Math.max(0, offset - (clickType.isShiftClick() ? 5 : 1)));
|
tnt.setTickOffset(Math.max(0, offset - (clickType.isShiftClick() ? 5 : 1)));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -127,7 +127,7 @@ public class SimulatorTNTPhaseSettingsGui extends SimulatorBaseGui {
|
|||||||
|
|
||||||
//Lifetime
|
//Lifetime
|
||||||
int lifetime = tnt.getLifetime();
|
int lifetime = tnt.getLifetime();
|
||||||
inventory.setItem(11, new SWItem(SWItem.getDye(10), "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
inventory.setItem(11, new SWItem(Material.LIME_DYE, "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
tnt.setLifetime(lifetime + (clickType.isShiftClick() ? 5 : 1));
|
tnt.setLifetime(lifetime + (clickType.isShiftClick() ? 5 : 1));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -144,7 +144,7 @@ public class SimulatorTNTPhaseSettingsGui extends SimulatorBaseGui {
|
|||||||
lifetimeItem.getItemStack().setAmount(Math.max(1, Math.min(lifetime, 64)));
|
lifetimeItem.getItemStack().setAmount(Math.max(1, Math.min(lifetime, 64)));
|
||||||
inventory.setItem(20, lifetimeItem);
|
inventory.setItem(20, lifetimeItem);
|
||||||
|
|
||||||
inventory.setItem(29, new SWItem(SWItem.getDye(lifetime > 0 ? 1 : 8), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(29, new SWItem(lifetime > 0 ? Material.GRAY_DYE : Material.GRAY_DYE, "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
tnt.setLifetime(Math.max(1, lifetime - (clickType.isShiftClick() ? 5 : 1)));
|
tnt.setLifetime(Math.max(1, lifetime - (clickType.isShiftClick() ? 5 : 1)));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -152,7 +152,7 @@ public class SimulatorTNTPhaseSettingsGui extends SimulatorBaseGui {
|
|||||||
|
|
||||||
//Order
|
//Order
|
||||||
int order = tnt.getOrder();
|
int order = tnt.getOrder();
|
||||||
inventory.setItem(13, new SWItem(SWItem.getDye(order < SimulatorPhase.ORDER_LIMIT ? 10 : 8), "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
inventory.setItem(13, new SWItem(order < SimulatorPhase.ORDER_LIMIT ? Material.LIME_DYE : Material.GRAY_DYE, "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
tnt.setOrder(Math.min(SimulatorPhase.ORDER_LIMIT, order + (clickType.isShiftClick() ? 5 : 1)));
|
tnt.setOrder(Math.min(SimulatorPhase.ORDER_LIMIT, order + (clickType.isShiftClick() ? 5 : 1)));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -170,7 +170,7 @@ public class SimulatorTNTPhaseSettingsGui extends SimulatorBaseGui {
|
|||||||
orderItem.getItemStack().setAmount(Math.max(1, Math.min(Math.abs(order), 30)));
|
orderItem.getItemStack().setAmount(Math.max(1, Math.min(Math.abs(order), 30)));
|
||||||
inventory.setItem(22, orderItem);
|
inventory.setItem(22, orderItem);
|
||||||
|
|
||||||
inventory.setItem(31, new SWItem(SWItem.getDye(order > -SimulatorPhase.ORDER_LIMIT ? 1 : 8), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(31, new SWItem(order > -SimulatorPhase.ORDER_LIMIT ? Material.RED_DYE : Material.GRAY_DYE, "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
tnt.setOrder(Math.max(-SimulatorPhase.ORDER_LIMIT, order - (clickType.isShiftClick() ? 5 : 1)));
|
tnt.setOrder(Math.max(-SimulatorPhase.ORDER_LIMIT, order - (clickType.isShiftClick() ? 5 : 1)));
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
|
|||||||
+8
-8
@@ -75,7 +75,7 @@ public class SimulatorTNTSettingsGui extends SimulatorBaseGui {
|
|||||||
|
|
||||||
// Base Tick
|
// Base Tick
|
||||||
int baseTicks = tnt.getBaseTick();
|
int baseTicks = tnt.getBaseTick();
|
||||||
inventory.setItem(9, new SWItem(SWItem.getDye(10), "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
inventory.setItem(9, new SWItem(Material.LIME_DYE, "§e+1", Arrays.asList("§7Shift§8: §e+5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
tnt.changeBaseTicks(clickType.isShiftClick() ? 5 : 1);
|
tnt.changeBaseTicks(clickType.isShiftClick() ? 5 : 1);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -90,7 +90,7 @@ public class SimulatorTNTSettingsGui extends SimulatorBaseGui {
|
|||||||
});
|
});
|
||||||
baseTick.getItemStack().setAmount(Math.max(1, Math.min(baseTicks, 64)));
|
baseTick.getItemStack().setAmount(Math.max(1, Math.min(baseTicks, 64)));
|
||||||
inventory.setItem(18, baseTick);
|
inventory.setItem(18, baseTick);
|
||||||
inventory.setItem(27, new SWItem(SWItem.getDye(baseTicks > 0 ? 1 : 8), "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
inventory.setItem(27, new SWItem(baseTicks > 0 ? Material.RED_DYE : Material.GRAY_DYE, "§e-1", Arrays.asList("§7Shift§8: §e-5"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
if (baseTicks - (clickType.isShiftClick() ? 5 : 1) < 0) {
|
if (baseTicks - (clickType.isShiftClick() ? 5 : 1) < 0) {
|
||||||
tnt.changeBaseTicks(-baseTicks);
|
tnt.changeBaseTicks(-baseTicks);
|
||||||
@@ -138,7 +138,7 @@ public class SimulatorTNTSettingsGui extends SimulatorBaseGui {
|
|||||||
inventory.setItem(30, positivXItem);
|
inventory.setItem(30, positivXItem);
|
||||||
|
|
||||||
// Pos X
|
// Pos X
|
||||||
inventory.setItem(15, new SWItem(SWItem.getDye(10), "§e+1", Arrays.asList("§7Shift§8: §e+0.0625"), false, clickType -> {
|
inventory.setItem(15, new SWItem(Material.LIME_DYE, "§e+1", Arrays.asList("§7Shift§8: §e+0.0625"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
tnt.move(clickType.isShiftClick() ? 0.0625 : 1, 0, 0);
|
tnt.move(clickType.isShiftClick() ? 0.0625 : 1, 0, 0);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -150,14 +150,14 @@ public class SimulatorTNTSettingsGui extends SimulatorBaseGui {
|
|||||||
return true;
|
return true;
|
||||||
}, this).open();
|
}, this).open();
|
||||||
}));
|
}));
|
||||||
inventory.setItem(33, new SWItem(SWItem.getDye(1), "§e-1", Arrays.asList("§7Shift§8: §e-0.0625"), false, clickType -> {
|
inventory.setItem(33, new SWItem(Material.RED_DYE, "§e-1", Arrays.asList("§7Shift§8: §e-0.0625"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
tnt.move(clickType.isShiftClick() ? -0.0625 : -1, 0, 0);
|
tnt.move(clickType.isShiftClick() ? -0.0625 : -1, 0, 0);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED));
|
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED));
|
||||||
|
|
||||||
// Pos Y
|
// Pos Y
|
||||||
inventory.setItem(16, new SWItem(SWItem.getDye(10), "§e+1", Arrays.asList("§7Shift§8: §e+0.0625"), false, clickType -> {
|
inventory.setItem(16, new SWItem(Material.LIME_DYE, "§e+1", Arrays.asList("§7Shift§8: §e+0.0625"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
tnt.move(0, clickType.isShiftClick() ? 0.0625 : 1, 0);
|
tnt.move(0, clickType.isShiftClick() ? 0.0625 : 1, 0);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -169,14 +169,14 @@ public class SimulatorTNTSettingsGui extends SimulatorBaseGui {
|
|||||||
return true;
|
return true;
|
||||||
}, this).open();
|
}, this).open();
|
||||||
}));
|
}));
|
||||||
inventory.setItem(34, new SWItem(SWItem.getDye(1), "§e-1", Arrays.asList("§7Shift§8: §e-0.0625"), false, clickType -> {
|
inventory.setItem(34, new SWItem(Material.RED_DYE, "§e-1", Arrays.asList("§7Shift§8: §e-0.0625"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
tnt.move(0, clickType.isShiftClick() ? -0.0625 : -1, 0);
|
tnt.move(0, clickType.isShiftClick() ? -0.0625 : -1, 0);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED));
|
}).setCustomModelData(CMDs.Simulator.DECREMENT_OR_DISABLED));
|
||||||
|
|
||||||
// Pos Z
|
// Pos Z
|
||||||
inventory.setItem(17, new SWItem(SWItem.getDye(10), "§e+1", Arrays.asList("§7Shift§8: §e+0.0625"), false, clickType -> {
|
inventory.setItem(17, new SWItem(Material.LIME_DYE, "§e+1", Arrays.asList("§7Shift§8: §e+0.0625"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
tnt.move(0, 0, clickType.isShiftClick() ? 0.0625 : 1);
|
tnt.move(0, 0, clickType.isShiftClick() ? 0.0625 : 1);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
@@ -188,7 +188,7 @@ public class SimulatorTNTSettingsGui extends SimulatorBaseGui {
|
|||||||
return true;
|
return true;
|
||||||
}, this).open();
|
}, this).open();
|
||||||
}));
|
}));
|
||||||
inventory.setItem(35, new SWItem(SWItem.getDye(1), "§e-1", Arrays.asList("§7Shift§8: §e-0.0625"), false, clickType -> {
|
inventory.setItem(35, new SWItem(Material.RED_DYE, "§e-1", Arrays.asList("§7Shift§8: §e-0.0625"), false, clickType -> {
|
||||||
if (clickType == ClickType.DOUBLE_CLICK) return;
|
if (clickType == ClickType.DOUBLE_CLICK) return;
|
||||||
tnt.move(0, 0, clickType.isShiftClick() ? -0.0625 : -1);
|
tnt.move(0, 0, clickType.isShiftClick() ? -0.0625 : -1);
|
||||||
SimulatorWatcher.update(simulator);
|
SimulatorWatcher.update(simulator);
|
||||||
|
|||||||
+3
-2
@@ -23,6 +23,7 @@ import de.steamwar.bausystem.features.simulator.data.Simulator;
|
|||||||
import de.steamwar.core.Core;
|
import de.steamwar.core.Core;
|
||||||
import de.steamwar.data.CMDs;
|
import de.steamwar.data.CMDs;
|
||||||
import de.steamwar.inventory.SWItem;
|
import de.steamwar.inventory.SWItem;
|
||||||
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -51,14 +52,14 @@ public abstract class SimulatorPageGui<T> extends SimulatorBaseGui {
|
|||||||
headerAndFooter();
|
headerAndFooter();
|
||||||
page = Math.min(page, maxPage());
|
page = Math.min(page, maxPage());
|
||||||
|
|
||||||
inventory.setItem(size - 9, new SWItem(SWItem.getDye(page > 0 ? 10 : 8), page > 0 ? (byte) 10 : (byte) 8, Core.MESSAGE.parse(page > 0 ? "SWLISINV_PREVIOUS_PAGE_ACTIVE" : "SWLISINV_PREVIOUS_PAGE_INACTIVE", player), clickType -> {
|
inventory.setItem(size - 9, new SWItem(page > 0 ? Material.LIME_DYE : Material.GRAY_DYE, page > 0 ? (byte) 10 : (byte) 8, Core.MESSAGE.parse(page > 0 ? "SWLISINV_PREVIOUS_PAGE_ACTIVE" : "SWLISINV_PREVIOUS_PAGE_INACTIVE", player), clickType -> {
|
||||||
if (page > 0) {
|
if (page > 0) {
|
||||||
page--;
|
page--;
|
||||||
open();
|
open();
|
||||||
}
|
}
|
||||||
}).setCustomModelData(CMDs.PREVIOUS_PAGE));
|
}).setCustomModelData(CMDs.PREVIOUS_PAGE));
|
||||||
boolean hasNext = page < maxPage() - (data.size() % (size - 18) == 0 ? 1 : 0);
|
boolean hasNext = page < maxPage() - (data.size() % (size - 18) == 0 ? 1 : 0);
|
||||||
inventory.setItem(size - 1, new SWItem(SWItem.getDye(hasNext ? 10 : 8), hasNext ? (byte) 10 : (byte) 8, Core.MESSAGE.parse(hasNext ? "SWLISINV_NEXT_PAGE_ACTIVE" : "SWLISINV_NEXT_PAGE_INACTIVE", player), clickType -> {
|
inventory.setItem(size - 1, new SWItem(hasNext ? Material.LIME_DYE : Material.GRAY_DYE, hasNext ? (byte) 10 : (byte) 8, Core.MESSAGE.parse(hasNext ? "SWLISINV_NEXT_PAGE_ACTIVE" : "SWLISINV_NEXT_PAGE_INACTIVE", player), clickType -> {
|
||||||
if (hasNext) {
|
if (hasNext) {
|
||||||
page++;
|
page++;
|
||||||
open();
|
open();
|
||||||
|
|||||||
+3
-2
@@ -24,6 +24,7 @@ import de.steamwar.bausystem.features.simulator.data.Simulator;
|
|||||||
import de.steamwar.core.Core;
|
import de.steamwar.core.Core;
|
||||||
import de.steamwar.data.CMDs;
|
import de.steamwar.data.CMDs;
|
||||||
import de.steamwar.inventory.SWItem;
|
import de.steamwar.inventory.SWItem;
|
||||||
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -51,14 +52,14 @@ public abstract class SimulatorScrollGui<T> extends SimulatorBaseGui {
|
|||||||
headerAndFooter();
|
headerAndFooter();
|
||||||
scroll = maxScroll();
|
scroll = maxScroll();
|
||||||
|
|
||||||
inventory.setItem(size - 9, new SWItem(SWItem.getDye(scroll > 0 ? 10 : 8), scroll > 0 ? (byte) 10 : (byte) 8, Core.MESSAGE.parse(scroll > 0 ? "SWLISINV_PREVIOUS_PAGE_ACTIVE" : "SWLISINV_PREVIOUS_PAGE_INACTIVE", player), clickType -> {
|
inventory.setItem(size - 9, new SWItem(scroll > 0 ? Material.LIME_DYE : Material.GRAY_DYE, scroll > 0 ? (byte) 10 : (byte) 8, Core.MESSAGE.parse(scroll > 0 ? "SWLISINV_PREVIOUS_PAGE_ACTIVE" : "SWLISINV_PREVIOUS_PAGE_INACTIVE", player), clickType -> {
|
||||||
if (scroll > 0) {
|
if (scroll > 0) {
|
||||||
scroll = Math.max(0, scroll - 9);
|
scroll = Math.max(0, scroll - 9);
|
||||||
open();
|
open();
|
||||||
}
|
}
|
||||||
}).setCustomModelData(CMDs.PREVIOUS_PAGE));
|
}).setCustomModelData(CMDs.PREVIOUS_PAGE));
|
||||||
boolean hasNext = (data.size() + 1) - scroll > 9;
|
boolean hasNext = (data.size() + 1) - scroll > 9;
|
||||||
inventory.setItem(size - 1, new SWItem(SWItem.getDye(hasNext ? 10 : 8), hasNext ? (byte) 10 : (byte) 8, Core.MESSAGE.parse(hasNext ? "SWLISINV_NEXT_PAGE_ACTIVE" : "SWLISINV_NEXT_PAGE_INACTIVE", player), clickType -> {
|
inventory.setItem(size - 1, new SWItem(hasNext ? Material.LIME_DYE : Material.GRAY_DYE, hasNext ? (byte) 10 : (byte) 8, Core.MESSAGE.parse(hasNext ? "SWLISINV_NEXT_PAGE_ACTIVE" : "SWLISINV_NEXT_PAGE_INACTIVE", player), clickType -> {
|
||||||
if (hasNext) {
|
if (hasNext) {
|
||||||
scroll = Math.min(scroll + 9, data.size() + 1 - 9);
|
scroll = Math.min(scroll + 9, data.size() + 1 - 9);
|
||||||
open();
|
open();
|
||||||
|
|||||||
+2
-3
@@ -23,7 +23,6 @@ import com.comphenix.tinyprotocol.TinyProtocol;
|
|||||||
import de.steamwar.bausystem.BauSystem;
|
import de.steamwar.bausystem.BauSystem;
|
||||||
import de.steamwar.bausystem.Permission;
|
import de.steamwar.bausystem.Permission;
|
||||||
import de.steamwar.bausystem.configplayer.Config;
|
import de.steamwar.bausystem.configplayer.Config;
|
||||||
import de.steamwar.inventory.SWItem;
|
|
||||||
import de.steamwar.linkage.Linked;
|
import de.steamwar.linkage.Linked;
|
||||||
import net.minecraft.network.protocol.game.ServerboundUseItemOnPacket;
|
import net.minecraft.network.protocol.game.ServerboundUseItemOnPacket;
|
||||||
import org.bukkit.*;
|
import org.bukkit.*;
|
||||||
@@ -76,8 +75,8 @@ public class SmartPlaceListener implements Listener {
|
|||||||
|
|
||||||
IGNORED.add(Material.TNT);
|
IGNORED.add(Material.TNT);
|
||||||
IGNORED.add(Material.REDSTONE_ORE);
|
IGNORED.add(Material.REDSTONE_ORE);
|
||||||
IGNORED.add(SWItem.getMaterial("BEEHIVE"));
|
IGNORED.add(Material.BEEHIVE);
|
||||||
IGNORED.add(SWItem.getMaterial("SEA_PICKLE"));
|
IGNORED.add(Material.SEA_PICKLE);
|
||||||
IGNORED.remove(Material.STONE);
|
IGNORED.remove(Material.STONE);
|
||||||
IGNORED.remove(Material.BARRIER);
|
IGNORED.remove(Material.BARRIER);
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-11
@@ -23,7 +23,6 @@ import de.steamwar.bausystem.BauSystem;
|
|||||||
import de.steamwar.bausystem.Permission;
|
import de.steamwar.bausystem.Permission;
|
||||||
import de.steamwar.bausystem.config.BauServer;
|
import de.steamwar.bausystem.config.BauServer;
|
||||||
import de.steamwar.bausystem.utils.BauMemberUpdateEvent;
|
import de.steamwar.bausystem.utils.BauMemberUpdateEvent;
|
||||||
import de.steamwar.inventory.SWItem;
|
|
||||||
import de.steamwar.linkage.Linked;
|
import de.steamwar.linkage.Linked;
|
||||||
import de.steamwar.sql.BauweltMember;
|
import de.steamwar.sql.BauweltMember;
|
||||||
import de.steamwar.techhider.TechHider;
|
import de.steamwar.techhider.TechHider;
|
||||||
@@ -71,18 +70,18 @@ public class SpectatorListener implements Listener {
|
|||||||
materials.add(value);
|
materials.add(value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
materials.add(SWItem.getMaterial("SCULK_SENSOR"));
|
materials.add(Material.SCULK_SENSOR);
|
||||||
materials.add(SWItem.getMaterial("CALIBRATED_SCULK_SENSOR"));
|
materials.add(Material.CALIBRATED_SCULK_SENSOR);
|
||||||
materials.add(SWItem.getMaterial("SCULK_SHRIEKER"));
|
materials.add(Material.SCULK_SHRIEKER);
|
||||||
materials.add(SWItem.getMaterial("AMETHYST_BLOCK"));
|
materials.add(Material.AMETHYST_BLOCK);
|
||||||
materials.add(SWItem.getMaterial("AMETHYST_CLUSTER"));
|
materials.add(Material.AMETHYST_CLUSTER);
|
||||||
materials.add(SWItem.getMaterial("SMALL_AMETHYST_BUG"));
|
materials.add(Material.SMALL_AMETHYST_BUD);
|
||||||
materials.add(SWItem.getMaterial("MEDIUM_AMETHYST_BUG"));
|
materials.add(Material.MEDIUM_AMETHYST_BUD);
|
||||||
materials.add(SWItem.getMaterial("LARGE_AMETHYST_BUG"));
|
materials.add(Material.LARGE_AMETHYST_BUD);
|
||||||
materials.add(Material.TRIPWIRE_HOOK);
|
materials.add(Material.TRIPWIRE_HOOK);
|
||||||
materials.add(Material.TRIPWIRE);
|
materials.add(Material.TRIPWIRE);
|
||||||
materials.add(Material.DAYLIGHT_DETECTOR);
|
materials.add(Material.DAYLIGHT_DETECTOR);
|
||||||
materials.add(SWItem.getMaterial("LIGHTNING_ROD"));
|
materials.add(Material.LIGHTNING_ROD);
|
||||||
materials.add(Material.PISTON);
|
materials.add(Material.PISTON);
|
||||||
materials.add(Material.PISTON_HEAD);
|
materials.add(Material.PISTON_HEAD);
|
||||||
materials.add(Material.MOVING_PISTON);
|
materials.add(Material.MOVING_PISTON);
|
||||||
@@ -96,7 +95,7 @@ public class SpectatorListener implements Listener {
|
|||||||
materials.add(Material.ACTIVATOR_RAIL);
|
materials.add(Material.ACTIVATOR_RAIL);
|
||||||
materials.add(Material.TNT);
|
materials.add(Material.TNT);
|
||||||
materials.add(Material.REDSTONE_ORE);
|
materials.add(Material.REDSTONE_ORE);
|
||||||
materials.add(SWItem.getMaterial("SCAFFOLDING"));
|
materials.add(Material.SCAFFOLDING);
|
||||||
materials.add(Material.WATER);
|
materials.add(Material.WATER);
|
||||||
materials.remove(Material.BARRIER);
|
materials.remove(Material.BARRIER);
|
||||||
materials.remove(Material.STONE);
|
materials.remove(Material.STONE);
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ import com.comphenix.tinyprotocol.TinyProtocol;
|
|||||||
import de.steamwar.bausystem.BauSystem;
|
import de.steamwar.bausystem.BauSystem;
|
||||||
import de.steamwar.bausystem.features.techhider.TechHiderCommand;
|
import de.steamwar.bausystem.features.techhider.TechHiderCommand;
|
||||||
import de.steamwar.bausystem.region.Region;
|
import de.steamwar.bausystem.region.Region;
|
||||||
import de.steamwar.bausystem.utils.PlayerMovementWrapper;
|
|
||||||
import de.steamwar.bausystem.utils.ScoreboardElement;
|
import de.steamwar.bausystem.utils.ScoreboardElement;
|
||||||
import de.steamwar.command.SWCommand;
|
import de.steamwar.command.SWCommand;
|
||||||
import de.steamwar.core.CraftbukkitWrapper;
|
import de.steamwar.core.CraftbukkitWrapper;
|
||||||
@@ -32,8 +31,10 @@ import de.steamwar.linkage.LinkedInstance;
|
|||||||
import de.steamwar.techhider.TechHider;
|
import de.steamwar.techhider.TechHider;
|
||||||
import net.md_5.bungee.api.ChatMessageType;
|
import net.md_5.bungee.api.ChatMessageType;
|
||||||
import net.minecraft.network.protocol.game.ServerboundMovePlayerPacket;
|
import net.minecraft.network.protocol.game.ServerboundMovePlayerPacket;
|
||||||
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.craftbukkit.entity.CraftPlayer;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
@@ -96,19 +97,26 @@ public class XrayCommand extends SWCommand implements Listener, ScoreboardElemen
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
BiFunction<Player, Object, Object> positionSetter = (player, o) -> {
|
BiFunction<Player, ServerboundMovePlayerPacket, Object> positionSetter = (player, packet) -> {
|
||||||
Region region = Region.getRegion(player.getLocation());
|
Region region = Region.getRegion(player.getLocation());
|
||||||
if (hidden.containsKey(region) && hidden.get(region).contains(player)) {
|
if (hidden.containsKey(region) && hidden.get(region).contains(player)) {
|
||||||
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
|
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
|
||||||
PlayerMovementWrapper.impl.setPosition(player, o);
|
ServerPlayer serverPlayer = ((CraftPlayer) player).getHandle();
|
||||||
|
if (packet.hasPos) {
|
||||||
|
serverPlayer.setPosRaw(packet.x, packet.y, packet.z);
|
||||||
|
}
|
||||||
|
if (packet.hasRot) {
|
||||||
|
serverPlayer.setXRot(packet.xRot);
|
||||||
|
serverPlayer.setYRot(packet.yRot);
|
||||||
|
}
|
||||||
}, 0);
|
}, 0);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return o;
|
return packet;
|
||||||
};
|
};
|
||||||
|
|
||||||
TinyProtocol.instance.addFilter(ServerboundMovePlayerPacket.Pos.class, positionSetter);
|
TinyProtocol.instance.addTypedFilter(ServerboundMovePlayerPacket.Pos.class, positionSetter);
|
||||||
TinyProtocol.instance.addFilter(ServerboundMovePlayerPacket.PosRot.class, positionSetter);
|
TinyProtocol.instance.addTypedFilter(ServerboundMovePlayerPacket.PosRot.class, positionSetter);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
|
|||||||
@@ -1,52 +0,0 @@
|
|||||||
/*
|
|
||||||
* This file is a part of the SteamWar software.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2025 SteamWar.de-Serverteam
|
|
||||||
*
|
|
||||||
* 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 de.steamwar.bausystem.utils;
|
|
||||||
|
|
||||||
import de.steamwar.Reflection;
|
|
||||||
import de.steamwar.core.BountifulWrapper;
|
|
||||||
import de.steamwar.entity.REntity;
|
|
||||||
import net.minecraft.network.protocol.game.ServerboundMovePlayerPacket;
|
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
|
||||||
import org.bukkit.craftbukkit.entity.CraftPlayer;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
public class PlayerMovementWrapper {
|
|
||||||
Class<?> teleportPacket = REntity.teleportPacket;
|
|
||||||
Reflection.Field<Integer> teleportEntity = REntity.teleportEntity;
|
|
||||||
BountifulWrapper.PositionSetter teleportPosition = REntity.teleportPosition;
|
|
||||||
|
|
||||||
public static final PlayerMovementWrapper impl = new PlayerMovementWrapper();
|
|
||||||
|
|
||||||
public void setPosition(Player player, Object object) {
|
|
||||||
ServerboundMovePlayerPacket packetPlayInFlying = ((ServerboundMovePlayerPacket) object);
|
|
||||||
ServerPlayer serverPlayer = ((CraftPlayer) player).getHandle();
|
|
||||||
if (packetPlayInFlying.hasPos) {
|
|
||||||
serverPlayer.setPosRaw(packetPlayInFlying.x, packetPlayInFlying.y, packetPlayInFlying.z);
|
|
||||||
}
|
|
||||||
if (packetPlayInFlying.hasRot) {
|
|
||||||
serverPlayer.setXRot(packetPlayInFlying.xRot);
|
|
||||||
serverPlayer.setYRot(packetPlayInFlying.yRot);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object convertToOut(Player player, Object object) {
|
|
||||||
return object;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -6,7 +6,6 @@ import com.github.ajalt.clikt.core.Context
|
|||||||
import com.github.ajalt.clikt.parameters.arguments.argument
|
import com.github.ajalt.clikt.parameters.arguments.argument
|
||||||
import com.github.ajalt.clikt.parameters.arguments.help
|
import com.github.ajalt.clikt.parameters.arguments.help
|
||||||
import com.github.ajalt.clikt.parameters.arguments.multiple
|
import com.github.ajalt.clikt.parameters.arguments.multiple
|
||||||
import com.github.ajalt.clikt.parameters.options.default
|
|
||||||
import com.github.ajalt.clikt.parameters.options.defaultLazy
|
import com.github.ajalt.clikt.parameters.options.defaultLazy
|
||||||
import com.github.ajalt.clikt.parameters.options.flag
|
import com.github.ajalt.clikt.parameters.options.flag
|
||||||
import com.github.ajalt.clikt.parameters.options.help
|
import com.github.ajalt.clikt.parameters.options.help
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import org.jetbrains.exposed.v1.jdbc.JdbcTransaction
|
|||||||
import org.jetbrains.exposed.v1.jdbc.transactions.transaction
|
import org.jetbrains.exposed.v1.jdbc.transactions.transaction
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.sql.ResultSet
|
import java.sql.ResultSet
|
||||||
import java.util.Properties
|
import java.util.*
|
||||||
|
|
||||||
object Database {
|
object Database {
|
||||||
lateinit var host: String
|
lateinit var host: String
|
||||||
|
|||||||
@@ -19,7 +19,10 @@
|
|||||||
|
|
||||||
package de.steamwar.command;
|
package de.steamwar.command;
|
||||||
|
|
||||||
import java.lang.annotation.*;
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
public @interface CommandMetaData {
|
public @interface CommandMetaData {
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ package de.steamwar.command;
|
|||||||
|
|
||||||
import de.steamwar.command.dto.ExecutionIdentifier;
|
import de.steamwar.command.dto.ExecutionIdentifier;
|
||||||
import de.steamwar.command.dto.TestSWCommand;
|
import de.steamwar.command.dto.TestSWCommand;
|
||||||
import de.steamwar.command.dto.TestTypeMapper;
|
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
|
||||||
|
|||||||
@@ -20,8 +20,12 @@
|
|||||||
package de.steamwar.network;
|
package de.steamwar.network;
|
||||||
|
|
||||||
import de.steamwar.network.packets.NetworkPacket;
|
import de.steamwar.network.packets.NetworkPacket;
|
||||||
import de.steamwar.network.packets.client.*;
|
import de.steamwar.network.packets.client.ExecuteCommandPacket;
|
||||||
import de.steamwar.network.packets.common.*;
|
import de.steamwar.network.packets.client.ImALobbyPacket;
|
||||||
|
import de.steamwar.network.packets.client.InventoryCallbackPacket;
|
||||||
|
import de.steamwar.network.packets.client.PrepareSchemPacket;
|
||||||
|
import de.steamwar.network.packets.common.FightEndsPacket;
|
||||||
|
import de.steamwar.network.packets.common.FightInfoPacket;
|
||||||
import de.steamwar.network.packets.server.*;
|
import de.steamwar.network.packets.server.*;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
|
|
||||||
@@ -30,7 +34,7 @@ import java.lang.reflect.Parameter;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static de.steamwar.RandomGenerator.*;
|
import static de.steamwar.RandomGenerator.generateRandom;
|
||||||
|
|
||||||
public class AllPackets {
|
public class AllPackets {
|
||||||
|
|
||||||
|
|||||||
@@ -25,8 +25,9 @@ import org.junit.Test;
|
|||||||
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
|
|
||||||
import static org.hamcrest.MatcherAssert.*;
|
import static org.hamcrest.MatcherAssert.assertThat;
|
||||||
import static org.hamcrest.Matchers.*;
|
import static org.hamcrest.Matchers.equalTo;
|
||||||
|
import static org.hamcrest.Matchers.instanceOf;
|
||||||
|
|
||||||
public class PacketHandlerTest {
|
public class PacketHandlerTest {
|
||||||
|
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ package de.steamwar.network;
|
|||||||
import de.steamwar.network.packets.NetworkPacket;
|
import de.steamwar.network.packets.NetworkPacket;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import static org.hamcrest.Matchers.*;
|
import static org.hamcrest.MatcherAssert.assertThat;
|
||||||
import static org.hamcrest.MatcherAssert.*;
|
import static org.hamcrest.Matchers.equalTo;
|
||||||
|
|
||||||
public class PacketTest {
|
public class PacketTest {
|
||||||
|
|
||||||
|
|||||||
@@ -20,14 +20,10 @@
|
|||||||
package de.steamwar.sql
|
package de.steamwar.sql
|
||||||
|
|
||||||
import de.steamwar.sql.internal.useDb
|
import de.steamwar.sql.internal.useDb
|
||||||
import org.jetbrains.exposed.v1.core.ReferenceOption
|
import org.jetbrains.exposed.v1.core.*
|
||||||
import org.jetbrains.exposed.v1.core.SortOrder
|
|
||||||
import org.jetbrains.exposed.v1.core.and
|
|
||||||
import org.jetbrains.exposed.v1.core.dao.id.CompositeID
|
import org.jetbrains.exposed.v1.core.dao.id.CompositeID
|
||||||
import org.jetbrains.exposed.v1.core.dao.id.CompositeIdTable
|
import org.jetbrains.exposed.v1.core.dao.id.CompositeIdTable
|
||||||
import org.jetbrains.exposed.v1.core.dao.id.EntityID
|
import org.jetbrains.exposed.v1.core.dao.id.EntityID
|
||||||
import org.jetbrains.exposed.v1.core.eq
|
|
||||||
import org.jetbrains.exposed.v1.core.neq
|
|
||||||
import org.jetbrains.exposed.v1.dao.CompositeEntity
|
import org.jetbrains.exposed.v1.dao.CompositeEntity
|
||||||
import org.jetbrains.exposed.v1.dao.CompositeEntityClass
|
import org.jetbrains.exposed.v1.dao.CompositeEntityClass
|
||||||
import org.jetbrains.exposed.v1.javatime.timestamp
|
import org.jetbrains.exposed.v1.javatime.timestamp
|
||||||
|
|||||||
@@ -20,17 +20,12 @@
|
|||||||
package de.steamwar.sql
|
package de.steamwar.sql
|
||||||
|
|
||||||
import de.steamwar.sql.internal.useDb
|
import de.steamwar.sql.internal.useDb
|
||||||
import org.jetbrains.exposed.v1.core.SortOrder
|
import org.jetbrains.exposed.v1.core.*
|
||||||
import org.jetbrains.exposed.v1.core.and
|
|
||||||
import org.jetbrains.exposed.v1.core.count
|
|
||||||
import org.jetbrains.exposed.v1.core.dao.id.CompositeID
|
import org.jetbrains.exposed.v1.core.dao.id.CompositeID
|
||||||
import org.jetbrains.exposed.v1.core.dao.id.CompositeIdTable
|
import org.jetbrains.exposed.v1.core.dao.id.CompositeIdTable
|
||||||
import org.jetbrains.exposed.v1.core.dao.id.EntityID
|
import org.jetbrains.exposed.v1.core.dao.id.EntityID
|
||||||
import org.jetbrains.exposed.v1.core.eq
|
|
||||||
import org.jetbrains.exposed.v1.core.lessSubQuery
|
|
||||||
import org.jetbrains.exposed.v1.dao.CompositeEntity
|
import org.jetbrains.exposed.v1.dao.CompositeEntity
|
||||||
import org.jetbrains.exposed.v1.dao.CompositeEntityClass
|
import org.jetbrains.exposed.v1.dao.CompositeEntityClass
|
||||||
import org.jetbrains.exposed.v1.dao.flushCache
|
|
||||||
import org.jetbrains.exposed.v1.javatime.CurrentTimestamp
|
import org.jetbrains.exposed.v1.javatime.CurrentTimestamp
|
||||||
import org.jetbrains.exposed.v1.javatime.timestamp
|
import org.jetbrains.exposed.v1.javatime.timestamp
|
||||||
import org.jetbrains.exposed.v1.jdbc.select
|
import org.jetbrains.exposed.v1.jdbc.select
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ import org.jetbrains.exposed.v1.core.dao.id.EntityID
|
|||||||
import org.jetbrains.exposed.v1.core.eq
|
import org.jetbrains.exposed.v1.core.eq
|
||||||
import org.jetbrains.exposed.v1.dao.CompositeEntity
|
import org.jetbrains.exposed.v1.dao.CompositeEntity
|
||||||
import org.jetbrains.exposed.v1.dao.CompositeEntityClass
|
import org.jetbrains.exposed.v1.dao.CompositeEntityClass
|
||||||
import org.jetbrains.exposed.v1.jdbc.insert
|
|
||||||
|
|
||||||
object PersonalKitTable: CompositeIdTable("PersonalKit") {
|
object PersonalKitTable: CompositeIdTable("PersonalKit") {
|
||||||
val userId = reference("UserId", SteamwarUserTable)
|
val userId = reference("UserId", SteamwarUserTable)
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ import org.intellij.lang.annotations.Language
|
|||||||
import org.jetbrains.exposed.v1.core.ColumnType
|
import org.jetbrains.exposed.v1.core.ColumnType
|
||||||
import org.jetbrains.exposed.v1.core.Expression
|
import org.jetbrains.exposed.v1.core.Expression
|
||||||
import org.jetbrains.exposed.v1.core.ResultRow
|
import org.jetbrains.exposed.v1.core.ResultRow
|
||||||
import org.jetbrains.exposed.v1.core.StdOutSqlLogger
|
|
||||||
import org.jetbrains.exposed.v1.core.statements.StatementType
|
import org.jetbrains.exposed.v1.core.statements.StatementType
|
||||||
import org.jetbrains.exposed.v1.dao.IntEntity
|
import org.jetbrains.exposed.v1.dao.IntEntity
|
||||||
import org.jetbrains.exposed.v1.dao.IntEntityClass
|
import org.jetbrains.exposed.v1.dao.IntEntityClass
|
||||||
|
|||||||
@@ -51,9 +51,8 @@ public class GUI {
|
|||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
private static void addTeamRequest(Player p, SWInventory inv, int pos, FightTeam team) {
|
private static void addTeamRequest(Player p, SWInventory inv, int pos, FightTeam team) {
|
||||||
byte colorCode = ColorConverter.chat2dye(team.getColor()).getDyeData();
|
|
||||||
String name = team.getLeader() != null ? team.getLeader().getEntity().getName() : team.getName();
|
String name = team.getLeader() != null ? team.getLeader().getEntity().getName() : team.getName();
|
||||||
inv.setItem(pos, SWItem.getDye(colorCode), colorCode, msg.parse("JOIN_REQUEST_TEAM", p, team.getColor() + name), click -> {
|
inv.setItem(pos, ColorConverter.chat2dye(team.getColor()), msg.parse("JOIN_REQUEST_TEAM", p, team.getColor() + name), click -> {
|
||||||
p.closeInventory();
|
p.closeInventory();
|
||||||
|
|
||||||
if(ArenaMode.ManualTeams.contains(Config.mode) && team.canbeLeader(p))
|
if(ArenaMode.ManualTeams.contains(Config.mode) && team.canbeLeader(p))
|
||||||
@@ -226,7 +225,7 @@ public class GUI {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (Fight.publicOnly()) {
|
if (Fight.publicOnly()) {
|
||||||
inv.setItem(row * 9, SWItem.getDye(8), (byte)8, msg.parse("SCHEM_PRIVATE_FORBIDDEN", p, type.name()), (ClickType click)->{});
|
inv.setItem(row * 9, Material.GRAY_DYE, (byte)8, msg.parse("SCHEM_PRIVATE_FORBIDDEN", p, type.name()), (ClickType click)->{});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -238,11 +237,11 @@ public class GUI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (SchematicNode.getAllAccessibleSchematicsOfType(SteamwarUser.get(p.getUniqueId()).getId(), type.toDB()).isEmpty() && !Config.test()) {
|
if (SchematicNode.getAllAccessibleSchematicsOfType(SteamwarUser.get(p.getUniqueId()).getId(), type.toDB()).isEmpty() && !Config.test()) {
|
||||||
inv.setItem(row * 9, SWItem.getDye(8), (byte)8, msg.parse("SCHEM_NO_PRIVATE", p, type.name()), (ClickType click)->{});
|
inv.setItem(row * 9, Material.GRAY_DYE, (byte)8, msg.parse("SCHEM_NO_PRIVATE", p, type.name()), (ClickType click)->{});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
inv.setItem(row * 9, SWItem.getMaterial("CAULDRON_ITEM"), msg.parse("SCHEM_PRIVATE", p, type.name()), (ClickType click) -> {
|
inv.setItem(row * 9, Material.CAULDRON, msg.parse("SCHEM_PRIVATE", p, type.name()), (ClickType click) -> {
|
||||||
p.closeInventory();
|
p.closeInventory();
|
||||||
schemDialog(p, type, false, false);
|
schemDialog(p, type, false, false);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -149,7 +149,7 @@ public class FightSchematic extends StateDependent {
|
|||||||
|
|
||||||
private void replaceTeamColor(Clipboard clipboard) {
|
private void replaceTeamColor(Clipboard clipboard) {
|
||||||
try {
|
try {
|
||||||
WorldeditWrapper.impl.replaceTeamColor(clipboard, ArenaMode.AntiPrepare.contains(Config.mode) ? ColorConverter.chat2dye(team.getColor()) : DyeColor.PINK);
|
WorldeditWrapper.impl.replaceTeamColor(clipboard, ArenaMode.AntiPrepare.contains(Config.mode) ? ColorConverter.chat2dyeColor(team.getColor()) : DyeColor.PINK);
|
||||||
} catch (WorldEditException e) {
|
} catch (WorldEditException e) {
|
||||||
Bukkit.getLogger().log(Level.SEVERE, "Could not recolor schematic", e);
|
Bukkit.getLogger().log(Level.SEVERE, "Could not recolor schematic", e);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -78,19 +78,19 @@ public class FightTeam {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(Config.test())
|
if(Config.test())
|
||||||
notReadyKit.setItem(5, "CHOOSE_SCHEMATIC", new ItemBuilder(SWItem.getMaterial("CAULDRON_ITEM")).enchant().build(), GUI::preSchemDialog);
|
notReadyKit.setItem(5, "CHOOSE_SCHEMATIC", new ItemBuilder(Material.CAULDRON).enchant().build(), GUI::preSchemDialog);
|
||||||
|
|
||||||
notReadyKit.setItem(3, "MANAGE_PLAYERS", SWItem.getPlayerSkull("AdmiralSeekrank").getItemStack(), GUI::managePlayers);
|
notReadyKit.setItem(3, "MANAGE_PLAYERS", SWItem.getPlayerSkull("AdmiralSeekrank").getItemStack(), GUI::managePlayers);
|
||||||
notReadyKit.setItem(4, "TEAM_NOT_READY", new ItemBuilder(SWItem.getDye(10), (short) 10).enchant().build(), player -> Objects.requireNonNull(Fight.getPlayerTeam(player)).setReady(true));
|
notReadyKit.setItem(4, "TEAM_NOT_READY", new ItemBuilder(Material.LIME_DYE, (short) 10).enchant().build(), player -> Objects.requireNonNull(Fight.getPlayerTeam(player)).setReady(true));
|
||||||
}
|
}
|
||||||
private static final HotbarKit chooseSchemKit = new HotbarKit(notReadyKit);
|
private static final HotbarKit chooseSchemKit = new HotbarKit(notReadyKit);
|
||||||
static {
|
static {
|
||||||
chooseSchemKit.setItem(4, "CHOOSE_SCHEMATIC", new ItemBuilder(SWItem.getMaterial("CAULDRON_ITEM")).enchant().build(), GUI::preSchemDialog);
|
chooseSchemKit.setItem(4, "CHOOSE_SCHEMATIC", new ItemBuilder(Material.CAULDRON).enchant().build(), GUI::preSchemDialog);
|
||||||
}
|
}
|
||||||
private static final HotbarKit readyKit = new HotbarKit(memberKit);
|
private static final HotbarKit readyKit = new HotbarKit(memberKit);
|
||||||
static {
|
static {
|
||||||
readyKit.setItem(1, null, null, null);
|
readyKit.setItem(1, null, null, null);
|
||||||
readyKit.setItem(4, "TEAM_READY", new ItemBuilder(SWItem.getDye(8), (short) 8).enchant().build(), player -> Objects.requireNonNull(Fight.getPlayerTeam(player)).setReady(false));
|
readyKit.setItem(4, "TEAM_READY", new ItemBuilder(Material.GRAY_DYE, (short) 8).enchant().build(), player -> Objects.requireNonNull(Fight.getPlayerTeam(player)).setReady(false));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
|
|||||||
@@ -295,7 +295,7 @@ public class Kit {
|
|||||||
int pos = 44;
|
int pos = 44;
|
||||||
while(it.hasNext()){
|
while(it.hasNext()){
|
||||||
PotionEffect effect = it.next();
|
PotionEffect effect = it.next();
|
||||||
SWItem item = new SWItem(SWItem.getMaterial("POTION"), effect.getType().getName());
|
SWItem item = new SWItem(Material.POTION, effect.getType().getName());
|
||||||
inv.setItem(pos, item);
|
inv.setItem(pos, item);
|
||||||
pos--;
|
pos--;
|
||||||
}
|
}
|
||||||
@@ -303,12 +303,12 @@ public class Kit {
|
|||||||
|
|
||||||
inv.setCallback(-999, click -> player.closeInventory());
|
inv.setCallback(-999, click -> player.closeInventory());
|
||||||
if(Config.GameModeConfig.Kits.PersonalKits){
|
if(Config.GameModeConfig.Kits.PersonalKits){
|
||||||
inv.setItem(49, SWItem.getMaterial("WOOD_AXE"), FightSystem.getMessage().parse("KIT_PREVIEW_EDIT", player), clickType -> PersonalKitCreator.openKitCreator(player, PersonalKit.get(SteamwarUser.get(player.getUniqueId()).getId(), Config.GameModeConfig.Schematic.Type.toDB(), name)));
|
inv.setItem(49, Material.WOODEN_AXE, FightSystem.getMessage().parse("KIT_PREVIEW_EDIT", player), clickType -> PersonalKitCreator.openKitCreator(player, PersonalKit.get(SteamwarUser.get(player.getUniqueId()).getId(), Config.GameModeConfig.Schematic.Type.toDB(), name)));
|
||||||
inv.setItem(53, Material.BARRIER, FightSystem.getMessage().parse("KIT_PREVIEW_DELETE", player), clickType -> {
|
inv.setItem(53, Material.BARRIER, FightSystem.getMessage().parse("KIT_PREVIEW_DELETE", player), clickType -> {
|
||||||
player.closeInventory();
|
player.closeInventory();
|
||||||
SWInventory conf = new SWInventory(player, 9, FightSystem.getMessage().parse("KIT_DELETION_CONFIRMATION", player));
|
SWInventory conf = new SWInventory(player, 9, FightSystem.getMessage().parse("KIT_DELETION_CONFIRMATION", player));
|
||||||
conf.setItem(8, SWItem.getDye(1), FightSystem.getMessage().parse("KIT_DELETION_ABORT", player), click -> player.closeInventory());
|
conf.setItem(8, Material.RED_DYE, FightSystem.getMessage().parse("KIT_DELETION_ABORT", player), click -> player.closeInventory());
|
||||||
conf.setItem(0, SWItem.getDye(10), FightSystem.getMessage().parse("KIT_DELETION_DELETE", player), click -> {
|
conf.setItem(0, Material.LIME_DYE, FightSystem.getMessage().parse("KIT_DELETION_DELETE", player), click -> {
|
||||||
player.closeInventory();
|
player.closeInventory();
|
||||||
SteamwarUser user = SteamwarUser.get(player.getUniqueId());
|
SteamwarUser user = SteamwarUser.get(player.getUniqueId());
|
||||||
PersonalKit kit = PersonalKit.get(user.getId(), Config.GameModeConfig.Schematic.Type.toDB(), name);
|
PersonalKit kit = PersonalKit.get(user.getId(), Config.GameModeConfig.Schematic.Type.toDB(), name);
|
||||||
@@ -327,11 +327,11 @@ public class Kit {
|
|||||||
conf.open();
|
conf.open();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
inv.setItem(45, SWItem.getDye(10), (byte)10, FightSystem.getMessage().parse("KIT_PREVIEW_CHOOSE", player), click -> {
|
inv.setItem(45, Material.LIME_DYE, (byte)10, FightSystem.getMessage().parse("KIT_PREVIEW_CHOOSE", player), click -> {
|
||||||
Commands.kit(player, name);
|
Commands.kit(player, name);
|
||||||
player.closeInventory();
|
player.closeInventory();
|
||||||
});
|
});
|
||||||
inv.setItem(53, SWItem.getDye(1), (byte)1, FightSystem.getMessage().parse("KIT_PREVIEW_BACK", player), click -> GUI.kitSelection(player, ""));
|
inv.setItem(53, Material.RED_DYE, (byte)1, FightSystem.getMessage().parse("KIT_PREVIEW_BACK", player), click -> GUI.kitSelection(player, ""));
|
||||||
inv.open();
|
inv.open();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,6 @@
|
|||||||
|
|
||||||
package de.steamwar.fightsystem.listener;
|
package de.steamwar.fightsystem.listener;
|
||||||
|
|
||||||
import de.steamwar.Reflection;
|
|
||||||
import de.steamwar.fightsystem.Config;
|
import de.steamwar.fightsystem.Config;
|
||||||
import de.steamwar.fightsystem.states.FightState;
|
import de.steamwar.fightsystem.states.FightState;
|
||||||
import de.steamwar.fightsystem.states.StateDependentTask;
|
import de.steamwar.fightsystem.states.StateDependentTask;
|
||||||
|
|||||||
+2
-1
@@ -43,6 +43,7 @@ import de.steamwar.techhider.BlockIds;
|
|||||||
import net.md_5.bungee.api.ChatMessageType;
|
import net.md_5.bungee.api.ChatMessageType;
|
||||||
import net.md_5.bungee.api.chat.BaseComponent;
|
import net.md_5.bungee.api.chat.BaseComponent;
|
||||||
import net.md_5.bungee.api.chat.TextComponent;
|
import net.md_5.bungee.api.chat.TextComponent;
|
||||||
|
import net.minecraft.world.entity.Pose;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@@ -291,7 +292,7 @@ public class PacketProcessor implements Listener {
|
|||||||
int entityId = source.readInt();
|
int entityId = source.readInt();
|
||||||
boolean sneaking = source.readBoolean();
|
boolean sneaking = source.readBoolean();
|
||||||
|
|
||||||
execSync(() -> entities.get(entityId).setPose(sneaking ? de.steamwar.core.FlatteningWrapper.EntityPose.SNEAKING : de.steamwar.core.FlatteningWrapper.EntityPose.NORMAL));
|
execSync(() -> entities.get(entityId).setPose(sneaking ? Pose.CROUCHING : Pose.STANDING));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void entityAnimation() throws IOException {
|
private void entityAnimation() throws IOException {
|
||||||
|
|||||||
+41
-18
@@ -21,6 +21,7 @@ package de.steamwar.fightsystem.utils;
|
|||||||
|
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.DyeColor;
|
import org.bukkit.DyeColor;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
|
||||||
import java.util.EnumMap;
|
import java.util.EnumMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -28,28 +29,50 @@ import java.util.Map;
|
|||||||
public class ColorConverter {
|
public class ColorConverter {
|
||||||
private ColorConverter(){}
|
private ColorConverter(){}
|
||||||
|
|
||||||
private static final Map<ChatColor, DyeColor> chat2dye = new EnumMap<>(ChatColor.class);
|
private static final Map<ChatColor, DyeColor> chat2dyeColor = new EnumMap<>(ChatColor.class);
|
||||||
|
private static final Map<ChatColor, Material> chat2dye = new EnumMap<>(ChatColor.class);
|
||||||
|
|
||||||
static{
|
static{
|
||||||
chat2dye.put(ChatColor.WHITE, DyeColor.WHITE);
|
chat2dyeColor.put(ChatColor.WHITE, DyeColor.WHITE);
|
||||||
chat2dye.put(ChatColor.GOLD, DyeColor.ORANGE);
|
chat2dyeColor.put(ChatColor.GOLD, DyeColor.ORANGE);
|
||||||
chat2dye.put(ChatColor.LIGHT_PURPLE, DyeColor.MAGENTA);
|
chat2dyeColor.put(ChatColor.LIGHT_PURPLE, DyeColor.MAGENTA);
|
||||||
chat2dye.put(ChatColor.BLUE, DyeColor.LIGHT_BLUE);
|
chat2dyeColor.put(ChatColor.BLUE, DyeColor.LIGHT_BLUE);
|
||||||
chat2dye.put(ChatColor.YELLOW, DyeColor.YELLOW);
|
chat2dyeColor.put(ChatColor.YELLOW, DyeColor.YELLOW);
|
||||||
chat2dye.put(ChatColor.GREEN, DyeColor.LIME);
|
chat2dyeColor.put(ChatColor.GREEN, DyeColor.LIME);
|
||||||
chat2dye.put(ChatColor.RED, DyeColor.RED);
|
chat2dyeColor.put(ChatColor.RED, DyeColor.RED);
|
||||||
chat2dye.put(ChatColor.DARK_GRAY, DyeColor.GRAY);
|
chat2dyeColor.put(ChatColor.DARK_GRAY, DyeColor.GRAY);
|
||||||
chat2dye.put(ChatColor.DARK_AQUA, DyeColor.CYAN);
|
chat2dyeColor.put(ChatColor.DARK_AQUA, DyeColor.CYAN);
|
||||||
chat2dye.put(ChatColor.DARK_PURPLE, DyeColor.PURPLE);
|
chat2dyeColor.put(ChatColor.DARK_PURPLE, DyeColor.PURPLE);
|
||||||
chat2dye.put(ChatColor.DARK_BLUE, DyeColor.BLUE);
|
chat2dyeColor.put(ChatColor.DARK_BLUE, DyeColor.BLUE);
|
||||||
chat2dye.put(ChatColor.AQUA, DyeColor.CYAN);
|
chat2dyeColor.put(ChatColor.AQUA, DyeColor.CYAN);
|
||||||
chat2dye.put(ChatColor.DARK_GREEN, DyeColor.GREEN);
|
chat2dyeColor.put(ChatColor.DARK_GREEN, DyeColor.GREEN);
|
||||||
chat2dye.put(ChatColor.DARK_RED, DyeColor.RED);
|
chat2dyeColor.put(ChatColor.DARK_RED, DyeColor.RED);
|
||||||
chat2dye.put(ChatColor.BLACK, DyeColor.BLACK);
|
chat2dyeColor.put(ChatColor.BLACK, DyeColor.BLACK);
|
||||||
chat2dye.put(ChatColor.GRAY, FlatteningWrapper.impl.getSilver());
|
chat2dyeColor.put(ChatColor.GRAY, DyeColor.LIGHT_GRAY);
|
||||||
|
|
||||||
|
chat2dye.put(ChatColor.WHITE, Material.WHITE_DYE);
|
||||||
|
chat2dye.put(ChatColor.GOLD, Material.ORANGE_DYE);
|
||||||
|
chat2dye.put(ChatColor.LIGHT_PURPLE, Material.MAGENTA_DYE);
|
||||||
|
chat2dye.put(ChatColor.BLUE, Material.LIGHT_BLUE_DYE);
|
||||||
|
chat2dye.put(ChatColor.YELLOW, Material.YELLOW_DYE);
|
||||||
|
chat2dye.put(ChatColor.GREEN, Material.LIME_DYE);
|
||||||
|
chat2dye.put(ChatColor.RED, Material.RED_DYE);
|
||||||
|
chat2dye.put(ChatColor.DARK_GRAY, Material.GRAY_DYE);
|
||||||
|
chat2dye.put(ChatColor.DARK_AQUA, Material.CYAN_DYE);
|
||||||
|
chat2dye.put(ChatColor.DARK_PURPLE, Material.PURPLE_DYE);
|
||||||
|
chat2dye.put(ChatColor.DARK_BLUE, Material.BLUE_DYE);
|
||||||
|
chat2dye.put(ChatColor.AQUA, Material.CYAN_DYE);
|
||||||
|
chat2dye.put(ChatColor.DARK_GREEN, Material.GREEN_DYE);
|
||||||
|
chat2dye.put(ChatColor.DARK_RED, Material.RED_DYE);
|
||||||
|
chat2dye.put(ChatColor.BLACK, Material.BLACK_DYE);
|
||||||
|
chat2dye.put(ChatColor.GRAY, Material.LIGHT_GRAY_DYE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DyeColor chat2dye(ChatColor color){
|
public static DyeColor chat2dyeColor(ChatColor color){
|
||||||
|
return chat2dyeColor.get(color);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Material chat2dye(ChatColor color){
|
||||||
return chat2dye.get(color);
|
return chat2dye.get(color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,6 @@
|
|||||||
|
|
||||||
package de.steamwar.fightsystem.utils;
|
package de.steamwar.fightsystem.utils;
|
||||||
|
|
||||||
import org.bukkit.DyeColor;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
@@ -36,10 +35,6 @@ import org.bukkit.inventory.meta.ItemMeta;
|
|||||||
public class FlatteningWrapper {
|
public class FlatteningWrapper {
|
||||||
public static final FlatteningWrapper impl = new FlatteningWrapper();
|
public static final FlatteningWrapper impl = new FlatteningWrapper();
|
||||||
|
|
||||||
public DyeColor getSilver() {
|
|
||||||
return DyeColor.LIGHT_GRAY;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isWater(Block block) {
|
public boolean isWater(Block block) {
|
||||||
if(block.getType() == Material.WATER)
|
if(block.getType() == Material.WATER)
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
+1
-2
@@ -25,7 +25,6 @@ import de.steamwar.fightsystem.fight.FightTeam;
|
|||||||
import de.steamwar.fightsystem.states.FightState;
|
import de.steamwar.fightsystem.states.FightState;
|
||||||
import de.steamwar.fightsystem.states.StateDependentTask;
|
import de.steamwar.fightsystem.states.StateDependentTask;
|
||||||
import de.steamwar.fightsystem.utils.Message;
|
import de.steamwar.fightsystem.utils.Message;
|
||||||
import de.steamwar.inventory.SWItem;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
|
|
||||||
@@ -37,7 +36,7 @@ import java.util.function.Predicate;
|
|||||||
|
|
||||||
public abstract class WinconditionBlocks extends Wincondition implements PrintableWincondition {
|
public abstract class WinconditionBlocks extends Wincondition implements PrintableWincondition {
|
||||||
|
|
||||||
public static final Material PUMPKIN_LANTERN = SWItem.getMaterial("JACK_O_LANTERN");
|
public static final Material PUMPKIN_LANTERN = Material.JACK_O_LANTERN;
|
||||||
|
|
||||||
private final Map<FightTeam, TeamBlocks> teamMap = new HashMap<>();
|
private final Map<FightTeam, TeamBlocks> teamMap = new HashMap<>();
|
||||||
private final String barMessage;
|
private final String barMessage;
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ import de.steamwar.entity.REntity;
|
|||||||
import de.steamwar.entity.REntityServer;
|
import de.steamwar.entity.REntityServer;
|
||||||
import de.steamwar.lobby.LobbySystem;
|
import de.steamwar.lobby.LobbySystem;
|
||||||
import de.steamwar.lobby.util.LeaderboardManager;
|
import de.steamwar.lobby.util.LeaderboardManager;
|
||||||
import de.steamwar.sql.Leaderboard;
|
|
||||||
import de.steamwar.sql.SteamwarUser;
|
import de.steamwar.sql.SteamwarUser;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
|||||||
@@ -28,7 +28,10 @@ import de.steamwar.lobby.particle.particles.custom.CustomPlayerParticle;
|
|||||||
import de.steamwar.lobby.particle.particles.custom.CustomTeamParticle;
|
import de.steamwar.lobby.particle.particles.custom.CustomTeamParticle;
|
||||||
import de.steamwar.lobby.special.easter.EggHunt;
|
import de.steamwar.lobby.special.easter.EggHunt;
|
||||||
import de.steamwar.lobby.util.LobbyPlayer;
|
import de.steamwar.lobby.util.LobbyPlayer;
|
||||||
import de.steamwar.sql.*;
|
import de.steamwar.sql.Event;
|
||||||
|
import de.steamwar.sql.SteamwarUser;
|
||||||
|
import de.steamwar.sql.TeamTeilnahme;
|
||||||
|
import de.steamwar.sql.UserConfig;
|
||||||
import lombok.experimental.UtilityClass;
|
import lombok.experimental.UtilityClass;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|||||||
@@ -22,7 +22,10 @@ package de.steamwar.lobby.particle;
|
|||||||
import de.steamwar.lobby.LobbySystem;
|
import de.steamwar.lobby.LobbySystem;
|
||||||
import de.steamwar.lobby.special.easter.EggDifficulty;
|
import de.steamwar.lobby.special.easter.EggDifficulty;
|
||||||
import de.steamwar.lobby.special.easter.EggHunt;
|
import de.steamwar.lobby.special.easter.EggHunt;
|
||||||
import de.steamwar.sql.*;
|
import de.steamwar.sql.Event;
|
||||||
|
import de.steamwar.sql.SteamwarUser;
|
||||||
|
import de.steamwar.sql.Team;
|
||||||
|
import de.steamwar.sql.UserPerm;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import de.steamwar.inventory.SWItem;
|
|||||||
import de.steamwar.inventory.SWListInv;
|
import de.steamwar.inventory.SWListInv;
|
||||||
import de.steamwar.lobby.LobbySystem;
|
import de.steamwar.lobby.LobbySystem;
|
||||||
import de.steamwar.sql.UserConfig;
|
import de.steamwar.sql.UserConfig;
|
||||||
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@@ -60,13 +61,13 @@ public class EggHuntCommand extends SWCommand {
|
|||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
SWListInv<Egg> inv = new SWListInv<>(player, LobbySystem.getMessage().parse("EASTER_EGG_MENU", player, foundCount.get(), EggHunt.getEggList().size()), false, entries, (clickType, egg) -> {
|
SWListInv<Egg> inv = new SWListInv<>(player, LobbySystem.getMessage().parse("EASTER_EGG_MENU", player, foundCount.get(), EggHunt.getEggList().size()), false, entries, (clickType, egg) -> {
|
||||||
});
|
});
|
||||||
inv.setItem(49, new SWItem(SWItem.getDye(15), (byte) 15, LobbySystem.getMessage().parse(Selection.ALL.key, player), Collections.emptyList(), selection == Selection.ALL, clickType -> {
|
inv.setItem(49, new SWItem(Material.WHITE_DYE, (byte) 15, LobbySystem.getMessage().parse(Selection.ALL.key, player), Collections.emptyList(), selection == Selection.ALL, clickType -> {
|
||||||
genericCommand(player, Selection.ALL);
|
genericCommand(player, Selection.ALL);
|
||||||
}));
|
}));
|
||||||
inv.setItem(48, new SWItem(SWItem.getDye(1), (byte) 1, LobbySystem.getMessage().parse(Selection.NOT_FOUND.key, player), Collections.emptyList(), selection == Selection.NOT_FOUND, clickType -> {
|
inv.setItem(48, new SWItem(Material.RED_DYE, (byte) 1, LobbySystem.getMessage().parse(Selection.NOT_FOUND.key, player), Collections.emptyList(), selection == Selection.NOT_FOUND, clickType -> {
|
||||||
genericCommand(player, Selection.NOT_FOUND);
|
genericCommand(player, Selection.NOT_FOUND);
|
||||||
}));
|
}));
|
||||||
inv.setItem(50, new SWItem(SWItem.getDye(2), (byte) 2, LobbySystem.getMessage().parse(Selection.FOUND.key, player), Collections.emptyList(), selection == Selection.FOUND, clickType -> {
|
inv.setItem(50, new SWItem(Material.GREEN_DYE, (byte) 2, LobbySystem.getMessage().parse(Selection.FOUND.key, player), Collections.emptyList(), selection == Selection.FOUND, clickType -> {
|
||||||
genericCommand(player, Selection.FOUND);
|
genericCommand(player, Selection.FOUND);
|
||||||
}));
|
}));
|
||||||
inv.open();
|
inv.open();
|
||||||
|
|||||||
@@ -27,11 +27,8 @@ import org.bukkit.event.EventHandler;
|
|||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
import org.bukkit.scoreboard.DisplaySlot;
|
|
||||||
import org.bukkit.scoreboard.Objective;
|
|
||||||
import org.bukkit.scoreboard.Scoreboard;
|
import org.bukkit.scoreboard.Scoreboard;
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ package de.steamwar.misslewars.countdowns;
|
|||||||
|
|
||||||
import de.steamwar.linkage.Linked;
|
import de.steamwar.linkage.Linked;
|
||||||
import de.steamwar.misslewars.*;
|
import de.steamwar.misslewars.*;
|
||||||
import de.steamwar.misslewars.listener.JoinListener;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.scheduler.BukkitTask;
|
import org.bukkit.scheduler.BukkitTask;
|
||||||
|
|
||||||
|
|||||||
@@ -30,8 +30,6 @@ import com.sk89q.worldedit.function.operation.Operations;
|
|||||||
import com.sk89q.worldedit.math.BlockVector3;
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.math.transform.AffineTransform;
|
import com.sk89q.worldedit.math.transform.AffineTransform;
|
||||||
import com.sk89q.worldedit.session.ClipboardHolder;
|
import com.sk89q.worldedit.session.ClipboardHolder;
|
||||||
import com.sk89q.worldedit.util.SideEffect;
|
|
||||||
import com.sk89q.worldedit.util.SideEffectSet;
|
|
||||||
import com.sk89q.worldedit.world.World;
|
import com.sk89q.worldedit.world.World;
|
||||||
import com.sk89q.worldedit.world.block.BlockTypes;
|
import com.sk89q.worldedit.world.block.BlockTypes;
|
||||||
import de.steamwar.misslewars.MissileWars;
|
import de.steamwar.misslewars.MissileWars;
|
||||||
|
|||||||
@@ -22,23 +22,18 @@ package de.steamwar.misslewars.listener;
|
|||||||
import de.steamwar.linkage.Linked;
|
import de.steamwar.linkage.Linked;
|
||||||
import de.steamwar.misslewars.Config;
|
import de.steamwar.misslewars.Config;
|
||||||
import de.steamwar.misslewars.FightState;
|
import de.steamwar.misslewars.FightState;
|
||||||
import de.steamwar.misslewars.MWTeam;
|
|
||||||
import de.steamwar.misslewars.MissileWars;
|
import de.steamwar.misslewars.MissileWars;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.entity.EntityPickupItemEvent;
|
|
||||||
import org.bukkit.event.entity.FoodLevelChangeEvent;
|
import org.bukkit.event.entity.FoodLevelChangeEvent;
|
||||||
import org.bukkit.event.entity.ItemDespawnEvent;
|
|
||||||
import org.bukkit.event.inventory.InventoryOpenEvent;
|
import org.bukkit.event.inventory.InventoryOpenEvent;
|
||||||
import org.bukkit.event.inventory.InventoryType;
|
import org.bukkit.event.inventory.InventoryType;
|
||||||
import org.bukkit.event.player.PlayerDropItemEvent;
|
|
||||||
import org.bukkit.event.player.PlayerMoveEvent;
|
import org.bukkit.event.player.PlayerMoveEvent;
|
||||||
import org.bukkit.event.player.PlayerPickupArrowEvent;
|
import org.bukkit.event.player.PlayerPickupArrowEvent;
|
||||||
|
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@Linked
|
@Linked
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ import de.steamwar.misslewars.scripts.utils.JsonUtils;
|
|||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.LingeringPotion;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.Damageable;
|
import org.bukkit.inventory.meta.Damageable;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ import de.steamwar.misslewars.scripts.RunnableScript;
|
|||||||
import de.steamwar.misslewars.scripts.RunnableScriptEvent;
|
import de.steamwar.misslewars.scripts.RunnableScriptEvent;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
|
|
||||||
public class CooldownScript implements RunnableScript {
|
public class CooldownScript implements RunnableScript {
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ import com.sk89q.worldedit.entity.Entity;
|
|||||||
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
||||||
import com.sk89q.worldedit.math.BlockVector3;
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.world.block.BaseBlock;
|
import com.sk89q.worldedit.world.block.BaseBlock;
|
||||||
import de.steamwar.core.Core;
|
|
||||||
import de.steamwar.sql.GameModeConfig;
|
import de.steamwar.sql.GameModeConfig;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
|
|||||||
@@ -19,7 +19,6 @@
|
|||||||
|
|
||||||
package de.steamwar.schematicsystem.autocheck;
|
package de.steamwar.schematicsystem.autocheck;
|
||||||
|
|
||||||
import de.steamwar.core.Core;
|
|
||||||
import de.steamwar.schematicsystem.SchematicSystem;
|
import de.steamwar.schematicsystem.SchematicSystem;
|
||||||
import de.steamwar.sql.GameModeConfig;
|
import de.steamwar.sql.GameModeConfig;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
|
|||||||
+15
-15
@@ -94,7 +94,7 @@ public class GUI {
|
|||||||
SteamwarUser user = getUser(player);
|
SteamwarUser user = getUser(player);
|
||||||
SWInventory inv = new SWInventory(player, 9 * 2, node.generateBreadcrumbs(user));
|
SWInventory inv = new SWInventory(player, 9 * 2, node.generateBreadcrumbs(user));
|
||||||
if(!node.isDir()) {
|
if(!node.isDir()) {
|
||||||
inv.setItem(0, SWItem.getMaterial("WOOD_AXE"), SchematicSystem.MESSAGE.parse("GUI_INFO_LOAD", player), Arrays.asList(
|
inv.setItem(0, Material.WOODEN_AXE, SchematicSystem.MESSAGE.parse("GUI_INFO_LOAD", player), Arrays.asList(
|
||||||
SchematicSystem.MESSAGE.parse("GUI_LOAD_LATEST", player),
|
SchematicSystem.MESSAGE.parse("GUI_LOAD_LATEST", player),
|
||||||
SchematicSystem.MESSAGE.parse("GUI_LOAD_REVISION", player)
|
SchematicSystem.MESSAGE.parse("GUI_LOAD_REVISION", player)
|
||||||
), false, click -> {
|
), false, click -> {
|
||||||
@@ -119,14 +119,14 @@ public class GUI {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
inv.setItem(9, new SWItem(SWItem.getMaterial("LEASH"), SchematicSystem.MESSAGE.parse("GUI_INFO_BACK", player), clickType -> {
|
inv.setItem(9, new SWItem(Material.LEAD, SchematicSystem.MESSAGE.parse("GUI_INFO_BACK", player), clickType -> {
|
||||||
back.reOpen();
|
back.reOpen();
|
||||||
}).setCustomModelData(CMDs.Schematic.BACK));
|
}).setCustomModelData(CMDs.Schematic.BACK));
|
||||||
|
|
||||||
if(node.getOwner() == user.getId()){
|
if(node.getOwner() == user.getId()){
|
||||||
if(!node.isDir() && node.getSchemtype().writeable()){
|
if(!node.isDir() && node.getSchemtype().writeable()){
|
||||||
CheckedSchematic.getLastDeclinedOfNode(node.getId()).stream().findFirst().ifPresent(checkedSchematic ->
|
CheckedSchematic.getLastDeclinedOfNode(node.getId()).stream().findFirst().ifPresent(checkedSchematic ->
|
||||||
inv.setItem(1, SWItem.getDye(10), (byte) 10, SchematicSystem.MESSAGE.parse("GUI_INFO_STATUS", player, node.getSchemtype().name()), Collections.singletonList(SchematicSystem.MESSAGE.parse("GUI_INFO_STATUS_LORE", player, checkedSchematic.getDeclineReason().replaceAll("&", "§"))), false, click -> {}));
|
inv.setItem(1, Material.LIME_DYE, (byte) 10, SchematicSystem.MESSAGE.parse("GUI_INFO_STATUS", player, node.getSchemtype().name()), Collections.singletonList(SchematicSystem.MESSAGE.parse("GUI_INFO_STATUS_LORE", player, checkedSchematic.getDeclineReason().replaceAll("&", "§"))), false, click -> {}));
|
||||||
}
|
}
|
||||||
Material mat = SWItem.getMaterial(node.getItem());
|
Material mat = SWItem.getMaterial(node.getItem());
|
||||||
|
|
||||||
@@ -142,23 +142,23 @@ public class GUI {
|
|||||||
inv.setItem(6, SWItem.getMaterial(node.getSchemtype().getMaterial()), SchematicSystem.MESSAGE.parse("GUI_INFO_TYPE", player, node.getSchemtype().name()), Arrays.asList(SchematicSystem.MESSAGE.parse("CHANGE", player), SchematicSystem.MESSAGE.parse("CLICK", player)), node.getSchemtype().fightType(), click -> {
|
inv.setItem(6, SWItem.getMaterial(node.getSchemtype().getMaterial()), SchematicSystem.MESSAGE.parse("GUI_INFO_TYPE", player, node.getSchemtype().name()), Arrays.asList(SchematicSystem.MESSAGE.parse("CHANGE", player), SchematicSystem.MESSAGE.parse("CLICK", player)), node.getSchemtype().fightType(), click -> {
|
||||||
changeType(player, node);
|
changeType(player, node);
|
||||||
});
|
});
|
||||||
inv.setItem(7, SWItem.getMaterial("MAGENTA_GLAZED_TERRACOTTA"), SchematicSystem.MESSAGE.parse("GUI_INFO_DOWNLOAD", player), click -> {
|
inv.setItem(7, Material.MAGENTA_GLAZED_TERRACOTTA, SchematicSystem.MESSAGE.parse("GUI_INFO_DOWNLOAD", player), click -> {
|
||||||
player.closeInventory();
|
player.closeInventory();
|
||||||
SchematicCommandUtils.download(player, node);
|
SchematicCommandUtils.download(player, node);
|
||||||
});
|
});
|
||||||
if(node.getSchemtype().fightType()) {
|
if(node.getSchemtype().fightType()) {
|
||||||
inv.setItem(14, SWItem.getMaterial(node.replaceColor() ? "PINK_WOOL" : "LIGHT_GRAY_WOOL"), SchematicSystem.MESSAGE.parse("GUI_INFO_COLOR", player), Arrays.asList(SchematicSystem.MESSAGE.parse("CURRENT", player, SchematicSystem.MESSAGE.parse(node.replaceColor()?"ON":"OFF", player)), SchematicSystem.MESSAGE.parse("CHANGE", player), SchematicSystem.MESSAGE.parse("CLICK", player)), false, clickType -> {
|
inv.setItem(14, node.replaceColor() ? Material.PINK_WOOL : Material.LIGHT_GRAY_WOOL, SchematicSystem.MESSAGE.parse("GUI_INFO_COLOR", player), Arrays.asList(SchematicSystem.MESSAGE.parse("CURRENT", player, SchematicSystem.MESSAGE.parse(node.replaceColor()?"ON":"OFF", player)), SchematicSystem.MESSAGE.parse("CHANGE", player), SchematicSystem.MESSAGE.parse("CLICK", player)), false, clickType -> {
|
||||||
node.setReplaceColor(!node.replaceColor());
|
node.setReplaceColor(!node.replaceColor());
|
||||||
info(player, node, back);
|
info(player, node, back);
|
||||||
});
|
});
|
||||||
inv.setItem(13, SWItem.getMaterial(node.allowReplay() ? "EYE_OF_ENDER" : "ENDER_PEARL"), SchematicSystem.MESSAGE.parse("GUI_INFO_REPLAY", player), Arrays.asList(SchematicSystem.MESSAGE.parse("CURRENT", player, SchematicSystem.MESSAGE.parse(node.allowReplay()?"ON":"OFF", player)), SchematicSystem.MESSAGE.parse("GUI_INFO_REPLAY_OFF", player), SchematicSystem.MESSAGE.parse("CLICK", player)), false, clickType -> {
|
inv.setItem(13, node.allowReplay() ? Material.ENDER_EYE : Material.ENDER_PEARL, SchematicSystem.MESSAGE.parse("GUI_INFO_REPLAY", player), Arrays.asList(SchematicSystem.MESSAGE.parse("CURRENT", player, SchematicSystem.MESSAGE.parse(node.allowReplay()?"ON":"OFF", player)), SchematicSystem.MESSAGE.parse("GUI_INFO_REPLAY_OFF", player), SchematicSystem.MESSAGE.parse("CLICK", player)), false, clickType -> {
|
||||||
if(node.allowReplay()) {
|
if(node.allowReplay()) {
|
||||||
SWInventory confInv = new SWInventory(player, 9, SchematicSystem.MESSAGE.parse("GUI_INFO_REPLAY_TITLE", player));
|
SWInventory confInv = new SWInventory(player, 9, SchematicSystem.MESSAGE.parse("GUI_INFO_REPLAY_TITLE", player));
|
||||||
confInv.setItem(0, SWItem.getDye(10), (byte) 10, SchematicSystem.MESSAGE.parse("CONFIRM", player), type -> {
|
confInv.setItem(0, Material.LIME_DYE, (byte) 10, SchematicSystem.MESSAGE.parse("CONFIRM", player), type -> {
|
||||||
node.setAllowReplay(false);
|
node.setAllowReplay(false);
|
||||||
info(player, node, back);
|
info(player, node, back);
|
||||||
});
|
});
|
||||||
confInv.setItem(8, SWItem.getDye(1), (byte) 1, SchematicSystem.MESSAGE.parse("CANCEL", player), type -> {
|
confInv.setItem(8, Material.RED_DYE, (byte) 1, SchematicSystem.MESSAGE.parse("CANCEL", player), type -> {
|
||||||
info(player, node, back);
|
info(player, node, back);
|
||||||
});
|
});
|
||||||
confInv.open();
|
confInv.open();
|
||||||
@@ -188,13 +188,13 @@ public class GUI {
|
|||||||
anvilInv.open();
|
anvilInv.open();
|
||||||
});
|
});
|
||||||
if(node.getOwner() != 0) {
|
if(node.getOwner() != 0) {
|
||||||
inv.setItem(17, SWItem.getDye(1), (byte) 1, SchematicSystem.MESSAGE.parse("GUI_INFO_DELETE", player), click -> {
|
inv.setItem(17, Material.RED_DYE, (byte) 1, SchematicSystem.MESSAGE.parse("GUI_INFO_DELETE", player), click -> {
|
||||||
delete(player, node, back);
|
delete(player, node, back);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
if(!node.isDir()) {
|
if(!node.isDir()) {
|
||||||
inv.setItem(4, SWItem.getMaterial("CAULDRON_ITEM"), SchematicSystem.MESSAGE.parse("GUI_INFO_TYPE", player, node.getSchemtype().name()), Collections.emptyList(), node.getSchemtype().fightType(), click -> {});
|
inv.setItem(4, Material.CAULDRON, SchematicSystem.MESSAGE.parse("GUI_INFO_TYPE", player, node.getSchemtype().name()), Collections.emptyList(), node.getSchemtype().fightType(), click -> {});
|
||||||
}
|
}
|
||||||
|
|
||||||
SteamwarUser owneruser = SteamwarUser.byId(node.getOwner());
|
SteamwarUser owneruser = SteamwarUser.byId(node.getOwner());
|
||||||
@@ -203,7 +203,7 @@ public class GUI {
|
|||||||
inv.setItem(8, skull.getItemStack(), clickType -> {});
|
inv.setItem(8, skull.getItemStack(), clickType -> {});
|
||||||
|
|
||||||
if(NodeMember.getNodeMember(node.getId(), user.getId()) != null) {
|
if(NodeMember.getNodeMember(node.getId(), user.getId()) != null) {
|
||||||
inv.setItem(17, SWItem.getDye(1), (byte) 1, SchematicSystem.MESSAGE.parse("GUI_INFO_MEMBER_REMOVE", player), click -> {
|
inv.setItem(17, Material.RED_DYE, (byte) 1, SchematicSystem.MESSAGE.parse("GUI_INFO_MEMBER_REMOVE", player), click -> {
|
||||||
delete(player, node, back);
|
delete(player, node, back);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -269,7 +269,7 @@ public class GUI {
|
|||||||
private static void deleteOwn(Player p, SchematicNode schem, SchematicSelector back){
|
private static void deleteOwn(Player p, SchematicNode schem, SchematicSelector back){
|
||||||
SteamwarUser user = getUser(p);
|
SteamwarUser user = getUser(p);
|
||||||
SWInventory inv = new SWInventory(p, 9, SchematicSystem.MESSAGE.parse("GUI_DELETE_OWN_TITLE", p, schem.generateBreadcrumbs(user)));
|
SWInventory inv = new SWInventory(p, 9, SchematicSystem.MESSAGE.parse("GUI_DELETE_OWN_TITLE", p, schem.generateBreadcrumbs(user)));
|
||||||
inv.setItem(0, SWItem.getDye(1), (byte) 1, SchematicSystem.MESSAGE.parse("CONFIRM", p), click -> {
|
inv.setItem(0, Material.RED_DYE, (byte) 1, SchematicSystem.MESSAGE.parse("CONFIRM", p), click -> {
|
||||||
p.performCommand("schematic delete " + schem.generateBreadcrumbs(user));
|
p.performCommand("schematic delete " + schem.generateBreadcrumbs(user));
|
||||||
|
|
||||||
if(back != null) {
|
if(back != null) {
|
||||||
@@ -280,7 +280,7 @@ public class GUI {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
inv.setItem(8, SWItem.getDye(14), (byte) 14, SchematicSystem.MESSAGE.parse("CANCEL", p), click -> p.closeInventory());
|
inv.setItem(8, Material.ORANGE_DYE, (byte) 14, SchematicSystem.MESSAGE.parse("CANCEL", p), click -> p.closeInventory());
|
||||||
inv.setCallback(-999, click -> p.closeInventory());
|
inv.setCallback(-999, click -> p.closeInventory());
|
||||||
inv.open();
|
inv.open();
|
||||||
}
|
}
|
||||||
@@ -288,7 +288,7 @@ public class GUI {
|
|||||||
private static void deleteMembership(Player p, SchematicNode schem, SchematicSelector back){
|
private static void deleteMembership(Player p, SchematicNode schem, SchematicSelector back){
|
||||||
SteamwarUser user = getUser(p);
|
SteamwarUser user = getUser(p);
|
||||||
SWInventory inv = new SWInventory(p, 9, SchematicSystem.MESSAGE.parse("GUI_DELETE_MEMBER_TITLE", p, schem.generateBreadcrumbs(user)));
|
SWInventory inv = new SWInventory(p, 9, SchematicSystem.MESSAGE.parse("GUI_DELETE_MEMBER_TITLE", p, schem.generateBreadcrumbs(user)));
|
||||||
inv.setItem(0, SWItem.getDye(1), (byte) 1, SchematicSystem.MESSAGE.parse("CONFIRM", p), click -> {
|
inv.setItem(0, Material.RED_DYE, (byte) 1, SchematicSystem.MESSAGE.parse("CONFIRM", p), click -> {
|
||||||
NodeMember member = NodeMember.getNodeMember(schem.getId(), user.getId());
|
NodeMember member = NodeMember.getNodeMember(schem.getId(), user.getId());
|
||||||
if(member != null)
|
if(member != null)
|
||||||
member.delete();
|
member.delete();
|
||||||
@@ -301,7 +301,7 @@ public class GUI {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
inv.setItem(8, SWItem.getDye(14), (byte) 14, SchematicSystem.MESSAGE.parse("CANCEL", p), click -> p.closeInventory());
|
inv.setItem(8, Material.ORANGE_DYE, (byte) 14, SchematicSystem.MESSAGE.parse("CANCEL", p), click -> p.closeInventory());
|
||||||
inv.setCallback(-999, click -> p.closeInventory());
|
inv.setCallback(-999, click -> p.closeInventory());
|
||||||
inv.open();
|
inv.open();
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-5
@@ -21,7 +21,6 @@ package de.steamwar.schematicsystem.commands.schematiccommand;
|
|||||||
|
|
||||||
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
||||||
import de.steamwar.inventory.SWInventory;
|
import de.steamwar.inventory.SWInventory;
|
||||||
import de.steamwar.inventory.SWItem;
|
|
||||||
import de.steamwar.network.NetworkSender;
|
import de.steamwar.network.NetworkSender;
|
||||||
import de.steamwar.network.packets.client.PrepareSchemPacket;
|
import de.steamwar.network.packets.client.PrepareSchemPacket;
|
||||||
import de.steamwar.providers.BauServerInfo;
|
import de.steamwar.providers.BauServerInfo;
|
||||||
@@ -487,20 +486,20 @@ public class SchematicCommandUtils {
|
|||||||
|
|
||||||
private static void submitSchemGUI(Player player, SchematicNode node, SchematicType type) {
|
private static void submitSchemGUI(Player player, SchematicNode node, SchematicType type) {
|
||||||
SWInventory inv = new SWInventory(player, 9, SchematicSystem.MESSAGE.parse("UTIL_SUBMIT_TITLE", player));
|
SWInventory inv = new SWInventory(player, 9, SchematicSystem.MESSAGE.parse("UTIL_SUBMIT_TITLE", player));
|
||||||
inv.setItem(0, SWItem.getMaterial("SIGN"), SchematicSystem.MESSAGE.parse(node.allowReplay()?"UTIL_SUBMIT_REPLAY_ON":"UTIL_SUBMIT_REPLAY_OFF", player), click -> {
|
inv.setItem(0, Material.OAK_SIGN, SchematicSystem.MESSAGE.parse(node.allowReplay()?"UTIL_SUBMIT_REPLAY_ON":"UTIL_SUBMIT_REPLAY_OFF", player), click -> {
|
||||||
node.setAllowReplay(!node.allowReplay());
|
node.setAllowReplay(!node.allowReplay());
|
||||||
submitSchemGUI(player, node, type);
|
submitSchemGUI(player, node, type);
|
||||||
});
|
});
|
||||||
inv.setItem(1, SWItem.getMaterial(node.replaceColor() ? "PINK_WOOL" : "LIGHT_GRAY_WOOL"), SchematicSystem.MESSAGE.parse(node.replaceColor()?"UTIL_SUBMIT_COLOR_ON":"UTIL_SUBMIT_COLOR_OFF", player), click -> {
|
inv.setItem(1, node.replaceColor() ? Material.PINK_WOOL : Material.LIGHT_GRAY_WOOL, SchematicSystem.MESSAGE.parse(node.replaceColor()?"UTIL_SUBMIT_COLOR_ON":"UTIL_SUBMIT_COLOR_OFF", player), click -> {
|
||||||
node.setReplaceColor(!node.replaceColor());
|
node.setReplaceColor(!node.replaceColor());
|
||||||
submitSchemGUI(player, node, type);
|
submitSchemGUI(player, node, type);
|
||||||
});
|
});
|
||||||
inv.setItem(7, SWItem.getDye(7), (byte) 7, SchematicSystem.MESSAGE.parse("UTIL_SUBMIT_DIRECT", player), click -> {
|
inv.setItem(7, Material.LIGHT_GRAY_DYE, (byte) 7, SchematicSystem.MESSAGE.parse("UTIL_SUBMIT_DIRECT", player), click -> {
|
||||||
node.setSchemtype(type.checkType());
|
node.setSchemtype(type.checkType());
|
||||||
SchematicSystem.MESSAGE.send(type.getManualCheck() ? "UTIL_SUBMIT_DIRECT_DONE" : "UTIL_SUBMIT_DIRECT_PLAYABLE", player);
|
SchematicSystem.MESSAGE.send(type.getManualCheck() ? "UTIL_SUBMIT_DIRECT_DONE" : "UTIL_SUBMIT_DIRECT_PLAYABLE", player);
|
||||||
player.closeInventory();
|
player.closeInventory();
|
||||||
});
|
});
|
||||||
inv.setItem(8, SWItem.getDye(10), (byte) 10, SchematicSystem.MESSAGE.parse("UTIL_SUBMIT_EXTEND", player), click -> {
|
inv.setItem(8, Material.LIME_DYE, (byte) 10, SchematicSystem.MESSAGE.parse("UTIL_SUBMIT_EXTEND", player), click -> {
|
||||||
NetworkSender.send(new PrepareSchemPacket(SteamwarUser.get(player.getUniqueId()).getId(), node.getId(), type.toDB()));
|
NetworkSender.send(new PrepareSchemPacket(SteamwarUser.get(player.getUniqueId()).getId(), node.getId(), type.toDB()));
|
||||||
SchematicSystem.MESSAGE.send("UTIL_SUBMIT_EXTEND_DONE", player);
|
SchematicSystem.MESSAGE.send("UTIL_SUBMIT_EXTEND_DONE", player);
|
||||||
player.closeInventory();
|
player.closeInventory();
|
||||||
|
|||||||
-1
@@ -27,7 +27,6 @@ import com.sk89q.worldedit.extent.clipboard.Clipboard;
|
|||||||
import com.sk89q.worldedit.session.ClipboardHolder;
|
import com.sk89q.worldedit.session.ClipboardHolder;
|
||||||
import de.steamwar.command.AbstractSWCommand;
|
import de.steamwar.command.AbstractSWCommand;
|
||||||
import de.steamwar.command.SWCommand;
|
import de.steamwar.command.SWCommand;
|
||||||
import de.steamwar.core.Core;
|
|
||||||
import de.steamwar.linkage.Linked;
|
import de.steamwar.linkage.Linked;
|
||||||
import de.steamwar.schematicsystem.SchematicSystem;
|
import de.steamwar.schematicsystem.SchematicSystem;
|
||||||
import de.steamwar.schematicsystem.autocheck.AutoChecker;
|
import de.steamwar.schematicsystem.autocheck.AutoChecker;
|
||||||
|
|||||||
@@ -243,7 +243,7 @@ public class TinyProtocol {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public <T> void addTypedFilter(Class<T> packetType, BiFunction<Player, T, Object> filter) {
|
public <T> void addTypedFilter(Class<T> packetType, BiFunction<Player, ? super T, Object> filter) {
|
||||||
packetFilters.computeIfAbsent(packetType, c -> new CopyOnWriteArrayList<>()).add((BiFunction) filter);
|
packetFilters.computeIfAbsent(packetType, c -> new CopyOnWriteArrayList<>()).add((BiFunction) filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -252,7 +252,7 @@ public class TinyProtocol {
|
|||||||
packetFilters.computeIfAbsent(packetType, c -> new CopyOnWriteArrayList<>()).add(filter);
|
packetFilters.computeIfAbsent(packetType, c -> new CopyOnWriteArrayList<>()).add(filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeFilter(Class<?> packetType, BiFunction<Player, Object, Object> filter) {
|
public void removeFilter(Class<?> packetType, BiFunction<Player, ?, Object> filter) {
|
||||||
packetFilters.getOrDefault(packetType, Collections.emptyList()).remove(filter);
|
packetFilters.getOrDefault(packetType, Collections.emptyList()).remove(filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -41,9 +41,7 @@ public class BountifulWrapper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void sendMessage(Player player, ChatMessageType type, BaseComponent... msg) {
|
public void sendMessage(Player player, ChatMessageType type, BaseComponent... msg) {
|
||||||
if(type == ChatMessageType.CHAT)
|
if(type == ChatMessageType.CHAT) type = ChatMessageType.SYSTEM;
|
||||||
type = ChatMessageType.SYSTEM;
|
|
||||||
|
|
||||||
player.spigot().sendMessage(type, msg);
|
player.spigot().sendMessage(type, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -62,9 +60,7 @@ public class BountifulWrapper {
|
|||||||
Reflection.Field<PositionMoveRotation> field = Reflection.getField(packetClass, PositionMoveRotation.class, 0);
|
Reflection.Field<PositionMoveRotation> field = Reflection.getField(packetClass, PositionMoveRotation.class, 0);
|
||||||
|
|
||||||
return (packet, x, y, z, pitch, yaw) -> {
|
return (packet, x, y, z, pitch, yaw) -> {
|
||||||
PositionMoveRotation pos = field.get(packet);
|
field.set(packet, new PositionMoveRotation(new Vec3(x, y, z), field.get(packet).deltaMovement(), yaw, pitch));
|
||||||
|
|
||||||
field.set(packet, new PositionMoveRotation(new Vec3(x, y, z), pos.deltaMovement(), yaw, pitch));
|
|
||||||
};
|
};
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
Reflection.Field<Double> posX = Reflection.getField(packetClass, double.class, fieldOffset);
|
Reflection.Field<Double> posX = Reflection.getField(packetClass, double.class, fieldOffset);
|
||||||
@@ -90,24 +86,6 @@ public class BountifulWrapper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public BountifulWrapper.PositionSetter getRelMoveSetter(Class<?> packetClass) {
|
|
||||||
Class<?> type = short.class;
|
|
||||||
Reflection.Field<?> moveX = Reflection.getField(packetClass, type, 0);
|
|
||||||
Reflection.Field<?> moveY = Reflection.getField(packetClass, type, 1);
|
|
||||||
Reflection.Field<?> moveZ = Reflection.getField(packetClass, type, 2);
|
|
||||||
Reflection.Field<Byte> moveYaw = Reflection.getField(packetClass, byte.class, 0);
|
|
||||||
Reflection.Field<Byte> movePitch = Reflection.getField(packetClass, byte.class, 1);
|
|
||||||
|
|
||||||
return (packet, x, y, z, pitch, yaw) -> {
|
|
||||||
moveX.set(packet, (short)(x*4096));
|
|
||||||
moveY.set(packet, (short)(y*4096));
|
|
||||||
moveZ.set(packet, (short)(z*4096));
|
|
||||||
moveYaw.set(packet, (byte)(yaw*256/360));
|
|
||||||
movePitch.set(packet, (byte)(pitch*256/360));
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public BountifulWrapper.UUIDSetter getUUIDSetter(Class<?> packetClass) {
|
public BountifulWrapper.UUIDSetter getUUIDSetter(Class<?> packetClass) {
|
||||||
Reflection.Field<UUID> uuidField = Reflection.getField(packetClass, UUID.class, 0);
|
Reflection.Field<UUID> uuidField = Reflection.getField(packetClass, UUID.class, 0);
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
package de.steamwar.core;
|
package de.steamwar.core;
|
||||||
|
|
||||||
|
import lombok.experimental.UtilityClass;
|
||||||
import net.minecraft.network.chat.MutableComponent;
|
import net.minecraft.network.chat.MutableComponent;
|
||||||
import net.minecraft.network.chat.contents.PlainTextContents;
|
import net.minecraft.network.chat.contents.PlainTextContents;
|
||||||
import net.minecraft.network.protocol.game.ClientboundSetEntityDataPacket;
|
import net.minecraft.network.protocol.game.ClientboundSetEntityDataPacket;
|
||||||
@@ -26,9 +27,8 @@ import net.minecraft.network.syncher.SynchedEntityData;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
@UtilityClass
|
||||||
public class ChatWrapper {
|
public class ChatWrapper {
|
||||||
public static final ChatWrapper impl = new ChatWrapper();
|
|
||||||
|
|
||||||
public Object stringToChatComponent(String text) {
|
public Object stringToChatComponent(String text) {
|
||||||
return MutableComponent.create(PlainTextContents.create(text));
|
return MutableComponent.create(PlainTextContents.create(text));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import io.netty.channel.ChannelFuture;
|
|||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
import net.minecraft.server.network.ServerConnectionListener;
|
import net.minecraft.server.network.ServerConnectionListener;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.craftbukkit.CraftWorld;
|
||||||
import org.eclipse.openj9.criu.CRIUSupport;
|
import org.eclipse.openj9.criu.CRIUSupport;
|
||||||
import org.eclipse.openj9.criu.JVMCRIUException;
|
import org.eclipse.openj9.criu.JVMCRIUException;
|
||||||
import sun.misc.Signal;
|
import sun.misc.Signal;
|
||||||
@@ -96,7 +97,9 @@ class CheckpointUtilsJ9 {
|
|||||||
private static void freezeInternal(Path path) throws Exception {
|
private static void freezeInternal(Path path) throws Exception {
|
||||||
Bukkit.getPluginManager().callEvent(new CRIUSleepEvent());
|
Bukkit.getPluginManager().callEvent(new CRIUSleepEvent());
|
||||||
|
|
||||||
Bukkit.getWorlds().forEach(FlatteningWrapper.impl::syncSave);
|
Bukkit.getWorlds().forEach(world -> {
|
||||||
|
((CraftWorld) world).getHandle().save(null, true, false);
|
||||||
|
});
|
||||||
Statement.closeAll();
|
Statement.closeAll();
|
||||||
|
|
||||||
// Close socket
|
// Close socket
|
||||||
|
|||||||
@@ -19,339 +19,14 @@
|
|||||||
|
|
||||||
package de.steamwar.core;
|
package de.steamwar.core;
|
||||||
|
|
||||||
import com.destroystokyo.paper.profile.PlayerProfile;
|
import lombok.experimental.UtilityClass;
|
||||||
import de.steamwar.Reflection;
|
|
||||||
import net.minecraft.core.registries.BuiltInRegistries;
|
|
||||||
import net.minecraft.network.chat.Component;
|
|
||||||
import net.minecraft.network.protocol.game.ClientboundSetObjectivePacket;
|
|
||||||
import net.minecraft.resources.ResourceLocation;
|
|
||||||
import net.minecraft.world.entity.Pose;
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.OfflinePlayer;
|
|
||||||
import org.bukkit.World;
|
|
||||||
import org.bukkit.craftbukkit.CraftWorld;
|
|
||||||
import org.bukkit.craftbukkit.util.CraftNamespacedKey;
|
|
||||||
import org.bukkit.entity.EntityType;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
import org.bukkit.inventory.meta.SkullMeta;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
|
@UtilityClass
|
||||||
public class FlatteningWrapper {
|
public class FlatteningWrapper {
|
||||||
private FlatteningWrapper() {}
|
|
||||||
|
|
||||||
public static final FlatteningWrapper impl = new FlatteningWrapper();
|
|
||||||
|
|
||||||
private static final Map<String, Material> renamedLegacy = new HashMap<>();
|
|
||||||
|
|
||||||
static{
|
|
||||||
renamedLegacy.put("WOOD", Material.OAK_WOOD);
|
|
||||||
renamedLegacy.put("SAPLING", Material.OAK_SAPLING);
|
|
||||||
renamedLegacy.put("STATIONARY_WATER", Material.WATER);
|
|
||||||
renamedLegacy.put("STATIONARY_LAVA", Material.LAVA);
|
|
||||||
renamedLegacy.put("LOG", Material.OAK_LOG);
|
|
||||||
renamedLegacy.put("LEAVES", Material.OAK_LEAVES);
|
|
||||||
renamedLegacy.put("BED_BLOCK", Material.RED_BED);
|
|
||||||
renamedLegacy.put("BED", Material.RED_BED);
|
|
||||||
renamedLegacy.put("PISTON_STICKY_BASE", Material.STICKY_PISTON);
|
|
||||||
renamedLegacy.put("WEB", Material.COBWEB);
|
|
||||||
renamedLegacy.put("LONG_GRASS", Material.TALL_GRASS);
|
|
||||||
renamedLegacy.put("PISTON_BASE", Material.PISTON);
|
|
||||||
renamedLegacy.put("PISTON_EXTENSION", Material.PISTON_HEAD);
|
|
||||||
renamedLegacy.put("WOOL", Material.WHITE_WOOL);
|
|
||||||
renamedLegacy.put("PISTON_MOVING_PIECE", Material.MOVING_PISTON);
|
|
||||||
renamedLegacy.put("YELLOW_FLOWER", Material.DANDELION);
|
|
||||||
renamedLegacy.put("RED_ROSE", Material.POPPY);
|
|
||||||
renamedLegacy.put("DOUBLE_STEP", Material.SMOOTH_STONE);
|
|
||||||
renamedLegacy.put("STEP", Material.SMOOTH_STONE_SLAB);
|
|
||||||
renamedLegacy.put("MOB_SPAWNER", Material.SPAWNER);
|
|
||||||
renamedLegacy.put("WOOD_STAIRS", Material.OAK_STAIRS);
|
|
||||||
renamedLegacy.put("WORKBENCH", Material.CRAFTING_TABLE);
|
|
||||||
renamedLegacy.put("CROPS", Material.WHEAT_SEEDS);
|
|
||||||
renamedLegacy.put("SEEDS", Material.WHEAT_SEEDS);
|
|
||||||
renamedLegacy.put("SOIL", Material.FARMLAND);
|
|
||||||
renamedLegacy.put("BURNING_FURNACE", Material.FURNACE);
|
|
||||||
renamedLegacy.put("SIGN_POST", Material.OAK_SIGN);
|
|
||||||
renamedLegacy.put("SIGN", Material.OAK_SIGN);
|
|
||||||
renamedLegacy.put("WOODEN_DOOR", Material.OAK_DOOR);
|
|
||||||
renamedLegacy.put("WOOD_DOOR", Material.OAK_DOOR);
|
|
||||||
renamedLegacy.put("RAILS", Material.RAIL);
|
|
||||||
renamedLegacy.put("WALL_SIGN", Material.OAK_WALL_SIGN);
|
|
||||||
renamedLegacy.put("STONE_PLATE", Material.STONE_PRESSURE_PLATE);
|
|
||||||
renamedLegacy.put("WOOD_PLATE", Material.OAK_PRESSURE_PLATE);
|
|
||||||
renamedLegacy.put("GLOWING_REDSTONE_ORE", Material.REDSTONE_ORE);
|
|
||||||
renamedLegacy.put("REDSTONE_TORCH_OFF", Material.REDSTONE_TORCH);
|
|
||||||
renamedLegacy.put("REDSTONE_TORCH_ON", Material.REDSTONE_TORCH);
|
|
||||||
renamedLegacy.put("IRON_DOOR_BLOCK", Material.IRON_DOOR);
|
|
||||||
renamedLegacy.put("SUGAR_CANE_BLOCK", Material.SUGAR_CANE);
|
|
||||||
renamedLegacy.put("CAKE_BLOCK", Material.CAKE);
|
|
||||||
renamedLegacy.put("MELON_BLOCK", Material.MELON);
|
|
||||||
renamedLegacy.put("BEETROOT_BLOCK", Material.BEETROOT);
|
|
||||||
renamedLegacy.put("FENCE", Material.OAK_FENCE);
|
|
||||||
renamedLegacy.put("PORTAL", Material.NETHER_PORTAL);
|
|
||||||
renamedLegacy.put("DIODE_BLOCK_OFF", Material.REPEATER);
|
|
||||||
renamedLegacy.put("DIODE_BLOCK_ON", Material.REPEATER);
|
|
||||||
renamedLegacy.put("DIODE", Material.REPEATER);
|
|
||||||
renamedLegacy.put("STAINED_GLASS", Material.WHITE_STAINED_GLASS);
|
|
||||||
renamedLegacy.put("TRAP_DOOR", Material.OAK_TRAPDOOR);
|
|
||||||
renamedLegacy.put("MONSTER_EGGS", Material.SKELETON_SPAWN_EGG);
|
|
||||||
renamedLegacy.put("MONSTER_EGG", Material.SKELETON_SPAWN_EGG);
|
|
||||||
renamedLegacy.put("SMOOTH_BRICK", Material.STONE_BRICKS);
|
|
||||||
renamedLegacy.put("HUGE_MUSHROOM_1", Material.MUSHROOM_STEM);
|
|
||||||
renamedLegacy.put("HUGE_MUSHROOM_2", Material.RED_MUSHROOM);
|
|
||||||
renamedLegacy.put("IRON_FENCE", Material.IRON_BARS);
|
|
||||||
renamedLegacy.put("THIN_GLASS", Material.GLASS_PANE);
|
|
||||||
renamedLegacy.put("FENCE_GATE", Material.OAK_FENCE_GATE);
|
|
||||||
renamedLegacy.put("SMOOTH_STAIRS", Material.STONE_BRICK_STAIRS);
|
|
||||||
renamedLegacy.put("MYCEL", Material.MYCELIUM);
|
|
||||||
renamedLegacy.put("WATER_LILY", Material.LILY_PAD);
|
|
||||||
renamedLegacy.put("NETHER_FENCE", Material.NETHER_BRICK_FENCE);
|
|
||||||
renamedLegacy.put("NETHER_WARTS", Material.NETHER_WART);
|
|
||||||
renamedLegacy.put("NETHER_STALK", Material.NETHER_WART);
|
|
||||||
renamedLegacy.put("ENCHANTMENT_TABLE", Material.ENCHANTING_TABLE);
|
|
||||||
renamedLegacy.put("ENDER_PORTAL", Material.END_PORTAL);
|
|
||||||
renamedLegacy.put("ENDER_PORTAL_FRAME", Material.END_PORTAL_FRAME);
|
|
||||||
renamedLegacy.put("ENDER_STONE", Material.END_STONE);
|
|
||||||
renamedLegacy.put("REDSTONE_LAMP_OFF", Material.REDSTONE_LAMP);
|
|
||||||
renamedLegacy.put("REDSTONE_LAMP_ON", Material.REDSTONE_LAMP);
|
|
||||||
renamedLegacy.put("WOOD_DOUBLE_STEP", Material.OAK_SLAB);
|
|
||||||
renamedLegacy.put("WOOD_STEP", Material.OAK_SLAB);
|
|
||||||
renamedLegacy.put("SPRUCE_WOOD_STAIRS", Material.SPRUCE_STAIRS);
|
|
||||||
renamedLegacy.put("BIRCH_WOOD_STAIRS", Material.BIRCH_STAIRS);
|
|
||||||
renamedLegacy.put("JUNGLE_WOOD_STAIRS", Material.JUNGLE_STAIRS);
|
|
||||||
renamedLegacy.put("COMMAND", Material.COMMAND_BLOCK);
|
|
||||||
renamedLegacy.put("COBBLE_WALL", Material.COBBLESTONE_WALL);
|
|
||||||
renamedLegacy.put("WOOD_BUTTON", Material.OAK_BUTTON);
|
|
||||||
renamedLegacy.put("SKULL", Material.SKELETON_SKULL);
|
|
||||||
renamedLegacy.put("SKULL_ITEM", Material.SKELETON_SKULL);
|
|
||||||
renamedLegacy.put("GOLD_PLATE", Material.LIGHT_WEIGHTED_PRESSURE_PLATE);
|
|
||||||
renamedLegacy.put("IRON_PLATE", Material.HEAVY_WEIGHTED_PRESSURE_PLATE);
|
|
||||||
renamedLegacy.put("REDSTONE_COMPARATOR_OFF", Material.COMPARATOR);
|
|
||||||
renamedLegacy.put("REDSTONE_COMPARATOR_ON", Material.COMPARATOR);
|
|
||||||
renamedLegacy.put("REDSTONE_COMPARATOR", Material.COMPARATOR);
|
|
||||||
renamedLegacy.put("QUARTZ_ORE", Material.QUARTZ);
|
|
||||||
renamedLegacy.put("STAINED_CLAY", Material.WHITE_TERRACOTTA);
|
|
||||||
renamedLegacy.put("STAINED_GLASS_PANE", Material.WHITE_STAINED_GLASS_PANE);
|
|
||||||
renamedLegacy.put("LEAVES_2", Material.ACACIA_LEAVES);
|
|
||||||
renamedLegacy.put("LOG_2", Material.ACACIA_LOG);
|
|
||||||
renamedLegacy.put("CARPET", Material.WHITE_CARPET);
|
|
||||||
renamedLegacy.put("HARD_CLAY", Material.TERRACOTTA);
|
|
||||||
renamedLegacy.put("DOUBLE_PLANT", Material.SUNFLOWER);
|
|
||||||
renamedLegacy.put("STANDING_BANNER", Material.WHITE_BANNER);
|
|
||||||
renamedLegacy.put("BANNER", Material.WHITE_BANNER);
|
|
||||||
renamedLegacy.put("WALL_BANNER", Material.WHITE_WALL_BANNER);
|
|
||||||
renamedLegacy.put("DAYLIGHT_DETECTOR_INVERTED", Material.DAYLIGHT_DETECTOR);
|
|
||||||
renamedLegacy.put("DOUBLE_STONE_SLAB2", Material.RED_SANDSTONE_SLAB);
|
|
||||||
renamedLegacy.put("STONE_SLAB2", Material.RED_SANDSTONE_SLAB);
|
|
||||||
renamedLegacy.put("PURPUR_DOUBLE_SLAB", Material.PURPUR_SLAB);
|
|
||||||
renamedLegacy.put("END_BRICKS", Material.END_STONE_BRICKS);
|
|
||||||
renamedLegacy.put("COMMAND_REPEATING", Material.REPEATING_COMMAND_BLOCK);
|
|
||||||
renamedLegacy.put("COMMAND_CHAIN", Material.CHAIN_COMMAND_BLOCK);
|
|
||||||
renamedLegacy.put("MAGMA", Material.MAGMA_BLOCK);
|
|
||||||
renamedLegacy.put("RED_NETHER_BRICK", Material.RED_NETHER_BRICKS);
|
|
||||||
renamedLegacy.put("SILVER_SHULKER_BOX", Material.LIGHT_GRAY_SHULKER_BOX);
|
|
||||||
renamedLegacy.put("SILVER_GLAZED_TERRACOTTA", Material.LIGHT_GRAY_TERRACOTTA);
|
|
||||||
renamedLegacy.put("CONCRETE", Material.WHITE_CONCRETE);
|
|
||||||
renamedLegacy.put("CONCRETE_POWDER", Material.WHITE_CONCRETE_POWDER);
|
|
||||||
renamedLegacy.put("IRON_SPADE", Material.IRON_SHOVEL);
|
|
||||||
renamedLegacy.put("WOOD_SWORD", Material.WOODEN_SWORD);
|
|
||||||
renamedLegacy.put("WOOD_SPADE", Material.WOODEN_SHOVEL);
|
|
||||||
renamedLegacy.put("WOOD_PICKAXE", Material.WOODEN_PICKAXE);
|
|
||||||
renamedLegacy.put("WOOD_AXE", Material.WOODEN_AXE);
|
|
||||||
renamedLegacy.put("STONE_SPADE", Material.STONE_SHOVEL);
|
|
||||||
renamedLegacy.put("DIAMOND_SPADE", Material.DIAMOND_SHOVEL);
|
|
||||||
renamedLegacy.put("MUSHROOM_SOUP", Material.MUSHROOM_STEW);
|
|
||||||
renamedLegacy.put("GOLD_SWORD", Material.GOLDEN_SWORD);
|
|
||||||
renamedLegacy.put("GOLD_SPADE", Material.GOLDEN_SHOVEL);
|
|
||||||
renamedLegacy.put("GOLD_PICKAXE", Material.GOLDEN_PICKAXE);
|
|
||||||
renamedLegacy.put("GOLD_AXE", Material.GOLDEN_AXE);
|
|
||||||
renamedLegacy.put("SULPHUR", Material.GUNPOWDER);
|
|
||||||
renamedLegacy.put("WOOD_HOE", Material.WOODEN_HOE);
|
|
||||||
renamedLegacy.put("GOLD_HOE", Material.GOLDEN_HOE);
|
|
||||||
renamedLegacy.put("GOLD_HELMET", Material.GOLDEN_HELMET);
|
|
||||||
renamedLegacy.put("GOLD_CHESTPLATE", Material.GOLDEN_CHESTPLATE);
|
|
||||||
renamedLegacy.put("GOLD_LEGGINGS", Material.GOLDEN_LEGGINGS);
|
|
||||||
renamedLegacy.put("GOLD_BOOTS", Material.GOLDEN_BOOTS);
|
|
||||||
renamedLegacy.put("PORK", Material.PORKCHOP);
|
|
||||||
renamedLegacy.put("GRILLED_PORK", Material.COOKED_PORKCHOP);
|
|
||||||
renamedLegacy.put("SNOW_BALL", Material.SNOWBALL);
|
|
||||||
renamedLegacy.put("BOAT", Material.OAK_BOAT);
|
|
||||||
renamedLegacy.put("CLAY_BRICK", Material.BRICKS);
|
|
||||||
renamedLegacy.put("STORAGE_MINECART", Material.CHEST_MINECART);
|
|
||||||
renamedLegacy.put("POWERED_MINECART", Material.FURNACE_MINECART);
|
|
||||||
renamedLegacy.put("WATCH", Material.CLOCK);
|
|
||||||
renamedLegacy.put("RAW_FISH", Material.SALMON);
|
|
||||||
renamedLegacy.put("COOKED_FISH", Material.COOKED_SALMON);
|
|
||||||
renamedLegacy.put("INK_SACK", Material.INK_SAC);
|
|
||||||
renamedLegacy.put("RAW_BEEF", Material.BEEF);
|
|
||||||
renamedLegacy.put("RAW_CHICKEN", Material.CHICKEN);
|
|
||||||
renamedLegacy.put("EYE_OF_ENDER", Material.ENDER_EYE);
|
|
||||||
renamedLegacy.put("SPECKLED_MELON", Material.GLISTERING_MELON_SLICE);
|
|
||||||
renamedLegacy.put("EXP_BOTTLE", Material.EXPERIENCE_BOTTLE);
|
|
||||||
renamedLegacy.put("FIREBALL", Material.FIRE_CHARGE);
|
|
||||||
renamedLegacy.put("BOOK_AND_QUILL", Material.WRITABLE_BOOK);
|
|
||||||
renamedLegacy.put("FLOWER_POT_ITEM", Material.FLOWER_POT);
|
|
||||||
renamedLegacy.put("EMPTY_MAP", Material.MAP);
|
|
||||||
renamedLegacy.put("BREWING_STAND_ITEM", Material.BREWING_STAND);
|
|
||||||
renamedLegacy.put("CAULDRON_ITEM", Material.CAULDRON);
|
|
||||||
renamedLegacy.put("CARROT_ITEM", Material.CARROT);
|
|
||||||
renamedLegacy.put("POTATO_ITEM", Material.POTATO);
|
|
||||||
renamedLegacy.put("SPRUCE_DOOR_ITEM", Material.SPRUCE_DOOR);
|
|
||||||
renamedLegacy.put("BIRCH_DOOR_ITEM", Material.BIRCH_DOOR);
|
|
||||||
renamedLegacy.put("JUNGLE_DOOR_ITEM", Material.JUNGLE_DOOR);
|
|
||||||
renamedLegacy.put("ACACIA_DOOR_ITEM", Material.ACACIA_DOOR);
|
|
||||||
renamedLegacy.put("DARK_OAK_DOOR_ITEM", Material.DARK_OAK_DOOR);
|
|
||||||
renamedLegacy.put("CARROT_STICK", Material.CARROT_ON_A_STICK);
|
|
||||||
renamedLegacy.put("FIREWORK", Material.FIREWORK_ROCKET);
|
|
||||||
renamedLegacy.put("FIREWORK_CHARGE", Material.FIREWORK_STAR);
|
|
||||||
renamedLegacy.put("NETHER_BRICK_ITEM", Material.NETHER_BRICKS);
|
|
||||||
renamedLegacy.put("EXPLOSIVE_MINECART", Material.TNT_MINECART);
|
|
||||||
renamedLegacy.put("IRON_BARDING", Material.IRON_HORSE_ARMOR);
|
|
||||||
renamedLegacy.put("GOLD_BARDING", Material.GOLDEN_HORSE_ARMOR);
|
|
||||||
renamedLegacy.put("DIAMOND_BARDING", Material.DIAMOND_HORSE_ARMOR);
|
|
||||||
renamedLegacy.put("LEASH", Material.LEAD);
|
|
||||||
renamedLegacy.put("COMMAND_MINECART", Material.COMMAND_BLOCK_MINECART);
|
|
||||||
renamedLegacy.put("CHORUS_FRUIT_POPPED", Material.POPPED_CHORUS_FRUIT);
|
|
||||||
renamedLegacy.put("DRAGONS_BREATH", Material.DRAGON_BREATH);
|
|
||||||
renamedLegacy.put("BOAT_SPRUCE", Material.SPRUCE_BOAT);
|
|
||||||
renamedLegacy.put("BOAT_BIRCH", Material.BIRCH_BOAT);
|
|
||||||
renamedLegacy.put("BOAT_JUNGLE", Material.JUNGLE_BOAT);
|
|
||||||
renamedLegacy.put("BOAT_ACACIA", Material.ACACIA_BOAT);
|
|
||||||
renamedLegacy.put("BOAT_DARK_OAK", Material.DARK_OAK_BOAT);
|
|
||||||
renamedLegacy.put("TOTEM", Material.TOTEM_OF_UNDYING);
|
|
||||||
renamedLegacy.put("GOLD_RECORD", Material.MUSIC_DISC_13);
|
|
||||||
renamedLegacy.put("GREEN_RECORD", Material.MUSIC_DISC_CAT);
|
|
||||||
renamedLegacy.put("RECORD_3", Material.MUSIC_DISC_BLOCKS);
|
|
||||||
renamedLegacy.put("RECORD_4", Material.MUSIC_DISC_CHIRP);
|
|
||||||
renamedLegacy.put("RECORD_5", Material.MUSIC_DISC_FAR);
|
|
||||||
renamedLegacy.put("RECORD_6", Material.MUSIC_DISC_MALL);
|
|
||||||
renamedLegacy.put("RECORD_7", Material.MUSIC_DISC_MELLOHI);
|
|
||||||
renamedLegacy.put("RECORD_8", Material.MUSIC_DISC_STAL);
|
|
||||||
renamedLegacy.put("RECORD_9", Material.MUSIC_DISC_STRAD);
|
|
||||||
renamedLegacy.put("RECORD_10", Material.MUSIC_DISC_WARD);
|
|
||||||
renamedLegacy.put("RECORD_11", Material.MUSIC_DISC_11);
|
|
||||||
renamedLegacy.put("RECORD_12", Material.MUSIC_DISC_WAIT);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static final Reflection.Field<?> scoreboardName = Reflection.getField(ClientboundSetObjectivePacket.class, Component.class, 0);
|
|
||||||
public void setScoreboardTitle(Object packet, String title) {
|
|
||||||
scoreboardName.set(packet, ChatWrapper.impl.stringToChatComponent(title));
|
|
||||||
}
|
|
||||||
|
|
||||||
private static final Class<?> scoreActionEnum = null;
|
|
||||||
private static final Reflection.Field<?> scoreAction = null;
|
|
||||||
private static final Object scoreActionChange = null;
|
|
||||||
|
|
||||||
public void setScoreAction(Object packet) {
|
|
||||||
scoreAction.set(packet, scoreActionChange);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Material getMaterial(String material) {
|
|
||||||
try{
|
|
||||||
return Material.valueOf(material);
|
|
||||||
}catch(IllegalArgumentException e){
|
|
||||||
return renamedLegacy.get(material);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Material getDye(int colorCode) {
|
|
||||||
switch(colorCode){
|
|
||||||
case 1:
|
|
||||||
return Material.RED_DYE;
|
|
||||||
case 2:
|
|
||||||
return Material.GREEN_DYE;
|
|
||||||
case 3:
|
|
||||||
return Material.BROWN_DYE;
|
|
||||||
case 4:
|
|
||||||
return Material.LAPIS_LAZULI;
|
|
||||||
case 5:
|
|
||||||
return Material.PURPLE_DYE;
|
|
||||||
case 6:
|
|
||||||
return Material.CYAN_DYE;
|
|
||||||
case 7:
|
|
||||||
return Material.LIGHT_GRAY_DYE;
|
|
||||||
case 8:
|
|
||||||
return Material.GRAY_DYE;
|
|
||||||
case 9:
|
|
||||||
return Material.PINK_DYE;
|
|
||||||
case 10:
|
|
||||||
return Material.LIME_DYE;
|
|
||||||
case 11:
|
|
||||||
return Material.YELLOW_DYE;
|
|
||||||
case 12:
|
|
||||||
return Material.LIGHT_BLUE_DYE;
|
|
||||||
case 13:
|
|
||||||
return Material.MAGENTA_DYE;
|
|
||||||
case 14:
|
|
||||||
return Material.ORANGE_DYE;
|
|
||||||
case 15:
|
|
||||||
return Material.WHITE_DYE;
|
|
||||||
default:
|
|
||||||
return Material.BLACK_DYE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public ItemStack setSkullOwner(String player) {
|
|
||||||
ItemStack head = new ItemStack(Material.PLAYER_HEAD, 1);
|
|
||||||
head.editMeta(SkullMeta.class, skullMeta -> {
|
|
||||||
try {
|
|
||||||
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(player.startsWith(".") ? player.substring(1) : player);
|
|
||||||
PlayerProfile playerProfile = offlinePlayer.getPlayerProfile();
|
|
||||||
playerProfile.complete();
|
|
||||||
skullMeta.setPlayerProfile(playerProfile);
|
|
||||||
} catch (Exception e) {
|
|
||||||
// Ignore
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return head;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected static final Class<?> entityPose = Pose.class;
|
|
||||||
protected static final Object shooting = entityPose.getEnumConstants()[16];
|
|
||||||
protected static final Object standing = entityPose.getEnumConstants()[0];
|
|
||||||
protected static final Object swimming = entityPose.getEnumConstants()[3];
|
|
||||||
protected static final Object sneaking = entityPose.getEnumConstants()[5];
|
|
||||||
public Object getPose(FlatteningWrapper.EntityPose pose) {
|
|
||||||
switch (pose) {
|
|
||||||
case SHOOTING:
|
|
||||||
return shooting;
|
|
||||||
case SNEAKING:
|
|
||||||
return sneaking;
|
|
||||||
case SWIMMING:
|
|
||||||
return swimming;
|
|
||||||
case NORMAL:
|
|
||||||
default:
|
|
||||||
return standing;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object formatDisplayName(String displayName) {
|
public Object formatDisplayName(String displayName) {
|
||||||
return displayName != null ? Optional.of(ChatWrapper.impl.stringToChatComponent(displayName)) : Optional.empty();
|
return displayName != null ? Optional.of(ChatWrapper.stringToChatComponent(displayName)) : Optional.empty();
|
||||||
}
|
|
||||||
|
|
||||||
private static final Reflection.Field<net.minecraft.world.entity.EntityType> spawnType = Reflection.getField(ProtocolWrapper.spawnPacket, net.minecraft.world.entity.EntityType.class, 0);
|
|
||||||
public void setSpawnPacketType(Object packet, EntityType type) {
|
|
||||||
ResourceLocation key = CraftNamespacedKey.toMinecraft(type.getKey());
|
|
||||||
spawnType.set(packet, BuiltInRegistries.ENTITY_TYPE.get(key).get().value());
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getViewDistance(Player player) {
|
|
||||||
return player.getClientViewDistance();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void syncSave(World world) {
|
|
||||||
((CraftWorld) world).getHandle().save(null, true, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum EntityPose {
|
|
||||||
NORMAL,
|
|
||||||
SNEAKING,
|
|
||||||
SWIMMING,
|
|
||||||
SHOOTING,
|
|
||||||
;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,11 +20,9 @@
|
|||||||
package de.steamwar.core;
|
package de.steamwar.core;
|
||||||
|
|
||||||
import com.mojang.authlib.GameProfile;
|
import com.mojang.authlib.GameProfile;
|
||||||
import com.mojang.datafixers.util.Pair;
|
|
||||||
import net.minecraft.network.protocol.game.ClientboundAddEntityPacket;
|
import net.minecraft.network.protocol.game.ClientboundAddEntityPacket;
|
||||||
import net.minecraft.network.protocol.game.ClientboundPlayerInfoRemovePacket;
|
import net.minecraft.network.protocol.game.ClientboundPlayerInfoRemovePacket;
|
||||||
import net.minecraft.network.protocol.game.ClientboundPlayerInfoUpdatePacket;
|
import net.minecraft.network.protocol.game.ClientboundPlayerInfoUpdatePacket;
|
||||||
import net.minecraft.network.protocol.game.ClientboundSetEquipmentPacket;
|
|
||||||
import net.minecraft.world.entity.EquipmentSlot;
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.level.GameType;
|
import net.minecraft.world.level.GameType;
|
||||||
@@ -37,19 +35,12 @@ public class ProtocolWrapper {
|
|||||||
|
|
||||||
public static final Class<?> itemStack = ItemStack.class;
|
public static final Class<?> itemStack = ItemStack.class;
|
||||||
public static final Class<?> spawnPacket = ClientboundAddEntityPacket.class;
|
public static final Class<?> spawnPacket = ClientboundAddEntityPacket.class;
|
||||||
public static final Class<?> spawnLivingPacket = ProtocolWrapper.spawnPacket;
|
|
||||||
public static final Class<?> equipmentPacket = ClientboundSetEquipmentPacket.class;
|
|
||||||
|
|
||||||
// 0: hand, 1: offhand, 2: feet, 3: legs, 4: chest, 5: head
|
// 0: hand, 1: offhand, 2: feet, 3: legs, 4: chest, 5: head
|
||||||
public static final EquipmentSlot[] itemSlots = EquipmentSlot.values();
|
public static final EquipmentSlot[] itemSlots = EquipmentSlot.values();
|
||||||
|
|
||||||
public static final ProtocolWrapper impl = new ProtocolWrapper();
|
public static final ProtocolWrapper impl = new ProtocolWrapper();
|
||||||
|
|
||||||
public void setEquipmentPacketStack(Object packet, Object slot, Object stack) {
|
|
||||||
ClientboundSetEquipmentPacket setEquipmentPacket = (ClientboundSetEquipmentPacket) packet;
|
|
||||||
setEquipmentPacket.getSlots().add(Pair.of((EquipmentSlot) slot, (ItemStack) stack));
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object playerInfoPacketConstructor(PlayerInfoAction action, GameProfile profile, GameMode mode) {
|
public Object playerInfoPacketConstructor(PlayerInfoAction action, GameProfile profile, GameMode mode) {
|
||||||
if(action == PlayerInfoAction.REMOVE)
|
if(action == PlayerInfoAction.REMOVE)
|
||||||
return new ClientboundPlayerInfoRemovePacket(Collections.singletonList(profile.getId()));
|
return new ClientboundPlayerInfoRemovePacket(Collections.singletonList(profile.getId()));
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ public class WorldEditRenderer implements Listener {
|
|||||||
|
|
||||||
private static WorldEditRenderer INSTANCE;
|
private static WorldEditRenderer INSTANCE;
|
||||||
|
|
||||||
private static final Material WAND = FlatteningWrapper.impl.getMaterial("WOOD_AXE");
|
private static final Material WAND = Material.WOODEN_AXE;
|
||||||
|
|
||||||
private final WorldEditPlugin we;
|
private final WorldEditPlugin we;
|
||||||
|
|
||||||
|
|||||||
@@ -1,53 +0,0 @@
|
|||||||
/*
|
|
||||||
* This file is a part of the SteamWar software.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2025 SteamWar.de-Serverteam
|
|
||||||
*
|
|
||||||
* 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 de.steamwar.entity;
|
|
||||||
|
|
||||||
import net.minecraft.network.protocol.game.ClientboundAddEntityPacket;
|
|
||||||
import net.minecraft.network.protocol.game.ClientboundTeleportEntityPacket;
|
|
||||||
import net.minecraft.world.entity.EntityType;
|
|
||||||
import net.minecraft.world.entity.PositionMoveRotation;
|
|
||||||
import net.minecraft.world.phys.Vec3;
|
|
||||||
|
|
||||||
import java.util.Collections;
|
|
||||||
|
|
||||||
public class PacketConstructor {
|
|
||||||
public static final PacketConstructor impl = new PacketConstructor();
|
|
||||||
|
|
||||||
public Object teleportPacket(int entityId, double x, double y, double z, float yaw, float pitch) {
|
|
||||||
PositionMoveRotation rot = new PositionMoveRotation(new Vec3(x, y, z), Vec3.ZERO, pitch, yaw);
|
|
||||||
return new ClientboundTeleportEntityPacket(entityId, rot, Collections.emptySet(), false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object createRPlayerSpawn(RPlayer player) {
|
|
||||||
return new ClientboundAddEntityPacket(
|
|
||||||
player.entityId,
|
|
||||||
player.uuid,
|
|
||||||
player.x,
|
|
||||||
player.y,
|
|
||||||
player.z,
|
|
||||||
player.yaw,
|
|
||||||
player.pitch,
|
|
||||||
EntityType.PLAYER,
|
|
||||||
0,
|
|
||||||
Vec3.ZERO,
|
|
||||||
player.headYaw
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -19,8 +19,9 @@
|
|||||||
|
|
||||||
package de.steamwar.entity;
|
package de.steamwar.entity;
|
||||||
|
|
||||||
import de.steamwar.core.BountifulWrapper;
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
import net.minecraft.network.syncher.EntityDataAccessor;
|
||||||
|
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
|
|
||||||
@@ -28,7 +29,7 @@ import java.util.function.Consumer;
|
|||||||
|
|
||||||
public class RArmorStand extends REntity {
|
public class RArmorStand extends REntity {
|
||||||
|
|
||||||
private static final Object sizeWatcher = BountifulWrapper.impl.getDataWatcherObject(15, Byte.class);
|
private static final EntityDataAccessor<Byte> sizeWatcher = new EntityDataAccessor<>(15, EntityDataSerializers.BYTE);
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private final Size size;
|
private final Size size;
|
||||||
|
|||||||
@@ -19,8 +19,9 @@
|
|||||||
|
|
||||||
package de.steamwar.entity;
|
package de.steamwar.entity;
|
||||||
|
|
||||||
import de.steamwar.core.BountifulWrapper;
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
import net.minecraft.network.syncher.EntityDataAccessor;
|
||||||
|
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@@ -58,7 +59,7 @@ public class RBlockDisplay extends RDisplay {
|
|||||||
sendPacket(updatePacketSink, this::getBlock);
|
sendPacket(updatePacketSink, this::getBlock);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Object blockWatcher = BountifulWrapper.impl.getDataWatcherObject(23, BlockState.class);
|
private static final EntityDataAccessor<BlockState> blockWatcher = new EntityDataAccessor<>(23, EntityDataSerializers.BLOCK_STATE);
|
||||||
private void getBlock(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
private void getBlock(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
||||||
if (ignoreDefault || !block.getAsString(true).equals(DEFAULT_BLOCK.getAsString(true))) {
|
if (ignoreDefault || !block.getAsString(true).equals(DEFAULT_BLOCK.getAsString(true))) {
|
||||||
packetSink.accept(blockWatcher, ((CraftBlockData) block).getState());
|
packetSink.accept(blockWatcher, ((CraftBlockData) block).getState());
|
||||||
|
|||||||
@@ -19,9 +19,10 @@
|
|||||||
|
|
||||||
package de.steamwar.entity;
|
package de.steamwar.entity;
|
||||||
|
|
||||||
import de.steamwar.core.BountifulWrapper;
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NonNull;
|
import lombok.NonNull;
|
||||||
|
import net.minecraft.network.syncher.EntityDataAccessor;
|
||||||
|
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||||
import org.bukkit.Color;
|
import org.bukkit.Color;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.entity.Display;
|
import org.bukkit.entity.Display;
|
||||||
@@ -35,9 +36,6 @@ import java.util.List;
|
|||||||
import java.util.function.BiConsumer;
|
import java.util.function.BiConsumer;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
/**
|
|
||||||
* !! This class cannot be used in Versions lower than or equal to 1.19.4 !!
|
|
||||||
*/
|
|
||||||
@Getter
|
@Getter
|
||||||
public abstract class RDisplay extends REntity {
|
public abstract class RDisplay extends REntity {
|
||||||
|
|
||||||
@@ -110,10 +108,10 @@ public abstract class RDisplay extends REntity {
|
|||||||
sendPacket(updatePacketSink, this::getTransformData);
|
sendPacket(updatePacketSink, this::getTransformData);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Object translationWatcher = BountifulWrapper.impl.getDataWatcherObject(11, Vector3f.class);
|
private static final EntityDataAccessor<Vector3f> translationWatcher = new EntityDataAccessor<>(11, EntityDataSerializers.VECTOR3);
|
||||||
private static final Object leftRotationWatcher = BountifulWrapper.impl.getDataWatcherObject(13, Quaternionf.class);
|
private static final EntityDataAccessor<Quaternionf> leftRotationWatcher = new EntityDataAccessor<>(13, EntityDataSerializers.QUATERNION);
|
||||||
private static final Object scaleWatcher = BountifulWrapper.impl.getDataWatcherObject(12, Vector3f.class);
|
private static final EntityDataAccessor<Vector3f> scaleWatcher = new EntityDataAccessor<>(12, EntityDataSerializers.VECTOR3);
|
||||||
private static final Object rightRotationWatcher = BountifulWrapper.impl.getDataWatcherObject(14, Quaternionf.class);
|
private static final EntityDataAccessor<Quaternionf> rightRotationWatcher = new EntityDataAccessor<>(14, EntityDataSerializers.QUATERNION);
|
||||||
|
|
||||||
private void getTransformData(boolean ignoreDefault, BiConsumer<Object, Object> dataSink) {
|
private void getTransformData(boolean ignoreDefault, BiConsumer<Object, Object> dataSink) {
|
||||||
if (ignoreDefault || !transform.equals(DEFAULT_TRANSFORM)) {
|
if (ignoreDefault || !transform.equals(DEFAULT_TRANSFORM)) {
|
||||||
@@ -129,8 +127,8 @@ public abstract class RDisplay extends REntity {
|
|||||||
sendPacket(updatePacketSink, this::getInterpolationDuration);
|
sendPacket(updatePacketSink, this::getInterpolationDuration);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Object transformationInterpolationDurationWatcher = BountifulWrapper.impl.getDataWatcherObject(9, Integer.class);
|
private static final EntityDataAccessor<Integer> transformationInterpolationDurationWatcher = new EntityDataAccessor<>(9, EntityDataSerializers.INT);
|
||||||
private static final Object positionOrRotationInterpolationDurationWatcher = BountifulWrapper.impl.getDataWatcherObject(10, Integer.class);
|
private static final EntityDataAccessor<Integer> positionOrRotationInterpolationDurationWatcher = new EntityDataAccessor<>(10, EntityDataSerializers.INT);
|
||||||
|
|
||||||
private void getInterpolationDuration(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
private void getInterpolationDuration(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
||||||
if (ignoreDefault || interpolationDelay != 0) {
|
if (ignoreDefault || interpolationDelay != 0) {
|
||||||
@@ -144,7 +142,7 @@ public abstract class RDisplay extends REntity {
|
|||||||
sendPacket(updatePacketSink, this::getViewRange);
|
sendPacket(updatePacketSink, this::getViewRange);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Object viewRangeWatcher = BountifulWrapper.impl.getDataWatcherObject(17, Float.class);
|
private static final EntityDataAccessor<Float> viewRangeWatcher = new EntityDataAccessor<>(17, EntityDataSerializers.FLOAT);
|
||||||
|
|
||||||
private void getViewRange(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
private void getViewRange(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
||||||
if (ignoreDefault || viewRange != 1.0F) {
|
if (ignoreDefault || viewRange != 1.0F) {
|
||||||
@@ -157,7 +155,7 @@ public abstract class RDisplay extends REntity {
|
|||||||
sendPacket(updatePacketSink, this::getShadowRadius);
|
sendPacket(updatePacketSink, this::getShadowRadius);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Object shadowRadiusWatcher = BountifulWrapper.impl.getDataWatcherObject(18, Float.class);
|
private static final EntityDataAccessor<Float> shadowRadiusWatcher = new EntityDataAccessor<>(18, EntityDataSerializers.FLOAT);
|
||||||
|
|
||||||
private void getShadowRadius(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
private void getShadowRadius(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
||||||
if (ignoreDefault || shadowRadius != 0.0F) {
|
if (ignoreDefault || shadowRadius != 0.0F) {
|
||||||
@@ -170,7 +168,7 @@ public abstract class RDisplay extends REntity {
|
|||||||
sendPacket(updatePacketSink, this::getShadowStrength);
|
sendPacket(updatePacketSink, this::getShadowStrength);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Object shadowStrengthWatcher = BountifulWrapper.impl.getDataWatcherObject(19, Float.class);
|
private static final EntityDataAccessor<Float> shadowStrengthWatcher = new EntityDataAccessor<>(19, EntityDataSerializers.FLOAT);
|
||||||
|
|
||||||
private void getShadowStrength(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
private void getShadowStrength(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
||||||
if (ignoreDefault || shadowStrength != 1.0F) {
|
if (ignoreDefault || shadowStrength != 1.0F) {
|
||||||
@@ -183,7 +181,7 @@ public abstract class RDisplay extends REntity {
|
|||||||
sendPacket(updatePacketSink, this::getDisplayWidth);
|
sendPacket(updatePacketSink, this::getDisplayWidth);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Object displayWidthWatcher = BountifulWrapper.impl.getDataWatcherObject(20, Float.class);
|
private static final EntityDataAccessor<Float> displayWidthWatcher = new EntityDataAccessor<>(20, EntityDataSerializers.FLOAT);
|
||||||
|
|
||||||
private void getDisplayWidth(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
private void getDisplayWidth(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
||||||
if (ignoreDefault || displayWidth != 0.0F) {
|
if (ignoreDefault || displayWidth != 0.0F) {
|
||||||
@@ -196,7 +194,7 @@ public abstract class RDisplay extends REntity {
|
|||||||
sendPacket(updatePacketSink, this::getDisplayHeight);
|
sendPacket(updatePacketSink, this::getDisplayHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Object displayHeightWatcher = BountifulWrapper.impl.getDataWatcherObject(21, Float.class);
|
private static final EntityDataAccessor<Float> displayHeightWatcher = new EntityDataAccessor<>(21, EntityDataSerializers.FLOAT);
|
||||||
|
|
||||||
private void getDisplayHeight(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
private void getDisplayHeight(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
||||||
if (ignoreDefault || displayHeight != 0.0F) {
|
if (ignoreDefault || displayHeight != 0.0F) {
|
||||||
@@ -209,7 +207,7 @@ public abstract class RDisplay extends REntity {
|
|||||||
sendPacket(updatePacketSink, this::getInterpolationDelay);
|
sendPacket(updatePacketSink, this::getInterpolationDelay);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Object interpolationDelayWatcher = BountifulWrapper.impl.getDataWatcherObject(8, Integer.class);
|
private static final EntityDataAccessor<Integer> interpolationDelayWatcher = new EntityDataAccessor<>(8, EntityDataSerializers.INT);
|
||||||
|
|
||||||
private void getInterpolationDelay(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
private void getInterpolationDelay(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
||||||
if (ignoreDefault || interpolationDelay != 0) {
|
if (ignoreDefault || interpolationDelay != 0) {
|
||||||
@@ -222,7 +220,7 @@ public abstract class RDisplay extends REntity {
|
|||||||
sendPacket(updatePacketSink, this::getBillboard);
|
sendPacket(updatePacketSink, this::getBillboard);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Object billboardWatcher = BountifulWrapper.impl.getDataWatcherObject(15, Byte.class);
|
private static final EntityDataAccessor<Byte> billboardWatcher = new EntityDataAccessor<>(15, EntityDataSerializers.BYTE);
|
||||||
|
|
||||||
private void getBillboard(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
private void getBillboard(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
||||||
if (ignoreDefault || billboard != Display.Billboard.FIXED) {
|
if (ignoreDefault || billboard != Display.Billboard.FIXED) {
|
||||||
@@ -235,7 +233,7 @@ public abstract class RDisplay extends REntity {
|
|||||||
sendPacket(updatePacketSink, this::getGlowColorOverride);
|
sendPacket(updatePacketSink, this::getGlowColorOverride);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Object glowColorOverrideWatcher = BountifulWrapper.impl.getDataWatcherObject(22, Integer.class);
|
private static final EntityDataAccessor<Integer> glowColorOverrideWatcher = new EntityDataAccessor<>(22, EntityDataSerializers.INT);
|
||||||
|
|
||||||
private void getGlowColorOverride(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
private void getGlowColorOverride(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
||||||
if (ignoreDefault || glowColorOverride != null) {
|
if (ignoreDefault || glowColorOverride != null) {
|
||||||
@@ -248,7 +246,7 @@ public abstract class RDisplay extends REntity {
|
|||||||
sendPacket(updatePacketSink, this::getBrightness);
|
sendPacket(updatePacketSink, this::getBrightness);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Object brightnessWatcher = BountifulWrapper.impl.getDataWatcherObject(16, Integer.class);
|
private static final EntityDataAccessor<Integer> brightnessWatcher = new EntityDataAccessor<>(16, EntityDataSerializers.INT);
|
||||||
|
|
||||||
private void getBrightness(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
private void getBrightness(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
||||||
if (ignoreDefault || brightness != null) {
|
if (ignoreDefault || brightness != null) {
|
||||||
|
|||||||
@@ -19,17 +19,27 @@
|
|||||||
|
|
||||||
package de.steamwar.entity;
|
package de.steamwar.entity;
|
||||||
|
|
||||||
|
import com.mojang.datafixers.util.Pair;
|
||||||
import de.steamwar.Reflection;
|
import de.steamwar.Reflection;
|
||||||
import de.steamwar.core.BountifulWrapper;
|
import de.steamwar.core.BountifulWrapper;
|
||||||
import de.steamwar.core.ChatWrapper;
|
import de.steamwar.core.ChatWrapper;
|
||||||
import de.steamwar.core.FlatteningWrapper;
|
import de.steamwar.core.FlatteningWrapper;
|
||||||
import de.steamwar.core.ProtocolWrapper;
|
import de.steamwar.core.ProtocolWrapper;
|
||||||
import it.unimi.dsi.fastutil.ints.IntArrayList;
|
import it.unimi.dsi.fastutil.ints.IntArrayList;
|
||||||
import it.unimi.dsi.fastutil.ints.IntList;
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
import net.minecraft.core.registries.BuiltInRegistries;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
import net.minecraft.network.protocol.game.*;
|
import net.minecraft.network.protocol.game.*;
|
||||||
|
import net.minecraft.network.syncher.EntityDataAccessor;
|
||||||
|
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
|
import net.minecraft.world.entity.Pose;
|
||||||
|
import net.minecraft.world.entity.PositionMoveRotation;
|
||||||
|
import net.minecraft.world.phys.Vec3;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.craftbukkit.inventory.CraftItemStack;
|
import org.bukkit.craftbukkit.inventory.CraftItemStack;
|
||||||
|
import org.bukkit.craftbukkit.util.CraftNamespacedKey;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
@@ -39,13 +49,11 @@ import java.util.function.Function;
|
|||||||
|
|
||||||
public class REntity {
|
public class REntity {
|
||||||
|
|
||||||
private static final Object entityStatusWatcher = BountifulWrapper.impl.getDataWatcherObject(0, Byte.class);
|
private static final EntityDataAccessor<Byte> entityStatusWatcher = new EntityDataAccessor<>(0, EntityDataSerializers.BYTE);
|
||||||
private static final Object sneakingDataWatcher = BountifulWrapper.impl.getDataWatcherObject(6, FlatteningWrapper.impl.getPose(FlatteningWrapper.EntityPose.NORMAL).getClass());
|
private static final EntityDataAccessor<Pose> poseDataWatcher = new EntityDataAccessor<>(6, EntityDataSerializers.POSE);
|
||||||
private static final Object bowDrawnWatcher = BountifulWrapper.impl.getDataWatcherObject(6, FlatteningWrapper.impl.getPose(FlatteningWrapper.EntityPose.NORMAL).getClass());
|
private static final EntityDataAccessor<Optional<Component>> nameWatcher = new EntityDataAccessor<>(2, EntityDataSerializers.OPTIONAL_COMPONENT);
|
||||||
private static final Object nameWatcher = BountifulWrapper.impl.getDataWatcherObject(2, Optional.class); // Optional<IChatBaseComponent>
|
private static final EntityDataAccessor<Boolean> nameVisibleWatcher = new EntityDataAccessor<>(3, EntityDataSerializers.BOOLEAN);
|
||||||
private static final Object nameVisibleWatcher = BountifulWrapper.impl.getDataWatcherObject(3, Boolean.class);
|
private static final EntityDataAccessor<Boolean> noGravityDataWatcher = new EntityDataAccessor<>(5, EntityDataSerializers.BOOLEAN);
|
||||||
|
|
||||||
private static final Object noGravityDataWatcher = BountifulWrapper.impl.getDataWatcherObject(5,Boolean.class);
|
|
||||||
|
|
||||||
private static int entityIdCounter = -1;
|
private static int entityIdCounter = -1;
|
||||||
private static final Random random = new Random();
|
private static final Random random = new Random();
|
||||||
@@ -72,11 +80,12 @@ public class REntity {
|
|||||||
@Getter
|
@Getter
|
||||||
private boolean invisible;
|
private boolean invisible;
|
||||||
@Getter
|
@Getter
|
||||||
private FlatteningWrapper.EntityPose pose = FlatteningWrapper.EntityPose.NORMAL;
|
private Pose pose = Pose.STANDING;
|
||||||
@Getter
|
@Getter
|
||||||
private boolean bowDrawn;
|
private boolean bowDrawn;
|
||||||
@Getter
|
@Getter
|
||||||
private boolean noGravity;
|
private boolean noGravity;
|
||||||
|
@Getter
|
||||||
private boolean isGlowing;
|
private boolean isGlowing;
|
||||||
private int fireTick;
|
private int fireTick;
|
||||||
|
|
||||||
@@ -175,18 +184,8 @@ public class REntity {
|
|||||||
server.updateEntity(this, packet);
|
server.updateEntity(this, packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Class<?> velocityPacket = ClientboundSetEntityMotionPacket.class;
|
|
||||||
private static final Reflection.Field<Integer> velocityEntity = Reflection.getField(velocityPacket, int.class, 0);
|
|
||||||
private static final Reflection.Field<Integer> velocityX = Reflection.getField(velocityPacket, int.class, 1);
|
|
||||||
private static final Reflection.Field<Integer> velocityY = Reflection.getField(velocityPacket, int.class, 2);
|
|
||||||
private static final Reflection.Field<Integer> velocityZ = Reflection.getField(velocityPacket, int.class, 3);
|
|
||||||
public void setVelocity(double dX, double dY, double dZ) {
|
public void setVelocity(double dX, double dY, double dZ) {
|
||||||
Object packet = Reflection.newInstance(velocityPacket);
|
server.updateEntity(this, new ClientboundSetEntityMotionPacket(entityId, new Vec3(calcVelocity(dX), calcVelocity(dY), calcVelocity(dZ))));
|
||||||
velocityEntity.set(packet, entityId);
|
|
||||||
velocityX.set(packet, calcVelocity(dX));
|
|
||||||
velocityY.set(packet, calcVelocity(dY));
|
|
||||||
velocityZ.set(packet, calcVelocity(dZ));
|
|
||||||
server.updateEntity(this, packet);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Class<?> statusPacket = ClientboundEntityEventPacket.class;
|
private static final Class<?> statusPacket = ClientboundEntityEventPacket.class;
|
||||||
@@ -199,9 +198,9 @@ public class REntity {
|
|||||||
server.updateEntity(this, packet);
|
server.updateEntity(this, packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPose(FlatteningWrapper.EntityPose pose) {
|
public void setPose(Pose pose) {
|
||||||
this.pose = pose;
|
this.pose = pose;
|
||||||
server.updateEntity(this, getDataWatcherPacket(sneakingDataWatcher, FlatteningWrapper.impl.getPose(pose)));
|
server.updateEntity(this, getDataWatcherPacket(poseDataWatcher, pose));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setOnFire(boolean perma) {
|
public void setOnFire(boolean perma) {
|
||||||
@@ -220,13 +219,13 @@ public class REntity {
|
|||||||
|
|
||||||
public void setBowDrawn(boolean drawn, boolean offHand) {
|
public void setBowDrawn(boolean drawn, boolean offHand) {
|
||||||
bowDrawn = drawn;
|
bowDrawn = drawn;
|
||||||
server.updateEntity(this, getDataWatcherPacket(bowDrawnWatcher, FlatteningWrapper.impl.getPose(FlatteningWrapper.EntityPose.SHOOTING)));
|
server.updateEntity(this, getDataWatcherPacket(poseDataWatcher, Pose.SHOOTING));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDisplayName(String displayName) {
|
public void setDisplayName(String displayName) {
|
||||||
this.displayName = displayName;
|
this.displayName = displayName;
|
||||||
server.updateEntity(this, getDataWatcherPacket(
|
server.updateEntity(this, getDataWatcherPacket(
|
||||||
nameWatcher, FlatteningWrapper.impl.formatDisplayName(displayName),
|
nameWatcher, FlatteningWrapper.formatDisplayName(displayName),
|
||||||
nameVisibleWatcher, displayName != null
|
nameVisibleWatcher, displayName != null
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
@@ -250,10 +249,6 @@ public class REntity {
|
|||||||
server.updateEntity(this,getDataWatcherPacket(entityStatusWatcher,getEntityStatus()));
|
server.updateEntity(this,getDataWatcherPacket(entityStatusWatcher,getEntityStatus()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isGlowing() {
|
|
||||||
return isGlowing;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static final Function<REntity, Object> spawnPacketGenerator = entitySpawnPacketGenerator(ProtocolWrapper.spawnPacket, 2);
|
private static final Function<REntity, Object> spawnPacketGenerator = entitySpawnPacketGenerator(ProtocolWrapper.spawnPacket, 2);
|
||||||
|
|
||||||
private static final Reflection.Field<Integer> additionalData = Reflection.getField(ProtocolWrapper.spawnPacket, int.class, 4);
|
private static final Reflection.Field<Integer> additionalData = Reflection.getField(ProtocolWrapper.spawnPacket, int.class, 4);
|
||||||
@@ -268,14 +263,8 @@ public class REntity {
|
|||||||
// empty for regular entity
|
// empty for regular entity
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Function<REntity, Object> livingSpawnPacketGenerator = REntity::spawnPacketGenerator;
|
|
||||||
void spawn(Consumer<Object> packetSink) {
|
void spawn(Consumer<Object> packetSink) {
|
||||||
if(entityType.isAlive()) {
|
packetSink.accept(spawnPacketGenerator());
|
||||||
packetSink.accept(livingSpawnPacketGenerator.apply(this));
|
|
||||||
} else {
|
|
||||||
packetSink.accept(spawnPacketGenerator());
|
|
||||||
}
|
|
||||||
|
|
||||||
postSpawn(packetSink);
|
postSpawn(packetSink);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -284,8 +273,8 @@ public class REntity {
|
|||||||
packetSink.accept(getHeadRotationPacket());
|
packetSink.accept(getHeadRotationPacket());
|
||||||
}
|
}
|
||||||
|
|
||||||
if(pose != FlatteningWrapper.EntityPose.NORMAL) {
|
if(pose != Pose.STANDING) {
|
||||||
packetSink.accept(getDataWatcherPacket(sneakingDataWatcher, FlatteningWrapper.impl.getPose(pose)));
|
packetSink.accept(getDataWatcherPacket(poseDataWatcher, pose));
|
||||||
}
|
}
|
||||||
|
|
||||||
byte status = getEntityStatus();
|
byte status = getEntityStatus();
|
||||||
@@ -294,7 +283,7 @@ public class REntity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(displayName != null) {
|
if(displayName != null) {
|
||||||
packetSink.accept(getDataWatcherPacket(nameWatcher, FlatteningWrapper.impl.formatDisplayName(displayName), nameVisibleWatcher, true));
|
packetSink.accept(getDataWatcherPacket(nameWatcher, FlatteningWrapper.formatDisplayName(displayName), nameVisibleWatcher, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(noGravity) {
|
if(noGravity) {
|
||||||
@@ -311,12 +300,8 @@ public class REntity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Class<?> destroyPacket = ClientboundRemoveEntitiesPacket.class;
|
|
||||||
private static final Reflection.Field<?> destroyEntities = Reflection.getField(destroyPacket, IntList.class, 0);
|
|
||||||
void despawn(Consumer<Object> packetSink){
|
void despawn(Consumer<Object> packetSink){
|
||||||
Object packet = Reflection.newInstance(destroyPacket);
|
packetSink.accept(new ClientboundRemoveEntitiesPacket(new IntArrayList(new int[]{entityId})));
|
||||||
destroyEntities.set(packet, new IntArrayList(new int[]{entityId}));
|
|
||||||
packetSink.accept(packet);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void delist(Consumer<Object> packetSink) {
|
void delist(Consumer<Object> packetSink) {
|
||||||
@@ -336,7 +321,7 @@ public class REntity {
|
|||||||
|
|
||||||
if(fireTick != 0)
|
if(fireTick != 0)
|
||||||
status |= 1;
|
status |= 1;
|
||||||
if(pose == FlatteningWrapper.EntityPose.SNEAKING)
|
if(pose == Pose.CROUCHING)
|
||||||
status |= 2;
|
status |= 2;
|
||||||
if(invisible)
|
if(invisible)
|
||||||
status |= 0x20;
|
status |= 0x20;
|
||||||
@@ -347,39 +332,29 @@ public class REntity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected Object getDataWatcherPacket(Object... dataWatcherKeyValues) {
|
protected Object getDataWatcherPacket(Object... dataWatcherKeyValues) {
|
||||||
return ChatWrapper.impl.getDataWatcherPacket(entityId, dataWatcherKeyValues);
|
return ChatWrapper.getDataWatcherPacket(entityId, dataWatcherKeyValues);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final Class<?> teleportPacket = ClientboundTeleportEntityPacket.class;
|
|
||||||
public static final Reflection.Field<Integer> teleportEntity = Reflection.getField(teleportPacket, int.class, 0);
|
|
||||||
public static final BountifulWrapper.PositionSetter teleportPosition = BountifulWrapper.impl.getPositionSetter(teleportPacket, 0);
|
|
||||||
private Object getTeleportPacket(){
|
private Object getTeleportPacket(){
|
||||||
return PacketConstructor.impl.teleportPacket(entityId, x, y, z, pitch, yaw);
|
PositionMoveRotation rot = new PositionMoveRotation(new Vec3(x, y, z), Vec3.ZERO, pitch, yaw);
|
||||||
|
return new ClientboundTeleportEntityPacket(entityId, rot, Collections.emptySet(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Class<?> entityPacket = ClientboundMoveEntityPacket.class;
|
|
||||||
private static final Reflection.Field<Integer> moveEntityId = Reflection.getField(entityPacket, int.class, 0);
|
|
||||||
private static final BountifulWrapper.PositionSetter movePosition = BountifulWrapper.impl.getRelMoveSetter(entityPacket);
|
|
||||||
private static final Class<?> lookPacket = ClientboundMoveEntityPacket.Rot.class;
|
|
||||||
private static final Class<?> movePacket = ClientboundMoveEntityPacket.Pos.class;
|
|
||||||
private static final Class<?> moveLookPacket = ClientboundMoveEntityPacket.PosRot.class;
|
|
||||||
private Object getMoveLookPacket(double diffX, double diffY, double diffZ, boolean rotEq) {
|
private Object getMoveLookPacket(double diffX, double diffY, double diffZ, boolean rotEq) {
|
||||||
Class<?> clazz;
|
short x = (short)(this.x*4096);
|
||||||
|
short y = (short)(this.y*4096);
|
||||||
|
short z = (short)(this.z*4096);
|
||||||
|
byte yaw = (byte)(this.yaw*256/360);
|
||||||
|
byte pitch = (byte)(this.pitch*256/360);
|
||||||
|
|
||||||
if(diffX == 0 && diffY == 0 && diffZ == 0) {
|
if(diffX == 0 && diffY == 0 && diffZ == 0) {
|
||||||
if(rotEq)
|
if(rotEq) return null;
|
||||||
return null;
|
return new ClientboundMoveEntityPacket.Rot(entityId, pitch, yaw, false);
|
||||||
|
|
||||||
clazz = lookPacket;
|
|
||||||
} else if (rotEq) {
|
} else if (rotEq) {
|
||||||
clazz = movePacket;
|
return new ClientboundMoveEntityPacket.Pos(entityId, x, y, z, false);
|
||||||
} else {
|
} else {
|
||||||
clazz = moveLookPacket;
|
return new ClientboundMoveEntityPacket.PosRot(entityId, x, y, z, pitch, yaw, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
Object packet = Reflection.newInstance(clazz);
|
|
||||||
moveEntityId.set(packet, entityId);
|
|
||||||
movePosition.set(packet, diffX, diffY, diffZ, pitch, yaw);
|
|
||||||
return packet;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Class<?> headRotationPacket = ClientboundRotateHeadPacket.class;
|
private static final Class<?> headRotationPacket = ClientboundRotateHeadPacket.class;
|
||||||
@@ -392,17 +367,11 @@ public class REntity {
|
|||||||
return packet;
|
return packet;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Reflection.Field<Integer> equipmentEntity = Reflection.getField(ProtocolWrapper.equipmentPacket, int.class, 0);
|
protected Object getEquipmentPacket(Object slot, ItemStack stack) {
|
||||||
private static final Reflection.Field<List> equipmentSlots = Reflection.getField(ProtocolWrapper.equipmentPacket, List.class, 0);
|
return new ClientboundSetEquipmentPacket(entityId, Collections.singletonList(Pair.of((EquipmentSlot) slot, CraftItemStack.asNMSCopy(stack))));
|
||||||
|
|
||||||
protected Object getEquipmentPacket(Object slot, ItemStack stack){
|
|
||||||
Object packet = Reflection.newInstance(ProtocolWrapper.equipmentPacket);
|
|
||||||
equipmentEntity.set(packet, entityId);
|
|
||||||
equipmentSlots.set(packet, new ArrayList<>());
|
|
||||||
ProtocolWrapper.impl.setEquipmentPacketStack(packet, slot, CraftItemStack.asNMSCopy(stack));
|
|
||||||
return packet;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final Reflection.Field<net.minecraft.world.entity.EntityType> spawnType = Reflection.getField(ProtocolWrapper.spawnPacket, net.minecraft.world.entity.EntityType.class, 0);
|
||||||
private static Function<REntity, Object> entitySpawnPacketGenerator(Class<?> spawnPacket, int posOffset) {
|
private static Function<REntity, Object> entitySpawnPacketGenerator(Class<?> spawnPacket, int posOffset) {
|
||||||
BountifulWrapper.UUIDSetter uuid = BountifulWrapper.impl.getUUIDSetter(spawnPacket);
|
BountifulWrapper.UUIDSetter uuid = BountifulWrapper.impl.getUUIDSetter(spawnPacket);
|
||||||
Function<REntity, Object> packetGenerator = spawnPacketGenerator(spawnPacket, posOffset);
|
Function<REntity, Object> packetGenerator = spawnPacketGenerator(spawnPacket, posOffset);
|
||||||
@@ -410,7 +379,8 @@ public class REntity {
|
|||||||
return entity -> {
|
return entity -> {
|
||||||
Object packet = packetGenerator.apply(entity);
|
Object packet = packetGenerator.apply(entity);
|
||||||
uuid.set(packet, entity.uuid);
|
uuid.set(packet, entity.uuid);
|
||||||
FlatteningWrapper.impl.setSpawnPacketType(packet, entity.entityType);
|
ResourceLocation key = CraftNamespacedKey.toMinecraft(entity.entityType.getKey());
|
||||||
|
spawnType.set(packet, BuiltInRegistries.ENTITY_TYPE.get(key).get().value());
|
||||||
return packet;
|
return packet;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,9 +20,7 @@
|
|||||||
package de.steamwar.entity;
|
package de.steamwar.entity;
|
||||||
|
|
||||||
import com.comphenix.tinyprotocol.TinyProtocol;
|
import com.comphenix.tinyprotocol.TinyProtocol;
|
||||||
import de.steamwar.Reflection;
|
|
||||||
import de.steamwar.core.Core;
|
import de.steamwar.core.Core;
|
||||||
import de.steamwar.core.FlatteningWrapper;
|
|
||||||
import net.minecraft.network.protocol.game.ServerboundInteractPacket;
|
import net.minecraft.network.protocol.game.ServerboundInteractPacket;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
@@ -39,7 +37,6 @@ import java.util.concurrent.ConcurrentHashMap;
|
|||||||
import java.util.function.BiConsumer;
|
import java.util.function.BiConsumer;
|
||||||
import java.util.function.BiFunction;
|
import java.util.function.BiFunction;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Function;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
||||||
@@ -48,17 +45,6 @@ public class REntityServer implements Listener {
|
|||||||
private static final HashSet<REntity> emptyEntities = new HashSet<>(0);
|
private static final HashSet<REntity> emptyEntities = new HashSet<>(0);
|
||||||
private static final HashSet<Player> emptyPlayers = new HashSet<>(0);
|
private static final HashSet<Player> emptyPlayers = new HashSet<>(0);
|
||||||
|
|
||||||
private static final Class<?> useEntity = ServerboundInteractPacket.class;
|
|
||||||
private static final Reflection.Field<Integer> useEntityTarget = Reflection.getField(useEntity, int.class, 0);
|
|
||||||
private static final Class<?> useEntityEnumAction = Reflection.getClass("net.minecraft.network.protocol.game.ServerboundInteractPacket$Action");
|
|
||||||
private static final Reflection.Field<?> useEntityAction = Reflection.getField(useEntity, useEntityEnumAction, 0);
|
|
||||||
private static final Function<Object, Integer> getEntityAction;
|
|
||||||
static {
|
|
||||||
Class<?> useEntityEnumActionType = Reflection.getClass("net.minecraft.network.protocol.game.ServerboundInteractPacket$ActionType");
|
|
||||||
Reflection.Method useEntityGetAction = Reflection.getTypedMethod(useEntityEnumAction, null, useEntityEnumActionType);
|
|
||||||
getEntityAction = value -> ((Enum<?>) useEntityGetAction.invoke(value)).ordinal();
|
|
||||||
}
|
|
||||||
|
|
||||||
private final ConcurrentHashMap<Integer, REntity> entityMap = new ConcurrentHashMap<>();
|
private final ConcurrentHashMap<Integer, REntity> entityMap = new ConcurrentHashMap<>();
|
||||||
private final HashMap<Long, HashSet<REntity>> entities = new HashMap<>();
|
private final HashMap<Long, HashSet<REntity>> entities = new HashMap<>();
|
||||||
private final HashMap<Long, Set<Player>> players = new HashMap<>();
|
private final HashMap<Long, Set<Player>> players = new HashMap<>();
|
||||||
@@ -68,8 +54,8 @@ public class REntityServer implements Listener {
|
|||||||
private EntityActionListener callback = null;
|
private EntityActionListener callback = null;
|
||||||
private final Set<Player> playersThatClicked = Collections.synchronizedSet(new HashSet<>());
|
private final Set<Player> playersThatClicked = Collections.synchronizedSet(new HashSet<>());
|
||||||
|
|
||||||
private final BiFunction<Player, Object, Object> filter = (player, packet) -> {
|
private final BiFunction<Player, ServerboundInteractPacket, Object> filter = (player, packet) -> {
|
||||||
REntity entity = entityMap.get(useEntityTarget.get(packet));
|
REntity entity = entityMap.get(packet.getEntityId());
|
||||||
if (entity == null)
|
if (entity == null)
|
||||||
return packet;
|
return packet;
|
||||||
|
|
||||||
@@ -77,7 +63,7 @@ public class REntityServer implements Listener {
|
|||||||
return null;
|
return null;
|
||||||
|
|
||||||
playersThatClicked.add(player);
|
playersThatClicked.add(player);
|
||||||
EntityAction action = getEntityAction.apply(useEntityAction.get(packet)) == 1 ? EntityAction.ATTACK : EntityAction.INTERACT;
|
EntityAction action = packet.isAttack() ? EntityAction.ATTACK : EntityAction.INTERACT;
|
||||||
Bukkit.getScheduler().runTask(Core.getInstance(), () -> {
|
Bukkit.getScheduler().runTask(Core.getInstance(), () -> {
|
||||||
playersThatClicked.remove(player);
|
playersThatClicked.remove(player);
|
||||||
callback.onAction(player, entity, action);
|
callback.onAction(player, entity, action);
|
||||||
@@ -94,7 +80,7 @@ public class REntityServer implements Listener {
|
|||||||
this.callback = callback;
|
this.callback = callback;
|
||||||
|
|
||||||
if(uninitialized)
|
if(uninitialized)
|
||||||
TinyProtocol.instance.addFilter(useEntity, filter);
|
TinyProtocol.instance.addTypedFilter(ServerboundInteractPacket.class, filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addPlayer(Player player) {
|
public void addPlayer(Player player) {
|
||||||
@@ -117,7 +103,7 @@ public class REntityServer implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void close() {
|
public void close() {
|
||||||
TinyProtocol.instance.removeFilter(useEntity, filter);
|
TinyProtocol.instance.removeFilter(ServerboundInteractPacket.class, filter);
|
||||||
for(Player player : lastLocation.keySet().toArray(new Player[0])) {
|
for(Player player : lastLocation.keySet().toArray(new Player[0])) {
|
||||||
removePlayer(player);
|
removePlayer(player);
|
||||||
}
|
}
|
||||||
@@ -300,7 +286,7 @@ public class REntityServer implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private int viewRadius(Player player) {
|
private int viewRadius(Player player) {
|
||||||
return FlatteningWrapper.impl.getViewDistance(player) / 2;
|
return player.getClientViewDistance() / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
private long entityToId(REntity entity) {
|
private long entityToId(REntity entity) {
|
||||||
|
|||||||
@@ -19,9 +19,9 @@
|
|||||||
|
|
||||||
package de.steamwar.entity;
|
package de.steamwar.entity;
|
||||||
|
|
||||||
import de.steamwar.core.BountifulWrapper;
|
|
||||||
import de.steamwar.core.ProtocolWrapper;
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
import net.minecraft.network.syncher.EntityDataAccessor;
|
||||||
|
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.craftbukkit.inventory.CraftItemStack;
|
import org.bukkit.craftbukkit.inventory.CraftItemStack;
|
||||||
@@ -61,14 +61,14 @@ public class RItemDisplay extends RDisplay {
|
|||||||
sendPacket(updatePacketSink, this::getItemStack);
|
sendPacket(updatePacketSink, this::getItemStack);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Object itemStackWatcher = BountifulWrapper.impl.getDataWatcherObject(23, ProtocolWrapper.itemStack);
|
private static final EntityDataAccessor<net.minecraft.world.item.ItemStack> itemStackWatcher = new EntityDataAccessor<>(23, EntityDataSerializers.ITEM_STACK);
|
||||||
private void getItemStack(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
private void getItemStack(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
||||||
if (ignoreDefault || !itemStack.equals(DEFAULT_ITEM_STACK)) {
|
if (ignoreDefault || !itemStack.equals(DEFAULT_ITEM_STACK)) {
|
||||||
packetSink.accept(itemStackWatcher, CraftItemStack.asNMSCopy(itemStack));
|
packetSink.accept(itemStackWatcher, CraftItemStack.asNMSCopy(itemStack));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Object itemDisplayTransformWatcher = BountifulWrapper.impl.getDataWatcherObject(24, Byte.class);
|
private static final EntityDataAccessor<Byte> itemDisplayTransformWatcher = new EntityDataAccessor<>(24, EntityDataSerializers.BYTE);
|
||||||
public void setItemDisplayTransform(ItemDisplay.ItemDisplayTransform itemDisplayTransform) {
|
public void setItemDisplayTransform(ItemDisplay.ItemDisplayTransform itemDisplayTransform) {
|
||||||
this.itemDisplayTransform = itemDisplayTransform;
|
this.itemDisplayTransform = itemDisplayTransform;
|
||||||
sendPacket(updatePacketSink, this::getItemDisplayTransform);
|
sendPacket(updatePacketSink, this::getItemDisplayTransform);
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ import de.steamwar.network.CoreNetworkHandler;
|
|||||||
import de.steamwar.network.NetworkSender;
|
import de.steamwar.network.NetworkSender;
|
||||||
import de.steamwar.network.packets.common.PlayerSkinRequestPacket;
|
import de.steamwar.network.packets.common.PlayerSkinRequestPacket;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
import net.minecraft.network.protocol.game.ClientboundAddEntityPacket;
|
||||||
|
import net.minecraft.world.phys.Vec3;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
@@ -95,6 +97,18 @@ public class RPlayer extends REntity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Object getNamedSpawnPacket() {
|
private Object getNamedSpawnPacket() {
|
||||||
return PacketConstructor.impl.createRPlayerSpawn(this);
|
return new ClientboundAddEntityPacket(
|
||||||
|
entityId,
|
||||||
|
uuid,
|
||||||
|
x,
|
||||||
|
y,
|
||||||
|
z,
|
||||||
|
yaw,
|
||||||
|
pitch,
|
||||||
|
net.minecraft.world.entity.EntityType.PLAYER,
|
||||||
|
0,
|
||||||
|
Vec3.ZERO,
|
||||||
|
headYaw
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,10 +19,11 @@
|
|||||||
|
|
||||||
package de.steamwar.entity;
|
package de.steamwar.entity;
|
||||||
|
|
||||||
import de.steamwar.core.BountifulWrapper;
|
|
||||||
import de.steamwar.core.ChatWrapper;
|
import de.steamwar.core.ChatWrapper;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.network.syncher.EntityDataAccessor;
|
||||||
|
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.entity.TextDisplay;
|
import org.bukkit.entity.TextDisplay;
|
||||||
@@ -73,11 +74,10 @@ public class RTextDisplay extends RDisplay {
|
|||||||
sendPacket(updatePacketSink, this::getText);
|
sendPacket(updatePacketSink, this::getText);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Class<?> iChatBaseComponent = Component.class;
|
private static final EntityDataAccessor<Component> textWatcher = new EntityDataAccessor<>(23, EntityDataSerializers.COMPONENT);
|
||||||
private static final Object textWatcher = BountifulWrapper.impl.getDataWatcherObject(23, iChatBaseComponent);
|
|
||||||
private void getText(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
private void getText(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
||||||
if (ignoreDefault || !text.isEmpty()) {
|
if (ignoreDefault || !text.isEmpty()) {
|
||||||
packetSink.accept(textWatcher, ChatWrapper.impl.stringToChatComponent(text));
|
packetSink.accept(textWatcher, ChatWrapper.stringToChatComponent(text));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,7 +86,7 @@ public class RTextDisplay extends RDisplay {
|
|||||||
sendPacket(updatePacketSink, this::getLineWidth);
|
sendPacket(updatePacketSink, this::getLineWidth);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Object lineWidthWatcher = BountifulWrapper.impl.getDataWatcherObject(24, Integer.class);
|
private static final EntityDataAccessor<Integer> lineWidthWatcher = new EntityDataAccessor<>(24, EntityDataSerializers.INT);
|
||||||
private void getLineWidth(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
private void getLineWidth(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
||||||
if (ignoreDefault || lineWidth != 200) {
|
if (ignoreDefault || lineWidth != 200) {
|
||||||
packetSink.accept(lineWidthWatcher, lineWidth);
|
packetSink.accept(lineWidthWatcher, lineWidth);
|
||||||
@@ -98,7 +98,7 @@ public class RTextDisplay extends RDisplay {
|
|||||||
sendPacket(updatePacketSink, this::getTextOpacity);
|
sendPacket(updatePacketSink, this::getTextOpacity);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Object textOpacityWatcher = BountifulWrapper.impl.getDataWatcherObject(26, Byte.class);
|
private static final EntityDataAccessor<Byte> textOpacityWatcher = new EntityDataAccessor<>(26, EntityDataSerializers.BYTE);
|
||||||
private void getTextOpacity(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
private void getTextOpacity(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
||||||
if (ignoreDefault || textOpacity != (byte) -1) {
|
if (ignoreDefault || textOpacity != (byte) -1) {
|
||||||
packetSink.accept(textOpacityWatcher, textOpacity);
|
packetSink.accept(textOpacityWatcher, textOpacity);
|
||||||
@@ -120,7 +120,7 @@ public class RTextDisplay extends RDisplay {
|
|||||||
sendPacket(updatePacketSink, this::getTextStatus, this::getBackgroundColor);
|
sendPacket(updatePacketSink, this::getTextStatus, this::getBackgroundColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Object backgroundColorWatcher = BountifulWrapper.impl.getDataWatcherObject(25, Integer.class);
|
private static final EntityDataAccessor<Integer> backgroundColorWatcher = new EntityDataAccessor<>(25, EntityDataSerializers.INT);
|
||||||
private void getBackgroundColor(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
private void getBackgroundColor(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
||||||
if (ignoreDefault || backgroundColor != null) {
|
if (ignoreDefault || backgroundColor != null) {
|
||||||
packetSink.accept(backgroundColorWatcher, backgroundColor);
|
packetSink.accept(backgroundColorWatcher, backgroundColor);
|
||||||
@@ -139,7 +139,7 @@ public class RTextDisplay extends RDisplay {
|
|||||||
sendPacket(updatePacketSink, this::getTextStatus);
|
sendPacket(updatePacketSink, this::getTextStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Object textStatusWatcher = BountifulWrapper.impl.getDataWatcherObject(27, Byte.class);
|
private static final EntityDataAccessor<Byte> textStatusWatcher = new EntityDataAccessor<>(27, EntityDataSerializers.BYTE);
|
||||||
private void getTextStatus(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
private void getTextStatus(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
||||||
byte status = 0;
|
byte status = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -19,15 +19,17 @@
|
|||||||
|
|
||||||
package de.steamwar.inventory;
|
package de.steamwar.inventory;
|
||||||
|
|
||||||
|
import com.destroystokyo.paper.profile.PlayerProfile;
|
||||||
import com.google.gson.JsonArray;
|
import com.google.gson.JsonArray;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import de.steamwar.core.FlatteningWrapper;
|
|
||||||
import de.steamwar.core.TrickyTrialsWrapper;
|
import de.steamwar.core.TrickyTrialsWrapper;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.OfflinePlayer;
|
import org.bukkit.OfflinePlayer;
|
||||||
import org.bukkit.inventory.ItemFlag;
|
import org.bukkit.inventory.ItemFlag;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
import org.bukkit.inventory.meta.SkullMeta;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@@ -47,27 +49,29 @@ public class SWItem {
|
|||||||
|
|
||||||
public static SWItem getPlayerSkull(String playerName){
|
public static SWItem getPlayerSkull(String playerName){
|
||||||
SWItem p = new SWItem();
|
SWItem p = new SWItem();
|
||||||
ItemStack head = FlatteningWrapper.impl.setSkullOwner(playerName);
|
ItemStack head = new ItemStack(Material.PLAYER_HEAD, 1);
|
||||||
|
head.editMeta(SkullMeta.class, skullMeta -> {
|
||||||
|
try {
|
||||||
|
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(playerName.startsWith(".") ? playerName.substring(1) : playerName);
|
||||||
|
PlayerProfile playerProfile = offlinePlayer.getPlayerProfile();
|
||||||
|
playerProfile.complete();
|
||||||
|
skullMeta.setPlayerProfile(playerProfile);
|
||||||
|
} catch (Exception e) {
|
||||||
|
// Ignore
|
||||||
|
}
|
||||||
|
});
|
||||||
p.setItemStack(head);
|
p.setItemStack(head);
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Material getMaterial(String material){
|
public static Material getMaterial(String material){
|
||||||
try{
|
try{
|
||||||
Material m = FlatteningWrapper.impl.getMaterial(material);
|
return Material.valueOf(material);
|
||||||
if(m == null)
|
|
||||||
return Material.BARRIER;
|
|
||||||
|
|
||||||
return m;
|
|
||||||
}catch(IllegalArgumentException e){
|
}catch(IllegalArgumentException e){
|
||||||
return Material.STONE;
|
return Material.BARRIER;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Material getDye(int colorCode){
|
|
||||||
return FlatteningWrapper.impl.getDye(colorCode);
|
|
||||||
}
|
|
||||||
|
|
||||||
public SWItem() {
|
public SWItem() {
|
||||||
itemStack = new ItemStack(Material.AIR);
|
itemStack = new ItemStack(Material.AIR);
|
||||||
itemMeta = itemStack.getItemMeta();
|
itemMeta = itemStack.getItemMeta();
|
||||||
@@ -119,13 +123,7 @@ public class SWItem {
|
|||||||
public static SWItem getItemFromJson(JsonObject itemJson) {
|
public static SWItem getItemFromJson(JsonObject itemJson) {
|
||||||
SWItem item = null;
|
SWItem item = null;
|
||||||
try {
|
try {
|
||||||
if(itemJson.has("color")) {
|
item = new SWItem(SWItem.getMaterial(itemJson.get("material").getAsString()), itemJson.get("title").getAsString());
|
||||||
item = new SWItem(SWItem.getDye(itemJson.get("color").getAsInt()),
|
|
||||||
itemJson.has("color")?itemJson.get("color").getAsByte():0,
|
|
||||||
itemJson.get("title").getAsString());
|
|
||||||
}else {
|
|
||||||
item = new SWItem(SWItem.getMaterial(itemJson.get("material").getAsString()), itemJson.get("title").getAsString());
|
|
||||||
}
|
|
||||||
}catch (IllegalArgumentException e) {
|
}catch (IllegalArgumentException e) {
|
||||||
item = new SWItem(Material.STONE, itemJson.get("title").getAsString());
|
item = new SWItem(Material.STONE, itemJson.get("title").getAsString());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,27 +64,27 @@ public class SWListInv<T> extends SWInventory {
|
|||||||
|
|
||||||
if (sizeBiggerMax()) {
|
if (sizeBiggerMax()) {
|
||||||
if (page != 0) {
|
if (page != 0) {
|
||||||
setItem(45, new SWItem(SWItem.getDye(10), (byte) 10, Core.MESSAGE.parse("SWLISINV_PREVIOUS_PAGE_ACTIVE", player), (ClickType click) -> {
|
setItem(45, new SWItem(Material.LIME_DYE, (byte) 10, Core.MESSAGE.parse("SWLISINV_PREVIOUS_PAGE_ACTIVE", player), (ClickType click) -> {
|
||||||
page--;
|
page--;
|
||||||
open();
|
open();
|
||||||
}).setCustomModelData(CMDs.PREVIOUS_PAGE));
|
}).setCustomModelData(CMDs.PREVIOUS_PAGE));
|
||||||
} else {
|
} else {
|
||||||
setItem(45, new SWItem(SWItem.getDye(8), (byte) 8, Core.MESSAGE.parse("SWLISINV_PREVIOUS_PAGE_INACTIVE", player), (ClickType click) -> {
|
setItem(45, new SWItem(Material.GRAY_DYE, (byte) 8, Core.MESSAGE.parse("SWLISINV_PREVIOUS_PAGE_INACTIVE", player), (ClickType click) -> {
|
||||||
}).setCustomModelData(CMDs.PREVIOUS_PAGE));
|
}).setCustomModelData(CMDs.PREVIOUS_PAGE));
|
||||||
}
|
}
|
||||||
if (page < elements.size() / 45 - (elements.size() % 45 == 0 ? 1 : 0)) {
|
if (page < elements.size() / 45 - (elements.size() % 45 == 0 ? 1 : 0)) {
|
||||||
setItem(53, new SWItem(SWItem.getDye(10), (byte) 10, Core.MESSAGE.parse("SWLISINV_NEXT_PAGE_ACTIVE", player), (ClickType click) -> {
|
setItem(53, new SWItem(Material.LIME_DYE, (byte) 10, Core.MESSAGE.parse("SWLISINV_NEXT_PAGE_ACTIVE", player), (ClickType click) -> {
|
||||||
page++;
|
page++;
|
||||||
open();
|
open();
|
||||||
}).setCustomModelData(CMDs.NEXT_PAGE));
|
}).setCustomModelData(CMDs.NEXT_PAGE));
|
||||||
} else {
|
} else {
|
||||||
setItem(53, new SWItem(SWItem.getDye(8), (byte) 8, Core.MESSAGE.parse("SWLISINV_NEXT_PAGE_INACTIVE", player), (ClickType click) -> {
|
setItem(53, new SWItem(Material.GRAY_DYE, (byte) 8, Core.MESSAGE.parse("SWLISINV_NEXT_PAGE_INACTIVE", player), (ClickType click) -> {
|
||||||
}).setCustomModelData(CMDs.NEXT_PAGE));
|
}).setCustomModelData(CMDs.NEXT_PAGE));
|
||||||
}
|
}
|
||||||
} else if (!dynamicSize) {
|
} else if (!dynamicSize) {
|
||||||
setItem(45, new SWItem(SWItem.getDye(8), (byte) 8, Core.MESSAGE.parse("SWLISINV_PREVIOUS_PAGE_INACTIVE", player), (ClickType click) -> {
|
setItem(45, new SWItem(Material.GRAY_DYE, (byte) 8, Core.MESSAGE.parse("SWLISINV_PREVIOUS_PAGE_INACTIVE", player), (ClickType click) -> {
|
||||||
}).setCustomModelData(CMDs.PREVIOUS_PAGE));
|
}).setCustomModelData(CMDs.PREVIOUS_PAGE));
|
||||||
setItem(53, new SWItem(SWItem.getDye(8), (byte) 8, Core.MESSAGE.parse("SWLISINV_NEXT_PAGE_INACTIVE", player), (ClickType click) -> {
|
setItem(53, new SWItem(Material.GRAY_DYE, (byte) 8, Core.MESSAGE.parse("SWLISINV_NEXT_PAGE_INACTIVE", player), (ClickType click) -> {
|
||||||
}).setCustomModelData(CMDs.NEXT_PAGE));
|
}).setCustomModelData(CMDs.NEXT_PAGE));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -142,7 +142,7 @@ public class SWListInv<T> extends SWInventory {
|
|||||||
for(SchematicNode s : schems){
|
for(SchematicNode s : schems){
|
||||||
Material m;
|
Material m;
|
||||||
if(s.getItem().isEmpty())
|
if(s.getItem().isEmpty())
|
||||||
m = SWItem.getMaterial("CAULDRON_ITEM");
|
m = Material.CAULDRON;
|
||||||
else
|
else
|
||||||
m = SWItem.getMaterial(s.getItem());
|
m = SWItem.getMaterial(s.getItem());
|
||||||
SWItem item = new SWItem(m,"§e" + s.getName());
|
SWItem item = new SWItem(m,"§e" + s.getName());
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ public class SchematicSelector {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(target.target.dirs) {
|
if(target.target.dirs) {
|
||||||
inv.setItem(49, SWItem.getDye(10), Core.MESSAGE.parse("SCHEM_SELECTOR_SEL_DIR", player), clickType -> {
|
inv.setItem(49, Material.LIME_DYE, Core.MESSAGE.parse("SCHEM_SELECTOR_SEL_DIR", player), clickType -> {
|
||||||
player.closeInventory();
|
player.closeInventory();
|
||||||
callback.accept(parent);
|
callback.accept(parent);
|
||||||
});
|
});
|
||||||
@@ -312,7 +312,7 @@ public class SchematicSelector {
|
|||||||
openFilter();
|
openFilter();
|
||||||
} else {
|
} else {
|
||||||
SWAnvilInv swAnvilInv = new SWAnvilInv(player, Core.MESSAGE.parse("SCHEM_SELECTOR_FILTER_ENTER_OWNER", player));
|
SWAnvilInv swAnvilInv = new SWAnvilInv(player, Core.MESSAGE.parse("SCHEM_SELECTOR_FILTER_ENTER_OWNER", player));
|
||||||
swAnvilInv.setItem(SWItem.getMaterial("SKULL_ITEM"), (byte) 3, Collections.singletonList(Core.MESSAGE.parse("SCHEM_SELECTOR_CLICK_BACK", player)), false);
|
swAnvilInv.setItem(Material.SKELETON_SKULL, (byte) 3, Collections.singletonList(Core.MESSAGE.parse("SCHEM_SELECTOR_CLICK_BACK", player)), false);
|
||||||
swAnvilInv.setCallback(s -> {
|
swAnvilInv.setCallback(s -> {
|
||||||
if(SteamwarUser.get(s) != null) {
|
if(SteamwarUser.get(s) != null) {
|
||||||
filter = filter.withOwner(SteamwarUser.get(s).getId());
|
filter = filter.withOwner(SteamwarUser.get(s).getId());
|
||||||
@@ -324,7 +324,7 @@ public class SchematicSelector {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
if(filter.getOwner() == null) {
|
if(filter.getOwner() == null) {
|
||||||
inv.setItem(1, SWItem.getMaterial("SKULL_ITEM"), (byte) 3, Core.MESSAGE.parse("SCHEM_SELECTOR_FILTER_OWNER", player), ownerCallback);
|
inv.setItem(1, Material.SKELETON_SKULL, (byte) 3, Core.MESSAGE.parse("SCHEM_SELECTOR_FILTER_OWNER", player), ownerCallback);
|
||||||
} else {
|
} else {
|
||||||
SteamwarUser tUser = SteamwarUser.byId(filter.getOwner());
|
SteamwarUser tUser = SteamwarUser.byId(filter.getOwner());
|
||||||
SWItem item = SWItem.getPlayerSkull(tUser.getUserName());
|
SWItem item = SWItem.getPlayerSkull(tUser.getUserName());
|
||||||
@@ -408,12 +408,12 @@ public class SchematicSelector {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inv.setItem(7, SWItem.getDye(1), Core.MESSAGE.parse("SCHEM_SELECTOR_CANCEL", player), clickType -> {
|
inv.setItem(7, Material.RED_DYE, Core.MESSAGE.parse("SCHEM_SELECTOR_CANCEL", player), clickType -> {
|
||||||
filter = null;
|
filter = null;
|
||||||
depth = 0;
|
depth = 0;
|
||||||
openList(null);
|
openList(null);
|
||||||
});
|
});
|
||||||
inv.setItem(8, SWItem.getDye(10), Core.MESSAGE.parse("SCHEM_SELECTOR_GO", player), clickType -> {
|
inv.setItem(8, Material.LIME_DYE, Core.MESSAGE.parse("SCHEM_SELECTOR_GO", player), clickType -> {
|
||||||
if (!filter.equals(filters[0])) {
|
if (!filter.equals(filters[0])) {
|
||||||
for (int i = filters.length - 1; i > 0; i--) {
|
for (int i = filters.length - 1; i > 0; i--) {
|
||||||
filters[i] = filters[i-1];
|
filters[i] = filters[i-1];
|
||||||
@@ -646,7 +646,7 @@ public class SchematicSelector {
|
|||||||
return o1.getSchemtype().name().compareTo(o2.getSchemtype().name());
|
return o1.getSchemtype().name().compareTo(o2.getSchemtype().name());
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
LAST_UPDATED(SWItem.getMaterial("WATCH"), "SCHEM_SELECTOR_SORTING_UPDATE", Comparator.comparing(SchematicNode::getLastUpdate));
|
LAST_UPDATED(Material.CLOCK, "SCHEM_SELECTOR_SORTING_UPDATE", Comparator.comparing(SchematicNode::getLastUpdate));
|
||||||
|
|
||||||
private final Material mat;
|
private final Material mat;
|
||||||
private final String name;
|
private final String name;
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ import de.steamwar.command.TypeValidator
|
|||||||
import de.steamwar.tntleague.colorByTeam
|
import de.steamwar.tntleague.colorByTeam
|
||||||
import de.steamwar.tntleague.config.TNTLeagueConfig
|
import de.steamwar.tntleague.config.TNTLeagueConfig
|
||||||
import de.steamwar.tntleague.game.TNTLeagueGame
|
import de.steamwar.tntleague.game.TNTLeagueGame
|
||||||
import de.steamwar.tntleague.message
|
|
||||||
import net.md_5.bungee.api.chat.ClickEvent
|
import net.md_5.bungee.api.chat.ClickEvent
|
||||||
import org.bukkit.entity.Player
|
import org.bukkit.entity.Player
|
||||||
|
|
||||||
|
|||||||
@@ -20,14 +20,11 @@
|
|||||||
package de.steamwar.tntleague.config
|
package de.steamwar.tntleague.config
|
||||||
|
|
||||||
import de.steamwar.tntleague.plugin
|
import de.steamwar.tntleague.plugin
|
||||||
import de.steamwar.kotlin.util.Area
|
|
||||||
import net.kyori.adventure.text.Component
|
|
||||||
import org.bukkit.Bukkit
|
import org.bukkit.Bukkit
|
||||||
import org.bukkit.Location
|
import org.bukkit.Location
|
||||||
import org.bukkit.Material
|
import org.bukkit.Material
|
||||||
import org.bukkit.configuration.ConfigurationSection
|
import org.bukkit.configuration.ConfigurationSection
|
||||||
import org.bukkit.configuration.file.YamlConfiguration
|
import org.bukkit.configuration.file.YamlConfiguration
|
||||||
import org.bukkit.entity.WanderingTrader
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
import kotlin.properties.Delegates
|
import kotlin.properties.Delegates
|
||||||
|
|||||||
@@ -19,7 +19,6 @@
|
|||||||
|
|
||||||
package de.steamwar.tntleague.events
|
package de.steamwar.tntleague.events
|
||||||
|
|
||||||
import de.steamwar.message.SubMessage
|
|
||||||
import de.steamwar.tntleague.config.TNTLeagueWorldConfig
|
import de.steamwar.tntleague.config.TNTLeagueWorldConfig
|
||||||
import de.steamwar.tntleague.game.TNTLeagueGame
|
import de.steamwar.tntleague.game.TNTLeagueGame
|
||||||
import de.steamwar.tntleague.game.TNTLeagueTeam
|
import de.steamwar.tntleague.game.TNTLeagueTeam
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ import org.bukkit.event.player.PlayerAttemptPickupItemEvent
|
|||||||
import org.bukkit.event.player.PlayerInteractEntityEvent
|
import org.bukkit.event.player.PlayerInteractEntityEvent
|
||||||
import org.bukkit.event.player.PlayerJoinEvent
|
import org.bukkit.event.player.PlayerJoinEvent
|
||||||
import org.bukkit.event.player.PlayerMoveEvent
|
import org.bukkit.event.player.PlayerMoveEvent
|
||||||
import org.bukkit.event.player.*
|
|
||||||
import org.bukkit.persistence.PersistentDataType
|
import org.bukkit.persistence.PersistentDataType
|
||||||
|
|
||||||
object IngameListener : Listener {
|
object IngameListener : Listener {
|
||||||
|
|||||||
@@ -26,7 +26,10 @@ import org.bukkit.event.EventHandler
|
|||||||
import org.bukkit.event.Listener
|
import org.bukkit.event.Listener
|
||||||
import org.bukkit.event.entity.EntityDamageEvent
|
import org.bukkit.event.entity.EntityDamageEvent
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent
|
import org.bukkit.event.inventory.InventoryClickEvent
|
||||||
import org.bukkit.event.player.*
|
import org.bukkit.event.player.PlayerDropItemEvent
|
||||||
|
import org.bukkit.event.player.PlayerInteractEntityEvent
|
||||||
|
import org.bukkit.event.player.PlayerInteractEvent
|
||||||
|
import org.bukkit.event.player.PlayerJoinEvent
|
||||||
|
|
||||||
object LobbyListener: Listener {
|
object LobbyListener: Listener {
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,6 @@
|
|||||||
package de.steamwar.tntleague.game
|
package de.steamwar.tntleague.game
|
||||||
|
|
||||||
import de.steamwar.kotlin.util.Area
|
import de.steamwar.kotlin.util.Area
|
||||||
import de.steamwar.message.SubMessage
|
|
||||||
import de.steamwar.network.NetworkSender
|
import de.steamwar.network.NetworkSender
|
||||||
import de.steamwar.network.packets.common.FightInfoPacket
|
import de.steamwar.network.packets.common.FightInfoPacket
|
||||||
import de.steamwar.scoreboard.SWScoreboard
|
import de.steamwar.scoreboard.SWScoreboard
|
||||||
@@ -48,7 +47,6 @@ import org.bukkit.inventory.ItemStack
|
|||||||
import org.bukkit.scheduler.BukkitTask
|
import org.bukkit.scheduler.BukkitTask
|
||||||
import java.sql.Timestamp
|
import java.sql.Timestamp
|
||||||
import java.time.Instant
|
import java.time.Instant
|
||||||
import kotlin.random.Random
|
|
||||||
|
|
||||||
object TNTLeagueGame {
|
object TNTLeagueGame {
|
||||||
var state: GameState = GameState.LOBBY
|
var state: GameState = GameState.LOBBY
|
||||||
|
|||||||
@@ -25,10 +25,7 @@ import de.steamwar.tntleague.config.TNTLeagueConfig
|
|||||||
import de.steamwar.tntleague.inventory.DealerInventory.Companion.buyItem
|
import de.steamwar.tntleague.inventory.DealerInventory.Companion.buyItem
|
||||||
import de.steamwar.tntleague.inventory.DealerInventory.Companion.itemsByCategory
|
import de.steamwar.tntleague.inventory.DealerInventory.Companion.itemsByCategory
|
||||||
import de.steamwar.tntleague.message
|
import de.steamwar.tntleague.message
|
||||||
import net.kyori.adventure.text.Component
|
|
||||||
import org.bukkit.Bukkit
|
|
||||||
import org.bukkit.entity.Player
|
import org.bukkit.entity.Player
|
||||||
import org.bukkit.inventory.Inventory
|
|
||||||
|
|
||||||
class CategoryInventory(player: Player, category: TNTLeagueConfig.ItemCategory): KotlinInventory(player) {
|
class CategoryInventory(player: Player, category: TNTLeagueConfig.ItemCategory): KotlinInventory(player) {
|
||||||
override fun createInventory() = SWInventory(player, 9 * 6, message.parse("DEALER", player))
|
override fun createInventory() = SWInventory(player, 9 * 6, message.parse("DEALER", player))
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ import org.bukkit.NamespacedKey
|
|||||||
import org.bukkit.Sound
|
import org.bukkit.Sound
|
||||||
import org.bukkit.entity.Player
|
import org.bukkit.entity.Player
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent
|
import org.bukkit.event.inventory.InventoryClickEvent
|
||||||
import org.bukkit.inventory.Inventory
|
|
||||||
import org.bukkit.inventory.ItemStack
|
import org.bukkit.inventory.ItemStack
|
||||||
import org.bukkit.persistence.PersistentDataType
|
import org.bukkit.persistence.PersistentDataType
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import de.steamwar.tntleague.game.TNTLeagueGame
|
|||||||
import de.steamwar.tntleague.game.TNTLeagueTeam
|
import de.steamwar.tntleague.game.TNTLeagueTeam
|
||||||
import de.steamwar.tntleague.message
|
import de.steamwar.tntleague.message
|
||||||
import org.bukkit.entity.Player
|
import org.bukkit.entity.Player
|
||||||
import kotlin.collections.HashMap
|
|
||||||
|
|
||||||
data class TNTLeagueScoreboard(val p: Player): ScoreboardCallback {
|
data class TNTLeagueScoreboard(val p: Player): ScoreboardCallback {
|
||||||
override fun getData(): HashMap<String, Int> {
|
override fun getData(): HashMap<String, Int> {
|
||||||
|
|||||||
@@ -19,18 +19,14 @@
|
|||||||
|
|
||||||
package de.steamwar.teamserver.listener;
|
package de.steamwar.teamserver.listener;
|
||||||
|
|
||||||
import de.steamwar.core.Core;
|
|
||||||
import de.steamwar.core.TrickyTrialsWrapper;
|
import de.steamwar.core.TrickyTrialsWrapper;
|
||||||
import de.steamwar.linkage.Linked;
|
import de.steamwar.linkage.Linked;
|
||||||
import de.steamwar.teamserver.Builder;
|
import de.steamwar.teamserver.Builder;
|
||||||
import net.md_5.bungee.api.ChatMessageType;
|
import net.md_5.bungee.api.ChatMessageType;
|
||||||
import net.md_5.bungee.api.chat.BaseComponent;
|
|
||||||
import net.md_5.bungee.api.chat.TextComponent;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.data.type.Switch;
|
import org.bukkit.block.data.type.Switch;
|
||||||
import org.bukkit.entity.EntityType;
|
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
|||||||
@@ -27,13 +27,15 @@ import de.steamwar.towerrun.game.TowerRunPlayer;
|
|||||||
import de.steamwar.towerrun.state.GameState;
|
import de.steamwar.towerrun.state.GameState;
|
||||||
import de.steamwar.towerrun.state.GameStateBukkitListener;
|
import de.steamwar.towerrun.state.GameStateBukkitListener;
|
||||||
import de.steamwar.towerrun.state.GameStates;
|
import de.steamwar.towerrun.state.GameStates;
|
||||||
import lombok.val;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.player.*;
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||||
|
import org.bukkit.event.player.PlayerMoveEvent;
|
||||||
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
import org.bukkit.event.player.PlayerRespawnEvent;
|
||||||
|
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,6 @@ import org.bukkit.event.player.PlayerJoinEvent;
|
|||||||
import org.bukkit.event.player.PlayerMoveEvent;
|
import org.bukkit.event.player.PlayerMoveEvent;
|
||||||
|
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
@Linked
|
@Linked
|
||||||
public class LobbyListener extends GameStateBukkitListener {
|
public class LobbyListener extends GameStateBukkitListener {
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import de.steamwar.towerrun.state.GameStates;
|
|||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.EnumSet;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
public abstract class WinCondition extends GameStateBukkitListener {
|
public abstract class WinCondition extends GameStateBukkitListener {
|
||||||
|
|||||||
@@ -21,12 +21,12 @@ package de.steamwar.command;
|
|||||||
|
|
||||||
import com.velocitypowered.api.network.ProtocolVersion;
|
import com.velocitypowered.api.network.ProtocolVersion;
|
||||||
import com.velocitypowered.api.proxy.Player;
|
import com.velocitypowered.api.proxy.Player;
|
||||||
import de.steamwar.velocitycore.ServerVersion;
|
|
||||||
import de.steamwar.velocitycore.VelocityCore;
|
|
||||||
import de.steamwar.velocitycore.commands.TypeMappers;
|
|
||||||
import de.steamwar.messages.Chatter;
|
import de.steamwar.messages.Chatter;
|
||||||
import de.steamwar.sql.SteamwarUser;
|
import de.steamwar.sql.SteamwarUser;
|
||||||
import de.steamwar.sql.Team;
|
import de.steamwar.sql.Team;
|
||||||
|
import de.steamwar.velocitycore.ServerVersion;
|
||||||
|
import de.steamwar.velocitycore.VelocityCore;
|
||||||
|
import de.steamwar.velocitycore.commands.TypeMappers;
|
||||||
import lombok.experimental.UtilityClass;
|
import lombok.experimental.UtilityClass;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|||||||
@@ -19,8 +19,8 @@
|
|||||||
|
|
||||||
package de.steamwar.sql;
|
package de.steamwar.sql;
|
||||||
|
|
||||||
import de.steamwar.velocitycore.VelocityCore;
|
|
||||||
import de.steamwar.sql.internal.SQLConfig;
|
import de.steamwar.sql.internal.SQLConfig;
|
||||||
|
import de.steamwar.velocitycore.VelocityCore;
|
||||||
|
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ package de.steamwar.velocitycore;
|
|||||||
import com.velocitypowered.api.proxy.Player;
|
import com.velocitypowered.api.proxy.Player;
|
||||||
import com.viaversion.viaversion.api.Via;
|
import com.viaversion.viaversion.api.Via;
|
||||||
import com.viaversion.viaversion.velocity.platform.VelocityViaConfig;
|
import com.viaversion.viaversion.velocity.platform.VelocityViaConfig;
|
||||||
import de.steamwar.sql.GameModeConfig;
|
|
||||||
import de.steamwar.messages.Chatter;
|
import de.steamwar.messages.Chatter;
|
||||||
import de.steamwar.persistent.Arenaserver;
|
import de.steamwar.persistent.Arenaserver;
|
||||||
import de.steamwar.persistent.Bauserver;
|
import de.steamwar.persistent.Bauserver;
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ package de.steamwar.velocitycore;
|
|||||||
|
|
||||||
import com.velocitypowered.api.network.ProtocolVersion;
|
import com.velocitypowered.api.network.ProtocolVersion;
|
||||||
import de.steamwar.sql.GameModeConfig;
|
import de.steamwar.sql.GameModeConfig;
|
||||||
import de.steamwar.sql.SchematicType;
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
|
|||||||
@@ -20,14 +20,14 @@
|
|||||||
package de.steamwar.velocitycore;
|
package de.steamwar.velocitycore;
|
||||||
|
|
||||||
import com.velocitypowered.api.proxy.Player;
|
import com.velocitypowered.api.proxy.Player;
|
||||||
import de.steamwar.velocitycore.network.NetworkSender;
|
|
||||||
import de.steamwar.velocitycore.network.handlers.FightInfoHandler;
|
|
||||||
import de.steamwar.messages.Chatter;
|
import de.steamwar.messages.Chatter;
|
||||||
import de.steamwar.messages.Message;
|
import de.steamwar.messages.Message;
|
||||||
import de.steamwar.network.packets.server.StartingServerPacket;
|
import de.steamwar.network.packets.server.StartingServerPacket;
|
||||||
import de.steamwar.persistent.Subserver;
|
import de.steamwar.persistent.Subserver;
|
||||||
import de.steamwar.sql.IgnoreSystem;
|
import de.steamwar.sql.IgnoreSystem;
|
||||||
import de.steamwar.sql.SteamwarUser;
|
import de.steamwar.sql.SteamwarUser;
|
||||||
|
import de.steamwar.velocitycore.network.NetworkSender;
|
||||||
|
import de.steamwar.velocitycore.network.handlers.FightInfoHandler;
|
||||||
import net.kyori.adventure.text.event.ClickEvent;
|
import net.kyori.adventure.text.event.ClickEvent;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|||||||
@@ -19,11 +19,11 @@
|
|||||||
|
|
||||||
package de.steamwar.velocitycore.commands;
|
package de.steamwar.velocitycore.commands;
|
||||||
|
|
||||||
import de.steamwar.linkage.Linked;
|
|
||||||
import de.steamwar.velocitycore.discord.DiscordBot;
|
|
||||||
import de.steamwar.command.SWCommand;
|
import de.steamwar.command.SWCommand;
|
||||||
|
import de.steamwar.linkage.Linked;
|
||||||
import de.steamwar.messages.Chatter;
|
import de.steamwar.messages.Chatter;
|
||||||
import de.steamwar.sql.UserPerm;
|
import de.steamwar.sql.UserPerm;
|
||||||
|
import de.steamwar.velocitycore.discord.DiscordBot;
|
||||||
|
|
||||||
@Linked
|
@Linked
|
||||||
public class AlertCommand extends SWCommand {
|
public class AlertCommand extends SWCommand {
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import de.steamwar.command.PreviousArguments;
|
|||||||
import de.steamwar.command.SWCommand;
|
import de.steamwar.command.SWCommand;
|
||||||
import de.steamwar.command.TypeMapper;
|
import de.steamwar.command.TypeMapper;
|
||||||
import de.steamwar.command.TypeValidator;
|
import de.steamwar.command.TypeValidator;
|
||||||
import de.steamwar.sql.GameModeConfig;
|
import de.steamwar.data.BauLockState;
|
||||||
import de.steamwar.linkage.EventMode;
|
import de.steamwar.linkage.EventMode;
|
||||||
import de.steamwar.linkage.Linked;
|
import de.steamwar.linkage.Linked;
|
||||||
import de.steamwar.linkage.LinkedInstance;
|
import de.steamwar.linkage.LinkedInstance;
|
||||||
@@ -33,13 +33,16 @@ import de.steamwar.messages.PlayerChatter;
|
|||||||
import de.steamwar.network.packets.server.BaumemberUpdatePacket;
|
import de.steamwar.network.packets.server.BaumemberUpdatePacket;
|
||||||
import de.steamwar.persistent.Bauserver;
|
import de.steamwar.persistent.Bauserver;
|
||||||
import de.steamwar.sql.BauweltMember;
|
import de.steamwar.sql.BauweltMember;
|
||||||
|
import de.steamwar.sql.GameModeConfig;
|
||||||
import de.steamwar.sql.SteamwarUser;
|
import de.steamwar.sql.SteamwarUser;
|
||||||
import de.steamwar.velocitycore.*;
|
import de.steamwar.velocitycore.ServerStarter;
|
||||||
|
import de.steamwar.velocitycore.ServerVersion;
|
||||||
|
import de.steamwar.velocitycore.SubserverSystem;
|
||||||
|
import de.steamwar.velocitycore.VelocityCore;
|
||||||
import de.steamwar.velocitycore.inventory.SWInventory;
|
import de.steamwar.velocitycore.inventory.SWInventory;
|
||||||
import de.steamwar.velocitycore.inventory.SWItem;
|
import de.steamwar.velocitycore.inventory.SWItem;
|
||||||
import de.steamwar.velocitycore.network.NetworkSender;
|
import de.steamwar.velocitycore.network.NetworkSender;
|
||||||
import de.steamwar.velocitycore.util.BauLock;
|
import de.steamwar.velocitycore.util.BauLock;
|
||||||
import de.steamwar.data.BauLockState;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
@@ -219,7 +222,7 @@ public class BauCommand extends SWCommand {
|
|||||||
@Register("delete")
|
@Register("delete")
|
||||||
public void delete(PlayerChatter sender, ServerVersion version) {
|
public void delete(PlayerChatter sender, ServerVersion version) {
|
||||||
SWInventory inventory = new SWInventory(sender, 9, new Message("BAU_DELETE_GUI_NAME"));
|
SWInventory inventory = new SWInventory(sender, 9, new Message("BAU_DELETE_GUI_NAME"));
|
||||||
inventory.addItem(0, new SWItem(new Message("BAU_DELETE_GUI_DELETE"), 10), click -> {
|
inventory.addItem(0, new SWItem("LIME_DYE", new Message("BAU_DELETE_GUI_DELETE")), click -> {
|
||||||
String world = version.getWorldFolder(ServerStarter.WORLDS_BASE_PATH) + sender.user().getId();
|
String world = version.getWorldFolder(ServerStarter.WORLDS_BASE_PATH) + sender.user().getId();
|
||||||
|
|
||||||
VelocityCore.schedule(() -> {
|
VelocityCore.schedule(() -> {
|
||||||
@@ -233,7 +236,7 @@ public class BauCommand extends SWCommand {
|
|||||||
|
|
||||||
inventory.close();
|
inventory.close();
|
||||||
});
|
});
|
||||||
inventory.addItem(8, new SWItem(new Message("BAU_DELETE_GUI_CANCEL"), 1), click -> inventory.close());
|
inventory.addItem(8, new SWItem("RED_DYE", new Message("BAU_DELETE_GUI_CANCEL")), click -> inventory.close());
|
||||||
inventory.open();
|
inventory.open();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,19 +19,18 @@
|
|||||||
|
|
||||||
package de.steamwar.velocitycore.commands;
|
package de.steamwar.velocitycore.commands;
|
||||||
|
|
||||||
import de.steamwar.sql.GameModeConfig;
|
import de.steamwar.command.PreviousArguments;
|
||||||
|
import de.steamwar.command.SWCommand;
|
||||||
|
import de.steamwar.command.TypeMapper;
|
||||||
import de.steamwar.linkage.Linked;
|
import de.steamwar.linkage.Linked;
|
||||||
import de.steamwar.sql.SchematicType;
|
import de.steamwar.messages.Chatter;
|
||||||
|
import de.steamwar.messages.PlayerChatter;
|
||||||
|
import de.steamwar.sql.GameModeConfig;
|
||||||
|
import de.steamwar.sql.UserPerm;
|
||||||
import de.steamwar.velocitycore.ArenaMode;
|
import de.steamwar.velocitycore.ArenaMode;
|
||||||
import de.steamwar.velocitycore.ServerStarter;
|
import de.steamwar.velocitycore.ServerStarter;
|
||||||
import de.steamwar.velocitycore.ServerVersion;
|
import de.steamwar.velocitycore.ServerVersion;
|
||||||
import de.steamwar.velocitycore.VelocityCore;
|
import de.steamwar.velocitycore.VelocityCore;
|
||||||
import de.steamwar.command.PreviousArguments;
|
|
||||||
import de.steamwar.command.SWCommand;
|
|
||||||
import de.steamwar.command.TypeMapper;
|
|
||||||
import de.steamwar.messages.Chatter;
|
|
||||||
import de.steamwar.messages.PlayerChatter;
|
|
||||||
import de.steamwar.sql.UserPerm;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|||||||
@@ -22,15 +22,14 @@ package de.steamwar.velocitycore.commands;
|
|||||||
import com.velocitypowered.api.proxy.Player;
|
import com.velocitypowered.api.proxy.Player;
|
||||||
import de.steamwar.command.SWCommand;
|
import de.steamwar.command.SWCommand;
|
||||||
import de.steamwar.command.TypeValidator;
|
import de.steamwar.command.TypeValidator;
|
||||||
import de.steamwar.sql.GameModeConfig;
|
|
||||||
import de.steamwar.linkage.EventMode;
|
import de.steamwar.linkage.EventMode;
|
||||||
import de.steamwar.linkage.Linked;
|
import de.steamwar.linkage.Linked;
|
||||||
import de.steamwar.messages.Chatter;
|
import de.steamwar.messages.Chatter;
|
||||||
import de.steamwar.messages.Message;
|
import de.steamwar.messages.Message;
|
||||||
import de.steamwar.messages.PlayerChatter;
|
import de.steamwar.messages.PlayerChatter;
|
||||||
import de.steamwar.persistent.Subserver;
|
import de.steamwar.persistent.Subserver;
|
||||||
|
import de.steamwar.sql.GameModeConfig;
|
||||||
import de.steamwar.sql.IgnoreSystem;
|
import de.steamwar.sql.IgnoreSystem;
|
||||||
import de.steamwar.sql.SchematicType;
|
|
||||||
import de.steamwar.velocitycore.ServerStarter;
|
import de.steamwar.velocitycore.ServerStarter;
|
||||||
import net.kyori.adventure.text.event.ClickEvent;
|
import net.kyori.adventure.text.event.ClickEvent;
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ package de.steamwar.velocitycore.commands;
|
|||||||
|
|
||||||
import com.velocitypowered.api.proxy.Player;
|
import com.velocitypowered.api.proxy.Player;
|
||||||
import de.steamwar.command.SWCommand;
|
import de.steamwar.command.SWCommand;
|
||||||
import de.steamwar.sql.GameModeConfig;
|
|
||||||
import de.steamwar.linkage.EventMode;
|
import de.steamwar.linkage.EventMode;
|
||||||
import de.steamwar.linkage.Linked;
|
import de.steamwar.linkage.Linked;
|
||||||
import de.steamwar.messages.Chatter;
|
import de.steamwar.messages.Chatter;
|
||||||
@@ -29,7 +28,7 @@ import de.steamwar.messages.Message;
|
|||||||
import de.steamwar.messages.PlayerChatter;
|
import de.steamwar.messages.PlayerChatter;
|
||||||
import de.steamwar.persistent.Arenaserver;
|
import de.steamwar.persistent.Arenaserver;
|
||||||
import de.steamwar.persistent.Subserver;
|
import de.steamwar.persistent.Subserver;
|
||||||
import de.steamwar.sql.SchematicType;
|
import de.steamwar.sql.GameModeConfig;
|
||||||
import de.steamwar.velocitycore.ArenaMode;
|
import de.steamwar.velocitycore.ArenaMode;
|
||||||
import de.steamwar.velocitycore.ServerStarter;
|
import de.steamwar.velocitycore.ServerStarter;
|
||||||
import de.steamwar.velocitycore.inventory.SWInventory;
|
import de.steamwar.velocitycore.inventory.SWInventory;
|
||||||
@@ -100,15 +99,15 @@ public class FightCommand extends SWCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
SWInventory inventory = new SWInventory(sender, 9, new Message("FIGHT_MERGE_TITLE"));
|
SWInventory inventory = new SWInventory(sender, 9, new Message("FIGHT_MERGE_TITLE"));
|
||||||
inventory.addItem(0, new SWItem(new Message("FIGHT_MERGE_DECLINE"), 1), click -> {
|
inventory.addItem(0, new SWItem("RED_DYE", new Message("FIGHT_MERGE_DECLINE")), click -> {
|
||||||
inventory.close();
|
inventory.close();
|
||||||
declineMerge.run(sender, mode, map);
|
declineMerge.run(sender, mode, map);
|
||||||
});
|
});
|
||||||
Arenaserver finalMergable = mergable;
|
Arenaserver finalMergable = mergable;
|
||||||
SWItem item = new SWItem(new Message("FIGHT_MERGE_INFO", mode.GameName, finalMergable.getMap()), 11);
|
SWItem item = new SWItem("YELLOW_DYE", new Message("FIGHT_MERGE_INFO", mode.GameName, finalMergable.getMap()));
|
||||||
item.addLore(new Message("FIGHT_MERGE_INFO_LORE_1", finalMergable.getRegisteredServer().getPlayersConnected().toArray(new Player[1])[0].getUsername()));
|
item.addLore(new Message("FIGHT_MERGE_INFO_LORE_1", finalMergable.getRegisteredServer().getPlayersConnected().toArray(new Player[1])[0].getUsername()));
|
||||||
inventory.addItem(4, item, click -> {});
|
inventory.addItem(4, item, click -> {});
|
||||||
inventory.addItem(8, new SWItem(new Message("FIGHT_MERGE_ACCEPT"), 10), click -> {
|
inventory.addItem(8, new SWItem("LIME_DYE", new Message("FIGHT_MERGE_ACCEPT")), click -> {
|
||||||
if(Subserver.getServerList().contains(finalMergable)) {
|
if(Subserver.getServerList().contains(finalMergable)) {
|
||||||
finalMergable.sendPlayer(sender.getPlayer());
|
finalMergable.sendPlayer(sender.getPlayer());
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -20,13 +20,12 @@
|
|||||||
package de.steamwar.velocitycore.commands;
|
package de.steamwar.velocitycore.commands;
|
||||||
|
|
||||||
import de.steamwar.command.SWCommand;
|
import de.steamwar.command.SWCommand;
|
||||||
import de.steamwar.sql.GameModeConfig;
|
|
||||||
import de.steamwar.linkage.EventMode;
|
import de.steamwar.linkage.EventMode;
|
||||||
import de.steamwar.linkage.Linked;
|
import de.steamwar.linkage.Linked;
|
||||||
import de.steamwar.messages.Chatter;
|
import de.steamwar.messages.Chatter;
|
||||||
import de.steamwar.messages.Message;
|
import de.steamwar.messages.Message;
|
||||||
import de.steamwar.messages.PlayerChatter;
|
import de.steamwar.messages.PlayerChatter;
|
||||||
import de.steamwar.sql.SchematicType;
|
import de.steamwar.sql.GameModeConfig;
|
||||||
import de.steamwar.velocitycore.ServerStarter;
|
import de.steamwar.velocitycore.ServerStarter;
|
||||||
import net.kyori.adventure.text.event.ClickEvent;
|
import net.kyori.adventure.text.event.ClickEvent;
|
||||||
|
|
||||||
|
|||||||
@@ -19,10 +19,10 @@
|
|||||||
|
|
||||||
package de.steamwar.velocitycore.commands;
|
package de.steamwar.velocitycore.commands;
|
||||||
|
|
||||||
import de.steamwar.linkage.Linked;
|
|
||||||
import de.steamwar.velocitycore.listeners.ChatListener;
|
|
||||||
import de.steamwar.command.SWCommand;
|
import de.steamwar.command.SWCommand;
|
||||||
|
import de.steamwar.linkage.Linked;
|
||||||
import de.steamwar.messages.PlayerChatter;
|
import de.steamwar.messages.PlayerChatter;
|
||||||
|
import de.steamwar.velocitycore.listeners.ChatListener;
|
||||||
|
|
||||||
@Linked
|
@Linked
|
||||||
public class LocalCommand extends SWCommand {
|
public class LocalCommand extends SWCommand {
|
||||||
|
|||||||
@@ -19,17 +19,17 @@
|
|||||||
|
|
||||||
package de.steamwar.velocitycore.commands;
|
package de.steamwar.velocitycore.commands;
|
||||||
|
|
||||||
import de.steamwar.linkage.Linked;
|
|
||||||
import de.steamwar.velocitycore.inventory.SWInventory;
|
|
||||||
import de.steamwar.velocitycore.inventory.SWItem;
|
|
||||||
import de.steamwar.velocitycore.inventory.SWListInv;
|
|
||||||
import de.steamwar.velocitycore.inventory.SWStreamInv;
|
|
||||||
import de.steamwar.command.SWCommand;
|
import de.steamwar.command.SWCommand;
|
||||||
|
import de.steamwar.linkage.Linked;
|
||||||
import de.steamwar.messages.Chatter;
|
import de.steamwar.messages.Chatter;
|
||||||
import de.steamwar.messages.Message;
|
import de.steamwar.messages.Message;
|
||||||
import de.steamwar.messages.PlayerChatter;
|
import de.steamwar.messages.PlayerChatter;
|
||||||
import de.steamwar.sql.Mod;
|
import de.steamwar.sql.Mod;
|
||||||
import de.steamwar.sql.UserPerm;
|
import de.steamwar.sql.UserPerm;
|
||||||
|
import de.steamwar.velocitycore.inventory.SWInventory;
|
||||||
|
import de.steamwar.velocitycore.inventory.SWItem;
|
||||||
|
import de.steamwar.velocitycore.inventory.SWListInv;
|
||||||
|
import de.steamwar.velocitycore.inventory.SWStreamInv;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -72,11 +72,11 @@ public class ModCommand extends SWCommand {
|
|||||||
private void openTypeGUI(PlayerChatter player, String title, Consumer<Mod.ModType> function) {
|
private void openTypeGUI(PlayerChatter player, String title, Consumer<Mod.ModType> function) {
|
||||||
SWInventory inv = new SWInventory(player, 9, new Message(title));
|
SWInventory inv = new SWInventory(player, 9, new Message(title));
|
||||||
|
|
||||||
inv.addItem(1, new SWItem(new Message("MOD_UNCLASSIFIED"), 8), click -> function.accept(Mod.ModType.UNKLASSIFIED));
|
inv.addItem(1, new SWItem("GRAY_DYE", new Message("MOD_UNCLASSIFIED")), click -> function.accept(Mod.ModType.UNKLASSIFIED));
|
||||||
inv.addItem(2, new SWItem(new Message("MOD_ALLOWED"), 2), click -> function.accept(Mod.ModType.GREEN));
|
inv.addItem(2, new SWItem("GREEN_DYE", new Message("MOD_ALLOWED")), click -> function.accept(Mod.ModType.GREEN));
|
||||||
inv.addItem(3, new SWItem(new Message("MOD_FORBIDDEN"), 11), click -> function.accept(Mod.ModType.YELLOW));
|
inv.addItem(3, new SWItem("YELLOW_DYE", new Message("MOD_FORBIDDEN")), click -> function.accept(Mod.ModType.YELLOW));
|
||||||
inv.addItem(4, new SWItem(new Message("MOD_AUTOBAN"), 1), click -> function.accept(Mod.ModType.RED));
|
inv.addItem(4, new SWItem("RED_DYE", new Message("MOD_AUTOBAN")), click -> function.accept(Mod.ModType.RED));
|
||||||
inv.addItem(5, new SWItem(new Message("MOD_YT"), 13), click -> function.accept(Mod.ModType.YOUTUBER_ONLY));
|
inv.addItem(5, new SWItem("MAGENTA_DYE", new Message("MOD_YT")), click -> function.accept(Mod.ModType.YOUTUBER_ONLY));
|
||||||
|
|
||||||
inv.addItem(8, new SWItem("ARROW", new Message("MOD_ITEM_BACK")), click -> {
|
inv.addItem(8, new SWItem("ARROW", new Message("MOD_ITEM_BACK")), click -> {
|
||||||
inv.close();
|
inv.close();
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ import de.steamwar.messages.Message;
|
|||||||
import de.steamwar.sql.BannedUserIPs;
|
import de.steamwar.sql.BannedUserIPs;
|
||||||
import de.steamwar.sql.Punishment;
|
import de.steamwar.sql.Punishment;
|
||||||
import de.steamwar.sql.SteamwarUser;
|
import de.steamwar.sql.SteamwarUser;
|
||||||
import de.steamwar.sql.UserPerm;
|
|
||||||
import de.steamwar.velocitycore.VelocityCore;
|
import de.steamwar.velocitycore.VelocityCore;
|
||||||
import de.steamwar.velocitycore.listeners.IPSanitizer;
|
import de.steamwar.velocitycore.listeners.IPSanitizer;
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user