12
1
Fork 0

MultiSchemTypes #403

Zusammengeführt
YoyoNow hat 4 Commits von MultiSchemTypes nach master 2023-12-05 15:21:23 +01:00 zusammengeführt
5 geänderte Dateien mit 54 neuen und 47 gelöschten Zeilen

Datei anzeigen

@ -61,6 +61,8 @@ Schematic:
z: 0
# The schematic type that can be chosen in this arena
Type: Normal # defaults to Normal if missing
# The schematic types that are also allowed to be chosen in this arena
YoyoNow markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Bitte wie bei den anderen Optionen in einen Kommentar in der Zeile darüber noch erklären, was diese Option bedeutet.

Bitte wie bei den anderen Optionen in einen Kommentar in der Zeile darüber noch erklären, was diese Option bedeutet.
SubTypes: [] # defaults to empty List
# Shortcut of the schematic type
Shortcut: "" # defaults to "" if missing
# Spigot (1.8) material for GUIs

Datei anzeigen

@ -83,6 +83,7 @@ public class Config {
public static final boolean OnlyPublicSchematics;
public static final boolean IgnorePublicOnly;
public static final de.steamwar.sql.SchematicType SchematicType;
public static final List<de.steamwar.sql.SchematicType> SubTypes;
public static final boolean RedRotate;
public static final boolean BlueRotate;
public static final boolean PasteAligned;
@ -181,6 +182,7 @@ public class Config {
int schemsizeZ = config.getInt("Schematic.Size.z");
Lixfel markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Bitte nochmal überprüfen, ob fromDB erwartet, dass der Name in LowerCase ist, und wenn das der Fall ist, vorher bitte einmal .toLowerCase().

Bitte nochmal überprüfen, ob fromDB erwartet, dass der Name in LowerCase ist, und wenn das der Fall ist, vorher bitte einmal .toLowerCase().
Veraltet
Review

Du machst es bei dem code da drüber auch nicht mit toLowercase, soll ich es einfach bei beiden dann einfügen? Ich glaube nämlich das es benötigt wird.

Du machst es bei dem code da drüber auch nicht mit toLowercase, soll ich es einfach bei beiden dann einfügen? Ich glaube nämlich das es benötigt wird.
Veraltet
Review

Dann wird es nicht benötigt.

Dann wird es nicht benötigt.
Veraltet
Review

Bitte das toLowerCase wieder rausnehmen (da unnötig)

Bitte das toLowerCase wieder rausnehmen (da unnötig)
RanksEnabled = !config.getStringList("Ranks").isEmpty();
SchematicType = de.steamwar.sql.SchematicType.fromDB(Objects.requireNonNull(config.getString("Schematic.Type", "normal")));
SubTypes = config.getStringList("Schematic.SubTypes").stream().map(de.steamwar.sql.SchematicType::fromDB).collect(Collectors.toList());
IgnorePublicOnly = config.getBoolean("Schematic.IgnorePublicOnly", false);
boolean rotate = config.getBoolean("Schematic.Rotate", true);
PasteAligned = config.getBoolean("Schematic.PasteAligned", false);

Datei anzeigen

@ -29,6 +29,7 @@ import de.steamwar.inventory.*;
import de.steamwar.message.Message;
import de.steamwar.sql.PersonalKit;
import de.steamwar.sql.SchematicNode;
import de.steamwar.sql.SchematicType;
import de.steamwar.sql.SteamwarUser;
import net.md_5.bungee.api.ChatMessageType;
import org.bukkit.Bukkit;
@ -167,36 +168,47 @@ public class GUI {
return;
}
SWInventory inv = new SWInventory(p, 9, msg.parse("SCHEM_TITLE", p, Config.GameName));
inv.setItem(8, Material.REDSTONE, msg.parse("SCHEM_PUBLIC", p, Config.GameName), (ClickType click) -> {
p.closeInventory();
schemDialog(p, true, false);
});
if(Fight.getMaxRank() == 0){
inv.setItem(0, SWItem.getDye(8), (byte)8, msg.parse("SCHEM_PRIVATE_FORBIDDEN", p, Config.GameName), (ClickType click)->{});
}else {
if (Config.SchematicType.checkType() != null && !SchematicNode.getAllAccessibleSchematicsOfType(SteamwarUser.get(p.getUniqueId()).getId(), Config.SchematicType.checkType().toDB()).isEmpty()) {
inv.setItem(4, Material.ANVIL, msg.parse("SCHEM_UNCHECKED", p, Config.GameName), (ClickType click) -> {
p.closeInventory();
schemDialog(p, false, true);
});
}
if(SchematicNode.getAllAccessibleSchematicsOfType(SteamwarUser.get(p.getUniqueId()).getId(), Config.SchematicType.toDB()).isEmpty() && !Config.test()){
inv.setItem(0, SWItem.getDye(8), (byte)8, msg.parse("SCHEM_NO_PRIVATE", p, Config.GameName), (ClickType click)->{});
}else{
inv.setItem(0, SWItem.getMaterial("CAULDRON_ITEM"), msg.parse("SCHEM_PRIVATE", p, Config.GameName), (ClickType click) -> {
p.closeInventory();
schemDialog(p, false, false);
});
}
int invSize = (Config.SubTypes.size() + 1) * 9;
SWInventory inv = new SWInventory(p, invSize, msg.parse("SCHEM_TITLE", p, Config.GameName));
setupSchemTypeRow(p, inv, Config.SchematicType, 0);
for (int i = 0; i < Config.SubTypes.size(); i++) {
setupSchemTypeRow(p, inv, Config.SubTypes.get(i), i + 1);
YoyoNow markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Immer .get(0)? Nicht get(i)?

Immer .get(0)? Nicht get(i)?
Veraltet
Review

Gut gesehen danke.

Gut gesehen danke.
}
inv.setCallback(-999, (ClickType click) -> p.closeInventory());
inv.open();
}
private static void schemDialog(Player p, boolean publicSchems, boolean unchecked){
SchematicSelector selector = new SchematicSelector(p, Config.test()?SchematicSelector.selectSchematic():SchematicSelector.selectSchematicTypeWithRank(unchecked ? Config.SchematicType.checkType() : Config.SchematicType, Fight.getMaxRank()), node -> {
private static void setupSchemTypeRow(Player p, SWInventory inv, SchematicType type, int row) {
inv.setItem(row * 9 + 8, Material.REDSTONE, msg.parse("SCHEM_PUBLIC", p, type.name()), (ClickType click) -> {
p.closeInventory();
schemDialog(p, type, true, false);
});
if (Fight.publicOnly()) {
inv.setItem(row * 9, SWItem.getDye(8), (byte)8, msg.parse("SCHEM_PRIVATE_FORBIDDEN", p, type.name()), (ClickType click)->{});
return;
}
if (type.checkType() != null && type.checkType() != type && !SchematicNode.getAllAccessibleSchematicsOfType(SteamwarUser.get(p.getUniqueId()).getId(), type.checkType().toDB()).isEmpty()) {
inv.setItem(row * 9 + 4, Material.ANVIL, msg.parse("SCHEM_UNCHECKED", p, type.name()), (ClickType click) -> {
p.closeInventory();
schemDialog(p, type, false, true);
});
}
if (SchematicNode.getAllAccessibleSchematicsOfType(SteamwarUser.get(p.getUniqueId()).getId(), type.toDB()).isEmpty() && !Config.test()) {
YoyoNow markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Hier nutzt du noch fälschlicherweise Config.SchematicType

Hier nutzt du noch fälschlicherweise Config.SchematicType
inv.setItem(row * 9, SWItem.getDye(8), (byte)8, msg.parse("SCHEM_NO_PRIVATE", p, type.name()), (ClickType click)->{});
return;
}
inv.setItem(row * 9, SWItem.getMaterial("CAULDRON_ITEM"), msg.parse("SCHEM_PRIVATE", p, type.name()), (ClickType click) -> {
p.closeInventory();
schemDialog(p, type, false, false);
});
}
private static void schemDialog(Player p, SchematicType type, boolean publicSchems, boolean unchecked){
SchematicSelector selector = new SchematicSelector(p, Config.test() ? SchematicSelector.selectSchematic() : SchematicSelector.selectSchematicType(unchecked ? type.checkType() : type), node -> {
FightTeam fightTeam = Fight.getPlayerTeam(p);
if(fightTeam == null)
return;

Datei anzeigen

@ -139,21 +139,16 @@ public class Fight {
TinyProtocol.instance.sendPacket(player, ProtocolWrapper.impl.playerInfoPacketConstructor(ProtocolWrapper.PlayerInfoAction.GAMEMODE, new GameProfile(player.getUniqueId(), player.getName()), enable ? GameMode.CREATIVE : GameMode.SPECTATOR));
}
public static int getMaxRank(){
/* MaxRank of 0 is Pubonly*/
if(Config.OnlyPublicSchematics){
return 0;
public static boolean publicOnly() {
if (Config.OnlyPublicSchematics) {
return true;
}
if(Config.IgnorePublicOnly || ArenaMode.RankedEvent.contains(Config.mode)){
return 1000;
if (Config.IgnorePublicOnly || ArenaMode.RankedEvent.contains(Config.mode)) {
YoyoNow markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Hier fehlt wie früher die Prüfung, ob es ein Event ist (wobei dann ebenfalls IgnorePublicOnly gilt). Wenn es ein Public-Only Turnier ist, wird das bereits über OnlyPublicSchematics separat geregelt.

Hier fehlt wie früher die Prüfung, ob es ein Event ist (wobei dann ebenfalls IgnorePublicOnly gilt). Wenn es ein Public-Only Turnier ist, wird das bereits über OnlyPublicSchematics separat geregelt.
return false;
}
if(redTeam.getLeader() == null || blueTeam.getLeader() == null){
YoyoNow markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Ich weiß nicht, ob wir diesen Überprüfungscode einfach so rauswerfen sollten (publicOnly, solange noch einer der Gegner fehlt).

Ich weiß nicht, ob wir diesen Überprüfungscode einfach so rauswerfen sollten (publicOnly, solange noch einer der Gegner fehlt).
return 1000;
if (redTeam.getLeader() == null || blueTeam.getLeader() == null) {
return false;
}
return Math.min(redTeam.getSchemRank(), blueTeam.getSchemRank());
return redTeam.isPublicsOnly() || blueTeam.isPublicsOnly();
}
}

Datei anzeigen

@ -90,7 +90,7 @@ public class FightTeam {
private UUID designatedLeader;
private FightPlayer leader;
private int schemRank;
private boolean publicsOnly;
private final Map<UUID, FightPlayer> players = new HashMap<>();
@ -113,7 +113,7 @@ public class FightTeam {
this.spawn = spawn;
this.schemRegion = schemRegion;
this.extendRegion = extendRegion;
this.schemRank = 0;
this.publicsOnly = false;
this.ready = false;
this.skip = false;
this.blue = blue;
@ -161,8 +161,8 @@ public class FightTeam {
return isLeaderless() && (designatedLeader == null || designatedLeader.equals(p.getUniqueId()));
}
public int getSchemRank() {
return schemRank;
public boolean isPublicsOnly() {
return publicsOnly;
}
public void teleportToSpawn(){
@ -357,11 +357,7 @@ public class FightTeam {
if(!silent)
FightUI.addSubtitle("UI_LEADER_JOINS", prefix, leader.getEntity().getName());
Optional<Integer> maxRank = SchematicNode.getAllAccessibleSchematicsOfType(leader.getUser().getId(), Config.SchematicType.toDB()).stream().map(SchematicNode::getRank).max(Integer::compare);
if(Config.RanksEnabled)
schemRank = maxRank.orElse(1);
else
schemRank = maxRank.isPresent() ? 1 : 0;
publicsOnly = SchematicNode.getAllAccessibleSchematicsOfType(leader.getUser().getId(), Config.SchematicType.toDB()).isEmpty();
if(!Config.PersonalKits)
leader.setKit(Kit.getKitByName(Config.LeaderDefault));