Skip to content

Commit

Permalink
Breaking Changes: Rewrite EnchantmentType Prefixes
Browse files Browse the repository at this point in the history
  • Loading branch information
FirstMegaGame4 committed Sep 9, 2023
1 parent bb2b650 commit 41c64e0
Show file tree
Hide file tree
Showing 7 changed files with 104 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import net.minecraft.item.EnchantedBookItem;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack;
import net.minecraft.text.Text;
import net.minecraft.util.collection.DefaultedList;
import net.minecraft.util.registry.Registry;

Expand All @@ -26,7 +27,6 @@ public CustomEnchantedBookItem(EnchantmentType type, Settings settings) {

public ItemStack forCustomEnchantment(EnchantmentLevelEntry info) {
ItemStack stack = new ItemStack(this.type.getEnchantedBook());
stack.setCustomName(TextUtils.spaceBetween(this.type.getPrefix().copy(), stack.getName()));
CustomEnchantedBookItem.addEnchantment(stack, info);
return stack;
}
Expand Down Expand Up @@ -59,6 +59,11 @@ else if (group.getEnchantments().length != 0) {
}
}

@Override
public Text getName() {
return this.type.getPrefix().isSpaced() ? TextUtils.spaceBetween(this.type.getPrefix(), super.getName()) : type.getPrefix().append(super.getName());
}

@Override
public boolean isNotRegistered() {
return !this.registered.get();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import net.minecraft.item.EnchantedBookItem;
import net.minecraft.item.Items;
import net.minecraft.text.Text;

public class DefaultEnchantmentType implements EnchantmentType {

Expand All @@ -14,8 +13,8 @@ public String getQualifier() {
}

@Override
public Text getPrefix() {
return Text.of("");
public Prefix getPrefix() {
return Prefix.of("");
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,41 +5,50 @@
import com.mmodding.mmodding_lib.library.utils.FilterList;
import net.minecraft.item.EnchantedBookItem;
import net.minecraft.item.Item;
import net.minecraft.text.MutableText;
import net.minecraft.text.Style;
import net.minecraft.text.Text;
import net.minecraft.text.component.LiteralComponent;
import net.minecraft.text.component.TextComponent;
import net.minecraft.util.Formatting;
import net.minecraft.util.Identifier;
import net.minecraft.util.Rarity;

import java.util.ArrayList;
import java.util.List;
import java.util.function.UnaryOperator;

public interface EnchantmentType {

EnchantmentType DEFAULT = new DefaultEnchantmentType();

static EnchantmentType of(String qualifier, Text prefix) {
static EnchantmentType of(String qualifier, Prefix prefix) {
return EnchantmentType.of(qualifier, prefix, new AdvancedItemSettings().maxCount(1).rarity(Rarity.UNCOMMON));
}

static EnchantmentType of(String qualifier, Text prefix, boolean inEnchantingTable) {
static EnchantmentType of(String qualifier, Prefix prefix, boolean inEnchantingTable) {
return new TableExclusionEnchantmentType(qualifier, prefix, new AdvancedItemSettings().maxCount(1).rarity(Rarity.UNCOMMON), inEnchantingTable);
}

static EnchantmentType of(String qualifier, Text prefix, boolean inEnchantingTable, FilterList<EnchantmentType> filter) {
static EnchantmentType of(String qualifier, Prefix prefix, boolean inEnchantingTable, FilterList<EnchantmentType> filter) {
return new FilteredEnchantmentType(qualifier, prefix, new AdvancedItemSettings().maxCount(1).rarity(Rarity.UNCOMMON), inEnchantingTable, filter);
}

static EnchantmentType of(String qualifier, Text prefix, Item.Settings enchantedBookSettings) {
static EnchantmentType of(String qualifier, Prefix prefix, Item.Settings enchantedBookSettings) {
return new SimpleEnchantmentType(qualifier, prefix, enchantedBookSettings);
}

static EnchantmentType of(String qualifier, Text prefix, Item.Settings enchantedBookSettings, boolean inEnchantingTable) {
static EnchantmentType of(String qualifier, Prefix prefix, Item.Settings enchantedBookSettings, boolean inEnchantingTable) {
return new TableExclusionEnchantmentType(qualifier, prefix, enchantedBookSettings, inEnchantingTable);
}

static EnchantmentType of(String qualifier, Text prefix, Item.Settings enchantedBookSettings, boolean inEnchantingTable, FilterList<EnchantmentType> filter) {
static EnchantmentType of(String qualifier, Prefix prefix, Item.Settings enchantedBookSettings, boolean inEnchantingTable, FilterList<EnchantmentType> filter) {
return new FilteredEnchantmentType(qualifier, prefix, enchantedBookSettings, inEnchantingTable, filter);
}

String getQualifier();

Text getPrefix();
Prefix getPrefix();

EnchantedBookItem getEnchantedBook();

Expand All @@ -56,4 +65,78 @@ default void register(Identifier identifier) {
item.register(identifier);
}
}

class Prefix extends MutableText {

private final boolean spaced;

private Prefix(TextComponent component, List<Text> siblings, Style style, boolean spaced) {
super(component, siblings, style);
this.spaced = spaced;
}

public static Prefix spaced(String text) {
return new Prefix(new LiteralComponent(text), new ArrayList<>(), Style.EMPTY, true);
}

public static Prefix of(String text) {
return new Prefix(new LiteralComponent(text), new ArrayList<>(), Style.EMPTY, false);
}

public boolean isSpaced() {
return this.spaced;
}

@Override
public Prefix copyContentOnly() {
return new Prefix(this.asComponent(), new ArrayList<>(), Style.EMPTY, this.isSpaced());
}

@Override
public Prefix copy() {
return new Prefix(this.asComponent(), this.getSiblings(), this.getStyle(), this.isSpaced());
}

@Override
public Prefix setStyle(Style style) {
super.setStyle(style);
return this;
}

@Override
public Prefix append(String text) {
super.append(text);
return this;
}

@Override
public Prefix append(Text text) {
super.append(text);
return this;
}

@Override
public Prefix styled(UnaryOperator<Style> styleUpdater) {
super.styled(styleUpdater);
return this;
}

@Override
public Prefix fillStyle(Style styleOverride) {
super.fillStyle(styleOverride);
return this;
}

@Override
public Prefix formatted(Formatting... formattings) {
super.formatted(formattings);
return this;
}

@Override
public Prefix formatted(Formatting formatting) {
super.formatted(formatting);
return this;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ public class FilteredEnchantmentType extends TableExclusionEnchantmentType {

private final FilterList<EnchantmentType> filterList;

FilteredEnchantmentType(String qualifier, Text prefix, Item.Settings enchantedBookSettings, boolean inEnchantingTable, FilterList<EnchantmentType> filterList) {
FilteredEnchantmentType(String qualifier, Prefix prefix, Item.Settings enchantedBookSettings, boolean inEnchantingTable, FilterList<EnchantmentType> filterList) {
super(qualifier, prefix, enchantedBookSettings, inEnchantingTable);
this.filterList = filterList;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,14 @@
import com.mmodding.mmodding_lib.library.enchantments.CustomEnchantedBookItem;
import net.minecraft.item.EnchantedBookItem;
import net.minecraft.item.Item;
import net.minecraft.text.Text;

public class SimpleEnchantmentType implements EnchantmentType {

private final String qualifier;
private final Text prefix;
private final Prefix prefix;
private final EnchantedBookItem enchantedBook;

SimpleEnchantmentType(String qualifier, Text prefix, Item.Settings enchantedBookSettings) {
SimpleEnchantmentType(String qualifier, Prefix prefix, Item.Settings enchantedBookSettings) {
this.qualifier = qualifier;
this.prefix = prefix;
this.enchantedBook = new CustomEnchantedBookItem(this, enchantedBookSettings);
Expand All @@ -23,7 +22,7 @@ public String getQualifier() {
}

@Override
public Text getPrefix() {
public Prefix getPrefix() {
return this.prefix;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ public class TableExclusionEnchantmentType extends SimpleEnchantmentType {

private final boolean inEnchantingTable;

TableExclusionEnchantmentType(String qualifier, Text prefix, Item.Settings enchantedBookSettings, boolean inEnchantingTable) {
TableExclusionEnchantmentType(String qualifier, Prefix prefix, Item.Settings enchantedBookSettings, boolean inEnchantingTable) {
super(qualifier, prefix, enchantedBookSettings);
this.inEnchantingTable = inEnchantingTable;
}
Expand Down
1 change: 1 addition & 0 deletions src/main/resources/mmodding_lib.accesswidener
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ accessible method net/minecraft/recipe/Ingredient$StackEntry <init> (Lnet/minecr
accessible method net/minecraft/recipe/Ingredient$TagEntry <init> (Lnet/minecraft/tag/TagKey;)V
accessible method net/minecraft/world/gen/OreVeinCreator create (Lnet/minecraft/world/gen/DensityFunction;Lnet/minecraft/world/gen/DensityFunction;Lnet/minecraft/world/gen/DensityFunction;Lnet/minecraft/util/random/PositionalRandomFactory;)Lnet/minecraft/world/gen/chunk/ChunkNoiseSampler$BlockStateSampler;

extendable method net/minecraft/text/MutableText <init> (Lnet/minecraft/text/component/TextComponent;Ljava/util/List;Lnet/minecraft/text/Style;)V
extendable method net/minecraft/world/dimension/AreaHelper getLowerCorner (Lnet/minecraft/util/math/BlockPos;)Lnet/minecraft/util/math/BlockPos;
extendable method net/minecraft/world/dimension/AreaHelper getWidth (Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/util/math/Direction;)I
extendable method net/minecraft/world/dimension/AreaHelper method_30491 (Lnet/minecraft/util/math/BlockPos$Mutable;I)Z
Expand Down

0 comments on commit 41c64e0

Please sign in to comment.