From d9f5acd98af07b4620e647e8f6d680393bbd91dc Mon Sep 17 00:00:00 2001 From: kuba6000 Date: Sun, 9 Oct 2022 14:52:07 +0200 Subject: [PATCH] Make it pretty --- .../genetics/ExtraBeeDefinition.java | 50 ++++++++++++------- .../extrabees/genetics/ExtraBeeMutation.java | 19 ++++--- .../DummyMutationConditionGroupPersons.java | 34 ------------- .../RequirementGroupOfPersons.java | 27 ---------- .../requirements/RequirementPerson.java | 46 +++++++++++++++-- 5 files changed, 86 insertions(+), 90 deletions(-) delete mode 100644 src/main/java/binnie/extrabees/genetics/requirements/DummyMutationConditionGroupPersons.java delete mode 100644 src/main/java/binnie/extrabees/genetics/requirements/RequirementGroupOfPersons.java diff --git a/src/main/java/binnie/extrabees/genetics/ExtraBeeDefinition.java b/src/main/java/binnie/extrabees/genetics/ExtraBeeDefinition.java index 9e5cc17f..24f80d4e 100644 --- a/src/main/java/binnie/extrabees/genetics/ExtraBeeDefinition.java +++ b/src/main/java/binnie/extrabees/genetics/ExtraBeeDefinition.java @@ -2,6 +2,7 @@ package binnie.extrabees.genetics; import binnie.core.Mods; import binnie.extrabees.genetics.effect.ExtraBeesEffect; +import binnie.extrabees.genetics.requirements.RequirementPerson; import binnie.extrabees.products.EnumHoneyComb; import binnie.extrabees.products.ItemHoneyComb; import binnie.genetics.genetics.AlleleHelper; @@ -29,6 +30,7 @@ import java.util.Locale; import java.util.Map; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; import net.minecraftforge.common.BiomeDictionary; public enum ExtraBeeDefinition implements IBeeDefinition { @@ -1639,12 +1641,10 @@ public enum ExtraBeeDefinition implements IBeeDefinition { } }, CHAD(ExtraBeeBranchDefinition.FTB, "merciboocoup", true, new Color(0x2157DB), new Color(0xD2ABD1)) { - ItemStack product = new ItemStack(Items.cake, 1); - @Override protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) { beeSpecies - .addProduct(product, 1f) + .addProduct(new ItemStack(Items.cake, 1), 1f) .addSpecialty(Mods.forestry.stack("pollenFertile"), 0.50f) .addSpecialty(EnumHoneyComb.MILK.get(1), 0.55f) .setIsNotCounted() @@ -1661,20 +1661,36 @@ public enum ExtraBeeDefinition implements IBeeDefinition { @Override protected void registerMutations() { - String[] names = { - "Runakai", - "boubou_19", - "Alastors_Game", - "BlueWeabo", - "Lewis_Saber", - "True_Aurastorm", - "minecraft7771", - "mitchej123", - "_Timbo", - "kuba6000", - "DreamMasterXXL" - }; - registerMutation(BeeDefinition.CULTIVATED, CELEBRATORY, 5).restrictedByGroupOfPersons(names); + registerMutation(BeeDefinition.CULTIVATED, CELEBRATORY, 5) + .restrictPerson(new RequirementPerson() + .add( + name -> "" + + EnumChatFormatting.DARK_RED + + EnumChatFormatting.BOLD + "R" + + EnumChatFormatting.RED + + EnumChatFormatting.BOLD + "u" + + EnumChatFormatting.GOLD + + EnumChatFormatting.BOLD + "n" + + EnumChatFormatting.YELLOW + + EnumChatFormatting.BOLD + "a" + + EnumChatFormatting.DARK_GREEN + + EnumChatFormatting.BOLD + "k" + + EnumChatFormatting.GREEN + + EnumChatFormatting.BOLD + "a" + + EnumChatFormatting.AQUA + + EnumChatFormatting.BOLD + "i", + "Runakai") + .add( + "boubou_19", + "Alastors_Game", + "BlueWeabo", + "Lewis_Saber", + "True_Aurastorm", + "minecraft7771", + "mitchej123", + "_Timbo", + "kuba6000", + "DreamMasterXXL")); } }, diff --git a/src/main/java/binnie/extrabees/genetics/ExtraBeeMutation.java b/src/main/java/binnie/extrabees/genetics/ExtraBeeMutation.java index 8f889de7..9a4b8220 100644 --- a/src/main/java/binnie/extrabees/genetics/ExtraBeeMutation.java +++ b/src/main/java/binnie/extrabees/genetics/ExtraBeeMutation.java @@ -11,6 +11,7 @@ import forestry.api.genetics.IAllele; import forestry.api.genetics.IMutation; import forestry.apiculture.genetics.BeeMutation; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; public class ExtraBeeMutation extends BeeMutation implements IBeeMutationCustom { @@ -44,15 +45,19 @@ public class ExtraBeeMutation extends BeeMutation implements IBeeMutationCustom return super.getChance(housing, allele0, allele1, genome0, genome1); } - public void restrictPerson(String nickname) { - RequirementPerson requirement = new RequirementPerson(nickname); - requirements.add(requirement); - addMutationCondition(new DummyMutationCondition(requirement)); + public void restrictPerson(String... nicknames) { + restrictPerson(new RequirementPerson(nicknames)); } - public void restrictedByGroupOfPersons(String[] nicknames) { - RequirementGroupOfPersons requirement = new RequirementGroupOfPersons(nicknames); + public void restrictPerson(RequirementPerson requirement) { requirements.add(requirement); - addMutationCondition(new DummyMutationConditionGroupPersons(requirement)); + addMutationCondition(new DummyMutationCondition(requirement)); + ArrayList descriptions = (ArrayList) getSpecialConditions(); + int i = descriptions.size() - 1; + String description = descriptions.get(i); + if (description.contains("/n")) { + descriptions.remove(i); + descriptions.addAll(Arrays.asList(description.split("/n"))); + } } } diff --git a/src/main/java/binnie/extrabees/genetics/requirements/DummyMutationConditionGroupPersons.java b/src/main/java/binnie/extrabees/genetics/requirements/DummyMutationConditionGroupPersons.java deleted file mode 100644 index 3998bfd3..00000000 --- a/src/main/java/binnie/extrabees/genetics/requirements/DummyMutationConditionGroupPersons.java +++ /dev/null @@ -1,34 +0,0 @@ -package binnie.extrabees.genetics.requirements; - -import forestry.api.core.IClimateProvider; -import forestry.api.genetics.IAllele; -import forestry.api.genetics.IGenome; -import forestry.api.genetics.IMutationCondition; -import net.minecraft.world.World; - -public class DummyMutationConditionGroupPersons implements IMutationCondition { - private final RequirementGroupOfPersons requirement; - - public DummyMutationConditionGroupPersons(RequirementGroupOfPersons requirement) { - this.requirement = requirement; - } - - @Override - public float getChance( - World world, - int x, - int y, - int z, - IAllele allele0, - IAllele allele1, - IGenome genome0, - IGenome genome1, - IClimateProvider climate) { - return 1.0F; - } - - @Override - public String getDescription() { - return requirement.getDescription(); - } -} diff --git a/src/main/java/binnie/extrabees/genetics/requirements/RequirementGroupOfPersons.java b/src/main/java/binnie/extrabees/genetics/requirements/RequirementGroupOfPersons.java deleted file mode 100644 index 612e32a3..00000000 --- a/src/main/java/binnie/extrabees/genetics/requirements/RequirementGroupOfPersons.java +++ /dev/null @@ -1,27 +0,0 @@ -package binnie.extrabees.genetics.requirements; - -import binnie.core.util.I18N; -import forestry.api.apiculture.IBeeHousing; -import forestry.api.genetics.IAllele; -import forestry.api.genetics.IGenome; -import java.util.Arrays; -import java.util.List; - -public class RequirementGroupOfPersons implements IMutationRequirement { - protected List names; - - public RequirementGroupOfPersons(String[] name) { - this.names = Arrays.asList(name); - } - - @Override - public String getDescription() { - return I18N.localise("extrabees.genetics.requirements.user", names); - } - - @Override - public boolean fufilled(IBeeHousing housing, IAllele allele0, IAllele allele1, IGenome genome0, IGenome genome1) { - String ownerName = housing.getOwner().getName(); - return ownerName != null && names.contains(ownerName); // ownerName.contains(name); - } -} diff --git a/src/main/java/binnie/extrabees/genetics/requirements/RequirementPerson.java b/src/main/java/binnie/extrabees/genetics/requirements/RequirementPerson.java index 10399b0c..5c959063 100644 --- a/src/main/java/binnie/extrabees/genetics/requirements/RequirementPerson.java +++ b/src/main/java/binnie/extrabees/genetics/requirements/RequirementPerson.java @@ -4,22 +4,58 @@ import binnie.core.util.I18N; import forestry.api.apiculture.IBeeHousing; import forestry.api.genetics.IAllele; import forestry.api.genetics.IGenome; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.function.Function; +import java.util.stream.Collectors; +import net.minecraft.util.EnumChatFormatting; public class RequirementPerson implements IMutationRequirement { - protected String name; + protected List names; + protected HashMap> nameFormatters = new HashMap<>(); + private static final Function defaultApplier = name -> name; + private static final String REQUIREMENT_USER_LOCALIZE_KEY = "extrabees.genetics.requirements.user"; - public RequirementPerson(String name) { - this.name = name; + public RequirementPerson(String... names) { + this.names = Arrays.stream(names).collect(Collectors.toList()); + } + + public RequirementPerson add(String... names) { + this.names.addAll(Arrays.asList(names)); + return this; + } + + public RequirementPerson add(Function formatter, String... names) { + this.names.addAll(Arrays.asList(names)); + for (String name : names) nameFormatters.put(name, formatter); + return this; } @Override public String getDescription() { - return I18N.localise("extrabees.genetics.requirements.user", name); + if (names.isEmpty()) return I18N.localise(REQUIREMENT_USER_LOCALIZE_KEY, "No one"); + final StringBuilder namesFormatted = new StringBuilder("["); + boolean hasNewLines = false; + for (int i = 0, isize = names.size(); i < isize; i++) { + if (i != 0) { + namesFormatted.append(", "); + if (i % 3 == 0) namesFormatted.append("/n "); + hasNewLines = true; + } + String name = names.get(i); + namesFormatted.append( + nameFormatters.getOrDefault(name, defaultApplier).apply(name)); + namesFormatted.append(EnumChatFormatting.RESET); + } + namesFormatted.append("]"); + if (hasNewLines) namesFormatted.insert(0, "/n"); + return I18N.localise(REQUIREMENT_USER_LOCALIZE_KEY, namesFormatted.toString()); } @Override public boolean fufilled(IBeeHousing housing, IAllele allele0, IAllele allele1, IGenome genome0, IGenome genome1) { String ownerName = housing.getOwner().getName(); - return ownerName != null && ownerName.equals(name); + return ownerName != null && names.contains(ownerName); } }