From 61e4a625e5606fd07f07a7c76138460dcd00e594 Mon Sep 17 00:00:00 2001 From: Benjamin-Norton Date: Sat, 20 May 2023 12:20:50 -0400 Subject: [PATCH] Add more fun advancements and cleanup code --- build.gradle | 1 + gradle.properties | 2 +- .../event/client/EventManager.java | 2 +- .../client/ClientPlayNetworkHandlerMixin.java | 2 +- .../mixin/client/CraftingScreenMixin.java | 1 - .../mixin/client/InventoryScreenMixin.java | 3 +- .../mixin/client/ScreenMixin.java | 1 + .../networking/client/Networking.java | 10 +-- .../randoassistant/render/overlay/Cuboid.java | 7 +- .../randoassistant/render/overlay/Line.java | 6 +- .../render/overlay/RenderManager.java | 3 - .../screen/LootBookSettingsWidget.java | 2 - .../screen/LootTableGraphWidget.java | 7 +- .../screen/LootTableListWidget.java | 5 -- .../randoassistant/tracking/Tracker.java | 4 -- .../tracking/graph/TrackingGraph.java | 14 ++-- .../randoassistant/util/IdentifierType.java | 21 ------ .../java/grapher/graph/drawing/Drawing.java | 1 - .../grapher/graph/drawing/package-info.java | 0 .../java/grapher/graph/elements/Edge.java | 0 .../java/grapher/graph/elements/Graph.java | 0 .../java/grapher/graph/elements/Vertex.java | 0 .../exception/CannotBeAppliedException.java | 0 .../elements/exception/package-info.java | 0 .../grapher/graph/elements/package-info.java | 0 .../graph/layout/AbstractJGraphXLayouter.java | 0 .../graph/layout/AbstractLayouter.java | 0 .../graph/layout/GraphLayoutProperties.java | 0 .../graph/layout/LayoutAlgorithms.java | 0 .../java/grapher/graph/layout/Layouter.java | 1 + .../grapher/graph/layout/LayouterFactory.java | 0 .../grapher/graph/layout/PropertyEnums.java | 0 .../organic/JGraphHierarchicalLayouter.java | 0 .../graph/layout/organic/package-info.java | 0 .../grapher/graph/layout/package-info.java | 0 .../randoassistant/RandoAssistant.java | 6 -- .../randoassistant/mixin/AxeItemMixin.java | 3 +- .../CatEntitySleepWithOwnerGoalMixin.java | 14 ++++ .../mixin/HoneycombItemMixin.java | 3 - .../mixin/MerchantEntityMixin.java | 37 ++++++++++ .../mixin/PlayerAdvancementTrackerMixin.java | 1 - .../mixin/ServerPlayerEntityMixin.java | 4 +- .../randoassistant/networking/Networking.java | 5 -- .../networking/Serializeable.java | 2 +- .../networking/SerializeableCrafting.java | 2 +- .../networking/SerializeableInteraction.java | 6 +- .../networking/SerializeableLootTable.java | 12 ++-- .../randoassistant/util/LootAdvancement.java | 5 +- .../randoassistant/util/LootCondition.java | 1 - .../randoassistant/util/WallBlockLookup.java | 69 ------------------- .../util/tuples/Quadruplet.java | 9 --- .../randoassistant/util/tuples/Quartet.java | 9 +++ .../randoassistant/util/tuples/Triplet.java | 9 --- .../randoassistant/util/tuples/Wrapper.java | 30 -------- .../advancements/cat_morning_gift.json | 19 +++++ .../randoassistant/advancements/shame.json | 19 +++++ src/main/resources/randoassistant.mixins.json | 1 + 57 files changed, 140 insertions(+), 219 deletions(-) rename src/{main => client}/java/grapher/graph/drawing/Drawing.java (99%) rename src/{main => client}/java/grapher/graph/drawing/package-info.java (100%) rename src/{main => client}/java/grapher/graph/elements/Edge.java (100%) rename src/{main => client}/java/grapher/graph/elements/Graph.java (100%) rename src/{main => client}/java/grapher/graph/elements/Vertex.java (100%) rename src/{main => client}/java/grapher/graph/elements/exception/CannotBeAppliedException.java (100%) rename src/{main => client}/java/grapher/graph/elements/exception/package-info.java (100%) rename src/{main => client}/java/grapher/graph/elements/package-info.java (100%) rename src/{main => client}/java/grapher/graph/layout/AbstractJGraphXLayouter.java (100%) rename src/{main => client}/java/grapher/graph/layout/AbstractLayouter.java (100%) rename src/{main => client}/java/grapher/graph/layout/GraphLayoutProperties.java (100%) rename src/{main => client}/java/grapher/graph/layout/LayoutAlgorithms.java (100%) rename src/{main => client}/java/grapher/graph/layout/Layouter.java (99%) rename src/{main => client}/java/grapher/graph/layout/LayouterFactory.java (100%) rename src/{main => client}/java/grapher/graph/layout/PropertyEnums.java (100%) rename src/{main => client}/java/grapher/graph/layout/organic/JGraphHierarchicalLayouter.java (100%) rename src/{main => client}/java/grapher/graph/layout/organic/package-info.java (100%) rename src/{main => client}/java/grapher/graph/layout/package-info.java (100%) create mode 100644 src/main/java/com/bawnorton/randoassistant/mixin/MerchantEntityMixin.java delete mode 100644 src/main/java/com/bawnorton/randoassistant/util/WallBlockLookup.java delete mode 100644 src/main/java/com/bawnorton/randoassistant/util/tuples/Quadruplet.java create mode 100644 src/main/java/com/bawnorton/randoassistant/util/tuples/Quartet.java delete mode 100644 src/main/java/com/bawnorton/randoassistant/util/tuples/Triplet.java delete mode 100644 src/main/java/com/bawnorton/randoassistant/util/tuples/Wrapper.java create mode 100644 src/main/resources/data/randoassistant/advancements/cat_morning_gift.json create mode 100644 src/main/resources/data/randoassistant/advancements/shame.json diff --git a/build.gradle b/build.gradle index 12a349c..803e631 100644 --- a/build.gradle +++ b/build.gradle @@ -1,3 +1,4 @@ +//file:noinspection GroovyAssignabilityCheck plugins { id 'fabric-loom' version '1.1-SNAPSHOT' id 'maven-publish' diff --git a/gradle.properties b/gradle.properties index 0a1adf7..ab3c065 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ yarn_mappings=1.19.4+build.2 loader_version=0.14.19 # Mod Properties -mod_version=1.2.3 +mod_version=1.2.4 maven_group=com.bawnorton.randoassistant archives_base_name=randoassistant diff --git a/src/client/java/com/bawnorton/randoassistant/event/client/EventManager.java b/src/client/java/com/bawnorton/randoassistant/event/client/EventManager.java index 74a9588..a81d8c9 100644 --- a/src/client/java/com/bawnorton/randoassistant/event/client/EventManager.java +++ b/src/client/java/com/bawnorton/randoassistant/event/client/EventManager.java @@ -21,7 +21,7 @@ public class EventManager { - public static KeyBinding highlight = KeyBindingHelper.registerKeyBinding(new KeyBinding( + public static final KeyBinding highlight = KeyBindingHelper.registerKeyBinding(new KeyBinding( "key.randoassistant.highlight", GLFW.GLFW_KEY_V, "key.categories.randoassistant" diff --git a/src/client/java/com/bawnorton/randoassistant/mixin/client/ClientPlayNetworkHandlerMixin.java b/src/client/java/com/bawnorton/randoassistant/mixin/client/ClientPlayNetworkHandlerMixin.java index 9b46a78..1f2d9d3 100644 --- a/src/client/java/com/bawnorton/randoassistant/mixin/client/ClientPlayNetworkHandlerMixin.java +++ b/src/client/java/com/bawnorton/randoassistant/mixin/client/ClientPlayNetworkHandlerMixin.java @@ -17,7 +17,7 @@ @Mixin(ClientPlayNetworkHandler.class) public abstract class ClientPlayNetworkHandlerMixin { @Inject(method = "onStatistics", at = @At(value = "INVOKE", target = "Lnet/minecraft/stat/StatHandler;setStat(Lnet/minecraft/entity/player/PlayerEntity;Lnet/minecraft/stat/Stat;I)V", shift = At.Shift.AFTER), locals = LocalCapture.CAPTURE_FAILHARD) - private void onStatistics(StatisticsS2CPacket packet, CallbackInfo ci, Iterator var2, Map.Entry, Integer> entry, Stat stat, int i) { + private void onStatistics(StatisticsS2CPacket packet, CallbackInfo ci, Iterator var2, Map.Entry, Integer> entry, Stat stat, int i) { if(RandoAssistantStats.isCustom(stat) && i > 0) { Tracker.getInstance().testAll(); } diff --git a/src/client/java/com/bawnorton/randoassistant/mixin/client/CraftingScreenMixin.java b/src/client/java/com/bawnorton/randoassistant/mixin/client/CraftingScreenMixin.java index 5bd9d61..5dd239c 100644 --- a/src/client/java/com/bawnorton/randoassistant/mixin/client/CraftingScreenMixin.java +++ b/src/client/java/com/bawnorton/randoassistant/mixin/client/CraftingScreenMixin.java @@ -4,7 +4,6 @@ import net.minecraft.client.gui.screen.ingame.CraftingScreen; import net.minecraft.client.gui.screen.recipebook.RecipeBookWidget; import net.minecraft.client.gui.widget.ButtonWidget; -import net.minecraft.client.gui.widget.TexturedButtonWidget; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; diff --git a/src/client/java/com/bawnorton/randoassistant/mixin/client/InventoryScreenMixin.java b/src/client/java/com/bawnorton/randoassistant/mixin/client/InventoryScreenMixin.java index 9ab9813..1e3e742 100644 --- a/src/client/java/com/bawnorton/randoassistant/mixin/client/InventoryScreenMixin.java +++ b/src/client/java/com/bawnorton/randoassistant/mixin/client/InventoryScreenMixin.java @@ -159,7 +159,7 @@ private boolean checkWithinLootBookBounds(RecipeBookWidget instance) { private void onMouseClicked(double mouseX, double mouseY, int button, CallbackInfoReturnable cir) { LootBookWidget lootBook = LootBookWidget.getInstance(); if (lootBook.mouseClicked(mouseX, mouseY, button)) { - ((InventoryScreen) (Object) this).setFocused(lootBook); + setFocused(lootBook); if(LootTableResultButton.isGraphOpen() && y == (this.height - this.backgroundHeight) / 2) { y += HEIGHT / 2; @@ -179,6 +179,7 @@ private void onMouseClicked(double mouseX, double mouseY, int button, CallbackIn } } + @SuppressWarnings("unused") @Override protected void onMouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY, CallbackInfoReturnable cir) { LootBookWidget.getInstance().mouseDragged(mouseX, mouseY, button, deltaX, deltaY); diff --git a/src/client/java/com/bawnorton/randoassistant/mixin/client/ScreenMixin.java b/src/client/java/com/bawnorton/randoassistant/mixin/client/ScreenMixin.java index f487402..b0c73c2 100644 --- a/src/client/java/com/bawnorton/randoassistant/mixin/client/ScreenMixin.java +++ b/src/client/java/com/bawnorton/randoassistant/mixin/client/ScreenMixin.java @@ -8,6 +8,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +@SuppressWarnings("ALL") @Mixin(Screen.class) public abstract class ScreenMixin extends AbstractParentElement { @Shadow protected abstract T addSelectableChild(T child); diff --git a/src/client/java/com/bawnorton/randoassistant/networking/client/Networking.java b/src/client/java/com/bawnorton/randoassistant/networking/client/Networking.java index 6d4a4ff..6fb74ec 100644 --- a/src/client/java/com/bawnorton/randoassistant/networking/client/Networking.java +++ b/src/client/java/com/bawnorton/randoassistant/networking/client/Networking.java @@ -7,9 +7,7 @@ import com.bawnorton.randoassistant.networking.SerializeableInteraction; import com.bawnorton.randoassistant.networking.SerializeableLootTable; import com.bawnorton.randoassistant.tracking.Tracker; -import com.bawnorton.randoassistant.tracking.trackable.TrackableCrawler; import com.bawnorton.randoassistant.util.LootAdvancement; -import io.netty.buffer.Unpooled; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; import net.minecraft.item.ItemStack; @@ -34,9 +32,7 @@ public static void init() { client.execute(() -> Tracker.getInstance().track(crafting)); }); - ClientPlayNetworking.registerGlobalReceiver(NetworkingConstants.CLEAR_CACHE_PACKET, (client, handler, buf, responseSender) -> { - client.execute(() -> Tracker.getInstance().clearCache()); - }); + ClientPlayNetworking.registerGlobalReceiver(NetworkingConstants.CLEAR_CACHE_PACKET, (client, handler, buf, responseSender) -> client.execute(() -> Tracker.getInstance().clearCache())); ClientPlayNetworking.registerGlobalReceiver(NetworkingConstants.DEBUG_PACKET, (client, handler, buf, responseSender) -> { ItemStack stack = buf.readItemStack(); @@ -47,9 +43,7 @@ public static void init() { }); }); - ClientPlayNetworking.registerGlobalReceiver(NetworkingConstants.HANDSHAKE_PACKET, (client, handler, buf, responseSender) -> { - client.execute(() -> RandoAssistantClient.isInstalledOnServer = true); - }); + ClientPlayNetworking.registerGlobalReceiver(NetworkingConstants.HANDSHAKE_PACKET, (client, handler, buf, responseSender) -> client.execute(() -> RandoAssistantClient.isInstalledOnServer = true)); } public static void requestHandshakePacket() { diff --git a/src/client/java/com/bawnorton/randoassistant/render/overlay/Cuboid.java b/src/client/java/com/bawnorton/randoassistant/render/overlay/Cuboid.java index dd50461..e00ec56 100644 --- a/src/client/java/com/bawnorton/randoassistant/render/overlay/Cuboid.java +++ b/src/client/java/com/bawnorton/randoassistant/render/overlay/Cuboid.java @@ -3,20 +3,17 @@ import net.minecraft.client.render.VertexConsumer; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Box; import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3i; public class Cuboid extends Renderer { private final Line[] edges = new Line[12]; - public BlockPos start; - public Vec3i size; - public BlockPos pos; + public final BlockPos start; + public final Vec3i size; public Cuboid(BlockPos start, Vec3i size, Colour color) { this.start = start; this.size = size; - this.pos = this.start.add(this.size.getX() / 2, this.size.getY() / 2, this.size.getZ() / 2); this.edges[0] = new Line(toVec3d(this.start), toVec3d(this.start.add(this.size.getX(), 0, 0)), color); this.edges[1] = new Line(toVec3d(this.start), toVec3d(this.start.add(0, this.size.getY(), 0)), color); this.edges[2] = new Line(toVec3d(this.start), toVec3d(this.start.add(0, 0, this.size.getZ())), color); diff --git a/src/client/java/com/bawnorton/randoassistant/render/overlay/Line.java b/src/client/java/com/bawnorton/randoassistant/render/overlay/Line.java index 6846da3..2983e16 100644 --- a/src/client/java/com/bawnorton/randoassistant/render/overlay/Line.java +++ b/src/client/java/com/bawnorton/randoassistant/render/overlay/Line.java @@ -6,9 +6,9 @@ public class Line extends Renderer { - public Vec3d start; - public Vec3d end; - public Colour colour; + public final Vec3d start; + public final Vec3d end; + public final Colour colour; public Line(Vec3d start, Vec3d end, Colour colour) { this.start = start; diff --git a/src/client/java/com/bawnorton/randoassistant/render/overlay/RenderManager.java b/src/client/java/com/bawnorton/randoassistant/render/overlay/RenderManager.java index 02b08bf..ae49c92 100644 --- a/src/client/java/com/bawnorton/randoassistant/render/overlay/RenderManager.java +++ b/src/client/java/com/bawnorton/randoassistant/render/overlay/RenderManager.java @@ -4,12 +4,9 @@ import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.block.Block; import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.*; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.registry.tag.FluidTags; -import net.minecraft.registry.tag.TagKey; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; diff --git a/src/client/java/com/bawnorton/randoassistant/screen/LootBookSettingsWidget.java b/src/client/java/com/bawnorton/randoassistant/screen/LootBookSettingsWidget.java index 4e52de5..28bece9 100644 --- a/src/client/java/com/bawnorton/randoassistant/screen/LootBookSettingsWidget.java +++ b/src/client/java/com/bawnorton/randoassistant/screen/LootBookSettingsWidget.java @@ -13,8 +13,6 @@ import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; -import java.util.function.Consumer; - import static com.bawnorton.randoassistant.screen.LootTableGraphWidget.HEIGHT; public class LootBookSettingsWidget { diff --git a/src/client/java/com/bawnorton/randoassistant/screen/LootTableGraphWidget.java b/src/client/java/com/bawnorton/randoassistant/screen/LootTableGraphWidget.java index 81db16f..bf885d7 100644 --- a/src/client/java/com/bawnorton/randoassistant/screen/LootTableGraphWidget.java +++ b/src/client/java/com/bawnorton/randoassistant/screen/LootTableGraphWidget.java @@ -35,8 +35,8 @@ public class LootTableGraphWidget { private static final ExecutorService EXECUTOR_SERVICE = Executors.newFixedThreadPool(10); private static final int ABSOLUTE_SCALE = 2; - public static int WIDTH = 324; - public static int HEIGHT = 167; + public static final int WIDTH = 324; + public static final int HEIGHT = 167; private TrackingGraph graph; private Drawing drawing; @@ -276,9 +276,11 @@ public boolean mouseClicked(double mouseX, double mouseY, int button) { selected.addAll(graph.getChildren(identifier).stream().map(TrackingGraph.Vertex::getIdentifier).collect(Collectors.toSet())); } }); + return true; } } else if(mouseX >= x - 30 && mouseX <= x - 4 && mouseY >= y + 30 && mouseY <= y + 56) { centreOnTarget(); + return true; } else if(mouseX >= x + WIDTH && mouseX <= x + WIDTH + 26 && mouseY >= y && mouseY <= y + 26) { LootTableResultButton.getLastClicked().closeGraph(); LootBookWidget lootBook = LootBookWidget.getInstance(); @@ -288,6 +290,7 @@ public boolean mouseClicked(double mouseX, double mouseY, int button) { TexturedButtonWidget recipeButton = ((InventoryScreenExtender) lootBook.getScreen()).getRecipeBookButton(); lootButton.setY(lootButton.getY() - HEIGHT / 2); recipeButton.setY(recipeButton.getY() - HEIGHT / 2); + return true; } return false; } diff --git a/src/client/java/com/bawnorton/randoassistant/screen/LootTableListWidget.java b/src/client/java/com/bawnorton/randoassistant/screen/LootTableListWidget.java index 973a99e..3b3f0a7 100644 --- a/src/client/java/com/bawnorton/randoassistant/screen/LootTableListWidget.java +++ b/src/client/java/com/bawnorton/randoassistant/screen/LootTableListWidget.java @@ -2,19 +2,14 @@ import com.bawnorton.randoassistant.tracking.Tracker; import com.bawnorton.randoassistant.util.IdentifierType; -import com.google.common.collect.Sets; -import net.minecraft.block.Block; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.widget.ToggleButtonWidget; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.item.Item; import net.minecraft.registry.Registries; -import net.minecraft.util.Identifier; import java.util.ArrayList; import java.util.Comparator; import java.util.List; -import java.util.Set; import static com.bawnorton.randoassistant.screen.LootTableGraphWidget.HEIGHT; diff --git a/src/client/java/com/bawnorton/randoassistant/tracking/Tracker.java b/src/client/java/com/bawnorton/randoassistant/tracking/Tracker.java index bef5ac9..60f47b1 100644 --- a/src/client/java/com/bawnorton/randoassistant/tracking/Tracker.java +++ b/src/client/java/com/bawnorton/randoassistant/tracking/Tracker.java @@ -256,10 +256,6 @@ public void clear() { trackables.clear(); } - public int size() { - return trackables.size(); - } - @Override public String toString() { return "TrackableMap{" + diff --git a/src/client/java/com/bawnorton/randoassistant/tracking/graph/TrackingGraph.java b/src/client/java/com/bawnorton/randoassistant/tracking/graph/TrackingGraph.java index 98e73ff..7fe83f0 100644 --- a/src/client/java/com/bawnorton/randoassistant/tracking/graph/TrackingGraph.java +++ b/src/client/java/com/bawnorton/randoassistant/tracking/graph/TrackingGraph.java @@ -68,8 +68,8 @@ public void add(Identifier identifier) { } public void connect(Identifier source, Identifier destination) { - if(!contains(source)) add(source); - if(!contains(destination)) add(destination); + if(contains(source)) add(source); + if(contains(destination)) add(destination); Vertex sourceVertex = getVertex(source); Vertex destinationVertex = getVertex(destination); try { @@ -81,19 +81,13 @@ public void connect(Identifier source, Identifier destination) { } } - public void removeOutgoingEdges(Identifier target) { - Vertex vertex = getVertex(target); - Set edges = outgoingEdgesOf(vertex); - removeAllEdges(edges); - } - public boolean contains(Identifier identifier) { - return VERTEX_MAP.containsKey(identifier); + return !VERTEX_MAP.containsKey(identifier); } @NotNull public Vertex getVertex(Identifier identifier) { - if(!contains(identifier)) throw new IllegalArgumentException("Identifier " + identifier + " not found"); + if(contains(identifier)) throw new IllegalArgumentException("Identifier " + identifier + " not found"); return VERTEX_MAP.get(identifier); } diff --git a/src/client/java/com/bawnorton/randoassistant/util/IdentifierType.java b/src/client/java/com/bawnorton/randoassistant/util/IdentifierType.java index 9b21f74..633c159 100644 --- a/src/client/java/com/bawnorton/randoassistant/util/IdentifierType.java +++ b/src/client/java/com/bawnorton/randoassistant/util/IdentifierType.java @@ -1,7 +1,5 @@ package com.bawnorton.randoassistant.util; -import net.minecraft.block.Block; -import net.minecraft.block.Blocks; import net.minecraft.registry.Registries; import net.minecraft.util.Identifier; @@ -82,23 +80,4 @@ public static String getName(Identifier identifier, boolean preferEntity) { } }; } - - public boolean isItem() { - return this == ITEM; - } - - public boolean isBlock() { - if(this == BLOCK) return true; - if(this == ITEM) return Block.getBlockFromItem(Registries.ITEM.get(id)) != Blocks.AIR; - return false; - } - - public boolean isEntity() { - if(this == ENTITY) return true; - return isItemAndEntity(); - } - - public boolean isOther() { - return this == OTHER; - } } diff --git a/src/main/java/grapher/graph/drawing/Drawing.java b/src/client/java/grapher/graph/drawing/Drawing.java similarity index 99% rename from src/main/java/grapher/graph/drawing/Drawing.java rename to src/client/java/grapher/graph/drawing/Drawing.java index 17752a1..a06fbc4 100644 --- a/src/main/java/grapher/graph/drawing/Drawing.java +++ b/src/client/java/grapher/graph/drawing/Drawing.java @@ -1,6 +1,5 @@ package grapher.graph.drawing; -import com.bawnorton.randoassistant.RandoAssistant; import grapher.graph.elements.Edge; import grapher.graph.elements.Vertex; diff --git a/src/main/java/grapher/graph/drawing/package-info.java b/src/client/java/grapher/graph/drawing/package-info.java similarity index 100% rename from src/main/java/grapher/graph/drawing/package-info.java rename to src/client/java/grapher/graph/drawing/package-info.java diff --git a/src/main/java/grapher/graph/elements/Edge.java b/src/client/java/grapher/graph/elements/Edge.java similarity index 100% rename from src/main/java/grapher/graph/elements/Edge.java rename to src/client/java/grapher/graph/elements/Edge.java diff --git a/src/main/java/grapher/graph/elements/Graph.java b/src/client/java/grapher/graph/elements/Graph.java similarity index 100% rename from src/main/java/grapher/graph/elements/Graph.java rename to src/client/java/grapher/graph/elements/Graph.java diff --git a/src/main/java/grapher/graph/elements/Vertex.java b/src/client/java/grapher/graph/elements/Vertex.java similarity index 100% rename from src/main/java/grapher/graph/elements/Vertex.java rename to src/client/java/grapher/graph/elements/Vertex.java diff --git a/src/main/java/grapher/graph/elements/exception/CannotBeAppliedException.java b/src/client/java/grapher/graph/elements/exception/CannotBeAppliedException.java similarity index 100% rename from src/main/java/grapher/graph/elements/exception/CannotBeAppliedException.java rename to src/client/java/grapher/graph/elements/exception/CannotBeAppliedException.java diff --git a/src/main/java/grapher/graph/elements/exception/package-info.java b/src/client/java/grapher/graph/elements/exception/package-info.java similarity index 100% rename from src/main/java/grapher/graph/elements/exception/package-info.java rename to src/client/java/grapher/graph/elements/exception/package-info.java diff --git a/src/main/java/grapher/graph/elements/package-info.java b/src/client/java/grapher/graph/elements/package-info.java similarity index 100% rename from src/main/java/grapher/graph/elements/package-info.java rename to src/client/java/grapher/graph/elements/package-info.java diff --git a/src/main/java/grapher/graph/layout/AbstractJGraphXLayouter.java b/src/client/java/grapher/graph/layout/AbstractJGraphXLayouter.java similarity index 100% rename from src/main/java/grapher/graph/layout/AbstractJGraphXLayouter.java rename to src/client/java/grapher/graph/layout/AbstractJGraphXLayouter.java diff --git a/src/main/java/grapher/graph/layout/AbstractLayouter.java b/src/client/java/grapher/graph/layout/AbstractLayouter.java similarity index 100% rename from src/main/java/grapher/graph/layout/AbstractLayouter.java rename to src/client/java/grapher/graph/layout/AbstractLayouter.java diff --git a/src/main/java/grapher/graph/layout/GraphLayoutProperties.java b/src/client/java/grapher/graph/layout/GraphLayoutProperties.java similarity index 100% rename from src/main/java/grapher/graph/layout/GraphLayoutProperties.java rename to src/client/java/grapher/graph/layout/GraphLayoutProperties.java diff --git a/src/main/java/grapher/graph/layout/LayoutAlgorithms.java b/src/client/java/grapher/graph/layout/LayoutAlgorithms.java similarity index 100% rename from src/main/java/grapher/graph/layout/LayoutAlgorithms.java rename to src/client/java/grapher/graph/layout/LayoutAlgorithms.java diff --git a/src/main/java/grapher/graph/layout/Layouter.java b/src/client/java/grapher/graph/layout/Layouter.java similarity index 99% rename from src/main/java/grapher/graph/layout/Layouter.java rename to src/client/java/grapher/graph/layout/Layouter.java index 8f3b2b3..2ee8738 100644 --- a/src/main/java/grapher/graph/layout/Layouter.java +++ b/src/client/java/grapher/graph/layout/Layouter.java @@ -45,6 +45,7 @@ public class Layouter> { /** * Constructs the layouter without populating list ofItems edges and vertices */ + @SuppressWarnings("unused") public Layouter() { layouterFactory = new LayouterFactory<>(); } diff --git a/src/main/java/grapher/graph/layout/LayouterFactory.java b/src/client/java/grapher/graph/layout/LayouterFactory.java similarity index 100% rename from src/main/java/grapher/graph/layout/LayouterFactory.java rename to src/client/java/grapher/graph/layout/LayouterFactory.java diff --git a/src/main/java/grapher/graph/layout/PropertyEnums.java b/src/client/java/grapher/graph/layout/PropertyEnums.java similarity index 100% rename from src/main/java/grapher/graph/layout/PropertyEnums.java rename to src/client/java/grapher/graph/layout/PropertyEnums.java diff --git a/src/main/java/grapher/graph/layout/organic/JGraphHierarchicalLayouter.java b/src/client/java/grapher/graph/layout/organic/JGraphHierarchicalLayouter.java similarity index 100% rename from src/main/java/grapher/graph/layout/organic/JGraphHierarchicalLayouter.java rename to src/client/java/grapher/graph/layout/organic/JGraphHierarchicalLayouter.java diff --git a/src/main/java/grapher/graph/layout/organic/package-info.java b/src/client/java/grapher/graph/layout/organic/package-info.java similarity index 100% rename from src/main/java/grapher/graph/layout/organic/package-info.java rename to src/client/java/grapher/graph/layout/organic/package-info.java diff --git a/src/main/java/grapher/graph/layout/package-info.java b/src/client/java/grapher/graph/layout/package-info.java similarity index 100% rename from src/main/java/grapher/graph/layout/package-info.java rename to src/client/java/grapher/graph/layout/package-info.java diff --git a/src/main/java/com/bawnorton/randoassistant/RandoAssistant.java b/src/main/java/com/bawnorton/randoassistant/RandoAssistant.java index 3c50332..e45c3f4 100644 --- a/src/main/java/com/bawnorton/randoassistant/RandoAssistant.java +++ b/src/main/java/com/bawnorton/randoassistant/RandoAssistant.java @@ -10,22 +10,16 @@ import com.bawnorton.randoassistant.stat.RandoAssistantStats; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.item.v1.FabricItemSettings; -import net.minecraft.block.Blocks; import net.minecraft.block.OxidizableBlock; import net.minecraft.enchantment.Enchantments; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.*; import net.minecraft.loot.LootManager; import net.minecraft.loot.LootTable; import net.minecraft.loot.context.LootContext; import net.minecraft.loot.context.LootContextParameters; import net.minecraft.loot.context.LootContextType; -import net.minecraft.loot.entry.AlternativeEntry; -import net.minecraft.loot.entry.LootPoolEntryType; -import net.minecraft.loot.entry.LootTableEntry; -import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.RecipeManager; import net.minecraft.registry.DynamicRegistryManager; import net.minecraft.registry.Registries; diff --git a/src/main/java/com/bawnorton/randoassistant/mixin/AxeItemMixin.java b/src/main/java/com/bawnorton/randoassistant/mixin/AxeItemMixin.java index 6ee3b08..817aa31 100644 --- a/src/main/java/com/bawnorton/randoassistant/mixin/AxeItemMixin.java +++ b/src/main/java/com/bawnorton/randoassistant/mixin/AxeItemMixin.java @@ -21,8 +21,9 @@ @Mixin(AxeItem.class) public abstract class AxeItemMixin { + @SuppressWarnings("OptionalUsedAsFieldOrParameterType") @Inject(method = "useOnBlock", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;setBlockState(Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/block/BlockState;I)Z"), locals = LocalCapture.CAPTURE_FAILHARD) - private void onUseOnBlock(ItemUsageContext context, CallbackInfoReturnable cir, World world, BlockPos blockPos, PlayerEntity playerEntity, BlockState originalState, Optional optional, Optional optional2, Optional optional3, ItemStack itemStack, Optional optional4) { + private void onUseOnBlock(ItemUsageContext context, CallbackInfoReturnable cir, World world, BlockPos blockPos, PlayerEntity playerEntity, BlockState originalState, Optional optional, Optional optional2, Optional optional3, ItemStack itemStack, Optional optional4) { if (optional4.isPresent() && playerEntity instanceof ServerPlayerEntity serverPlayer) { serverPlayer.incrementStat(RandoAssistantStats.INTERACTED.getOrCreateStat(Registries.BLOCK.getId(originalState.getBlock()))); } diff --git a/src/main/java/com/bawnorton/randoassistant/mixin/CatEntitySleepWithOwnerGoalMixin.java b/src/main/java/com/bawnorton/randoassistant/mixin/CatEntitySleepWithOwnerGoalMixin.java index 284574f..89f62ba 100644 --- a/src/main/java/com/bawnorton/randoassistant/mixin/CatEntitySleepWithOwnerGoalMixin.java +++ b/src/main/java/com/bawnorton/randoassistant/mixin/CatEntitySleepWithOwnerGoalMixin.java @@ -1,9 +1,14 @@ package com.bawnorton.randoassistant.mixin; +import com.bawnorton.randoassistant.networking.Networking; import com.bawnorton.randoassistant.stat.RandoAssistantStats; +import com.bawnorton.randoassistant.util.LootAdvancement; +import net.minecraft.advancement.Advancement; +import net.minecraft.advancement.AdvancementProgress; import net.minecraft.entity.passive.CatEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.loot.LootTables; +import net.minecraft.server.network.ServerPlayerEntity; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -19,6 +24,15 @@ public abstract class CatEntitySleepWithOwnerGoalMixin { private void onDropMorningGifts(CallbackInfo ci) { if(owner != null) { owner.incrementStat(RandoAssistantStats.LOOTED.getOrCreateStat(LootTables.CAT_MORNING_GIFT_GAMEPLAY)); + Advancement advancement = Networking.server.getAdvancementLoader().get(LootAdvancement.CAT_MORNING_GIFT.id()); + if(advancement == null) return; + if(owner instanceof ServerPlayerEntity serverPlayer) { + AdvancementProgress progress = serverPlayer.getAdvancementTracker().getProgress(advancement); + if(progress.isDone()) return; + for(String criterion : progress.getUnobtainedCriteria()) { + serverPlayer.getAdvancementTracker().grantCriterion(advancement, criterion); + } + } } } } diff --git a/src/main/java/com/bawnorton/randoassistant/mixin/HoneycombItemMixin.java b/src/main/java/com/bawnorton/randoassistant/mixin/HoneycombItemMixin.java index 9baf817..150a359 100644 --- a/src/main/java/com/bawnorton/randoassistant/mixin/HoneycombItemMixin.java +++ b/src/main/java/com/bawnorton/randoassistant/mixin/HoneycombItemMixin.java @@ -1,8 +1,5 @@ package com.bawnorton.randoassistant.mixin; -import com.bawnorton.randoassistant.RandoAssistant; -import com.bawnorton.randoassistant.networking.Networking; -import com.bawnorton.randoassistant.networking.SerializeableInteraction; import com.bawnorton.randoassistant.stat.RandoAssistantStats; import net.minecraft.block.BlockState; import net.minecraft.item.HoneycombItem; diff --git a/src/main/java/com/bawnorton/randoassistant/mixin/MerchantEntityMixin.java b/src/main/java/com/bawnorton/randoassistant/mixin/MerchantEntityMixin.java new file mode 100644 index 0000000..19e9036 --- /dev/null +++ b/src/main/java/com/bawnorton/randoassistant/mixin/MerchantEntityMixin.java @@ -0,0 +1,37 @@ +package com.bawnorton.randoassistant.mixin; + +import com.bawnorton.randoassistant.networking.Networking; +import com.bawnorton.randoassistant.util.LootAdvancement; +import net.minecraft.advancement.Advancement; +import net.minecraft.advancement.AdvancementProgress; +import net.minecraft.entity.passive.MerchantEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Items; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.village.TradeOffer; +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(MerchantEntity.class) +public abstract class MerchantEntityMixin { + @Shadow private @Nullable PlayerEntity customer; + + @Inject(method = "trade", at = @At(value = "INVOKE", target = "Lnet/minecraft/advancement/criterion/VillagerTradeCriterion;trigger(Lnet/minecraft/server/network/ServerPlayerEntity;Lnet/minecraft/entity/passive/MerchantEntity;Lnet/minecraft/item/ItemStack;)V")) + private void onTrade(TradeOffer offer, CallbackInfo ci) { + if(offer.getSellItem().getItem().equals(Items.ENDER_PEARL)) { + Advancement advancement = Networking.server.getAdvancementLoader().get(LootAdvancement.SHAME.id()); + if(advancement == null) return; + if(customer instanceof ServerPlayerEntity serverPlayer) { + AdvancementProgress progress = serverPlayer.getAdvancementTracker().getProgress(advancement); + if(progress.isDone()) return; + for(String criterion : progress.getUnobtainedCriteria()) { + serverPlayer.getAdvancementTracker().grantCriterion(advancement, criterion); + } + } + } + } +} diff --git a/src/main/java/com/bawnorton/randoassistant/mixin/PlayerAdvancementTrackerMixin.java b/src/main/java/com/bawnorton/randoassistant/mixin/PlayerAdvancementTrackerMixin.java index 21366e8..52642a6 100644 --- a/src/main/java/com/bawnorton/randoassistant/mixin/PlayerAdvancementTrackerMixin.java +++ b/src/main/java/com/bawnorton/randoassistant/mixin/PlayerAdvancementTrackerMixin.java @@ -3,7 +3,6 @@ import com.bawnorton.randoassistant.RandoAssistant; import net.minecraft.advancement.Advancement; import net.minecraft.advancement.PlayerAdvancementTracker; -import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.Enchantments; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; diff --git a/src/main/java/com/bawnorton/randoassistant/mixin/ServerPlayerEntityMixin.java b/src/main/java/com/bawnorton/randoassistant/mixin/ServerPlayerEntityMixin.java index cbcc07b..7e759a0 100644 --- a/src/main/java/com/bawnorton/randoassistant/mixin/ServerPlayerEntityMixin.java +++ b/src/main/java/com/bawnorton/randoassistant/mixin/ServerPlayerEntityMixin.java @@ -2,12 +2,12 @@ import com.bawnorton.randoassistant.RandoAssistant; import com.bawnorton.randoassistant.networking.Networking; +import com.bawnorton.randoassistant.util.LootAdvancement; import net.minecraft.advancement.Advancement; import net.minecraft.advancement.AdvancementProgress; import net.minecraft.item.ItemStack; import net.minecraft.screen.ScreenHandler; import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.util.Identifier; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -24,7 +24,7 @@ public abstract class ServerPlayerEntityMixin { @Inject(method = "onSlotUpdate(Lnet/minecraft/screen/ScreenHandler;ILnet/minecraft/item/ItemStack;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/advancement/criterion/InventoryChangedCriterion;trigger(Lnet/minecraft/server/network/ServerPlayerEntity;Lnet/minecraft/entity/player/PlayerInventory;Lnet/minecraft/item/ItemStack;)V")) private void onTrigger(ScreenHandler handler, int slotId, ItemStack stack, CallbackInfo ci) { if(stack.getItem().equals(RandoAssistant.WOB)) { - Advancement advancement = Networking.server.getAdvancementLoader().get(new Identifier(RandoAssistant.MOD_ID, "wob")); + Advancement advancement = Networking.server.getAdvancementLoader().get(LootAdvancement.WOB.id()); if(advancement == null) return; AdvancementProgress progress = field_29183.getAdvancementTracker().getProgress(advancement); if(progress.isDone()) return; diff --git a/src/main/java/com/bawnorton/randoassistant/networking/Networking.java b/src/main/java/com/bawnorton/randoassistant/networking/Networking.java index 1f6c320..a5e3218 100644 --- a/src/main/java/com/bawnorton/randoassistant/networking/Networking.java +++ b/src/main/java/com/bawnorton/randoassistant/networking/Networking.java @@ -1,22 +1,17 @@ package com.bawnorton.randoassistant.networking; -import com.bawnorton.randoassistant.RandoAssistant; import com.bawnorton.randoassistant.util.LootAdvancement; import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; import net.minecraft.advancement.Advancement; -import net.minecraft.advancement.AdvancementPositioner; import net.minecraft.advancement.AdvancementProgress; import net.minecraft.block.Block; import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; import net.minecraft.network.PacketByteBuf; import net.minecraft.registry.Registries; import net.minecraft.server.MinecraftServer; import net.minecraft.server.ServerAdvancementLoader; import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.util.Identifier; public class Networking { public static final Object SERVER_LOCK = new Object(); diff --git a/src/main/java/com/bawnorton/randoassistant/networking/Serializeable.java b/src/main/java/com/bawnorton/randoassistant/networking/Serializeable.java index 6fb7891..cd05f0f 100644 --- a/src/main/java/com/bawnorton/randoassistant/networking/Serializeable.java +++ b/src/main/java/com/bawnorton/randoassistant/networking/Serializeable.java @@ -4,6 +4,6 @@ public interface Serializeable { byte[] toBytes(); - void populateData(byte[] bytes); + Identifier getTypePacket(); } diff --git a/src/main/java/com/bawnorton/randoassistant/networking/SerializeableCrafting.java b/src/main/java/com/bawnorton/randoassistant/networking/SerializeableCrafting.java index 01ab872..eb5666a 100644 --- a/src/main/java/com/bawnorton/randoassistant/networking/SerializeableCrafting.java +++ b/src/main/java/com/bawnorton/randoassistant/networking/SerializeableCrafting.java @@ -57,7 +57,7 @@ public byte[] toBytes() { } @SuppressWarnings("unchecked") - public void populateData(byte[] bytes) { + private void populateData(byte[] bytes) { try(ByteArrayInputStream bais = new ByteArrayInputStream(bytes)) { ObjectInputStream ois = new ObjectInputStream(bais); deserialize((Pair) ois.readObject()); diff --git a/src/main/java/com/bawnorton/randoassistant/networking/SerializeableInteraction.java b/src/main/java/com/bawnorton/randoassistant/networking/SerializeableInteraction.java index 458bc54..3c2ea14 100644 --- a/src/main/java/com/bawnorton/randoassistant/networking/SerializeableInteraction.java +++ b/src/main/java/com/bawnorton/randoassistant/networking/SerializeableInteraction.java @@ -1,15 +1,11 @@ package com.bawnorton.randoassistant.networking; import com.bawnorton.randoassistant.util.tuples.Pair; -import com.bawnorton.randoassistant.util.tuples.Triplet; import net.minecraft.block.Block; -import net.minecraft.item.Item; import net.minecraft.registry.Registries; import net.minecraft.util.Identifier; import java.io.*; -import java.util.ArrayList; -import java.util.List; public class SerializeableInteraction implements Serializeable { private Pair serializedInteraction; @@ -60,7 +56,7 @@ public byte[] toBytes() { } @SuppressWarnings("unchecked") - public void populateData(byte[] bytes) { + private void populateData(byte[] bytes) { try(ByteArrayInputStream bais = new ByteArrayInputStream(bytes)) { ObjectInputStream ois = new ObjectInputStream(bais); deserialize((Pair) ois.readObject()); diff --git a/src/main/java/com/bawnorton/randoassistant/networking/SerializeableLootTable.java b/src/main/java/com/bawnorton/randoassistant/networking/SerializeableLootTable.java index 357b6ee..89cd5bf 100644 --- a/src/main/java/com/bawnorton/randoassistant/networking/SerializeableLootTable.java +++ b/src/main/java/com/bawnorton/randoassistant/networking/SerializeableLootTable.java @@ -1,7 +1,7 @@ package com.bawnorton.randoassistant.networking; import com.bawnorton.randoassistant.util.LootCondition; -import com.bawnorton.randoassistant.util.tuples.Quadruplet; +import com.bawnorton.randoassistant.util.tuples.Quartet; import net.minecraft.block.Block; import net.minecraft.entity.EntityType; import net.minecraft.item.Item; @@ -15,7 +15,7 @@ import java.util.List; public class SerializeableLootTable implements Serializeable { - private Quadruplet, String> serializedLootTable; + private Quartet, String> serializedLootTable; private Identifier lootTableId; private Identifier sourceId; @@ -44,10 +44,10 @@ private void initSerialized() { for(Item item : items) { itemNames.add(Registries.ITEM.getId(item).toString()); } - serializedLootTable = new Quadruplet<>(lootTableId.toString(), sourceId.toString(), itemNames, condition.name()); + serializedLootTable = Quartet.of(lootTableId.toString(), sourceId.toString(), itemNames, condition.name()); } - private void deserialize(Quadruplet, String> serialized) { + private void deserialize(Quartet, String> serialized) { this.lootTableId = new Identifier(serialized.a()); this.sourceId = new Identifier(serialized.b()); this.condition = LootCondition.valueOf(serialized.d()); @@ -94,10 +94,10 @@ public byte[] toBytes() { } @SuppressWarnings("unchecked") - public void populateData(byte[] bytes) { + private void populateData(byte[] bytes) { try (ByteArrayInputStream bais = new ByteArrayInputStream(bytes)) { ObjectInputStream ois = new ObjectInputStream(bais); - deserialize((Quadruplet, String>) ois.readObject()); + deserialize((Quartet, String>) ois.readObject()); } catch (IOException | ClassNotFoundException e) { throw new RuntimeException(e); } diff --git a/src/main/java/com/bawnorton/randoassistant/util/LootAdvancement.java b/src/main/java/com/bawnorton/randoassistant/util/LootAdvancement.java index af1b485..93832f2 100644 --- a/src/main/java/com/bawnorton/randoassistant/util/LootAdvancement.java +++ b/src/main/java/com/bawnorton/randoassistant/util/LootAdvancement.java @@ -11,7 +11,10 @@ public enum LootAdvancement { ALL(new Identifier(RandoAssistant.MOD_ID, "all_loottables")), ALL_BLOCKS(new Identifier(RandoAssistant.MOD_ID, "all_block_loottables")), ALL_ENTITIES(new Identifier(RandoAssistant.MOD_ID, "all_entity_loottables")), - ALL_OTHER(new Identifier(RandoAssistant.MOD_ID, "all_other_loottables")); + ALL_OTHER(new Identifier(RandoAssistant.MOD_ID, "all_other_loottables")), + CAT_MORNING_GIFT(new Identifier(RandoAssistant.MOD_ID, "cat_morning_gift")), + SHAME(new Identifier(RandoAssistant.MOD_ID, "shame")), + WOB(new Identifier(RandoAssistant.MOD_ID, "wob")); private final Identifier id; diff --git a/src/main/java/com/bawnorton/randoassistant/util/LootCondition.java b/src/main/java/com/bawnorton/randoassistant/util/LootCondition.java index 1b32862..1486f86 100644 --- a/src/main/java/com/bawnorton/randoassistant/util/LootCondition.java +++ b/src/main/java/com/bawnorton/randoassistant/util/LootCondition.java @@ -2,6 +2,5 @@ public enum LootCondition { SILK_TOUCH, - CRAFTING, NONE } \ No newline at end of file diff --git a/src/main/java/com/bawnorton/randoassistant/util/WallBlockLookup.java b/src/main/java/com/bawnorton/randoassistant/util/WallBlockLookup.java deleted file mode 100644 index 42597e1..0000000 --- a/src/main/java/com/bawnorton/randoassistant/util/WallBlockLookup.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.bawnorton.randoassistant.util; - -import net.minecraft.block.Block; -import net.minecraft.block.Blocks; - -import java.util.Map; - -public interface WallBlockLookup { - Map lookup = Map.ofEntries( - Map.entry(Blocks.WALL_TORCH, Blocks.TORCH), - Map.entry(Blocks.OAK_WALL_SIGN, Blocks.OAK_SIGN), - Map.entry(Blocks.SPRUCE_WALL_SIGN, Blocks.SPRUCE_SIGN), - Map.entry(Blocks.BIRCH_WALL_SIGN, Blocks.BIRCH_SIGN), - Map.entry(Blocks.JUNGLE_WALL_SIGN, Blocks.JUNGLE_SIGN), - Map.entry(Blocks.ACACIA_WALL_SIGN, Blocks.ACACIA_SIGN), - Map.entry(Blocks.DARK_OAK_WALL_SIGN, Blocks.DARK_OAK_SIGN), - Map.entry(Blocks.CRIMSON_WALL_SIGN, Blocks.CRIMSON_SIGN), - Map.entry(Blocks.WARPED_WALL_SIGN, Blocks.WARPED_SIGN), - Map.entry(Blocks.BAMBOO_WALL_SIGN, Blocks.BAMBOO_SIGN), - Map.entry(Blocks.OAK_WALL_HANGING_SIGN, Blocks.OAK_HANGING_SIGN), - Map.entry(Blocks.SPRUCE_WALL_HANGING_SIGN, Blocks.SPRUCE_HANGING_SIGN), - Map.entry(Blocks.BIRCH_WALL_HANGING_SIGN, Blocks.BIRCH_HANGING_SIGN), - Map.entry(Blocks.JUNGLE_WALL_HANGING_SIGN, Blocks.JUNGLE_HANGING_SIGN), - Map.entry(Blocks.ACACIA_WALL_HANGING_SIGN, Blocks.ACACIA_HANGING_SIGN), - Map.entry(Blocks.DARK_OAK_WALL_HANGING_SIGN, Blocks.DARK_OAK_HANGING_SIGN), - Map.entry(Blocks.CRIMSON_WALL_HANGING_SIGN, Blocks.CRIMSON_HANGING_SIGN), - Map.entry(Blocks.WARPED_WALL_HANGING_SIGN, Blocks.WARPED_HANGING_SIGN), - Map.entry(Blocks.BAMBOO_WALL_HANGING_SIGN, Blocks.BAMBOO_HANGING_SIGN), - Map.entry(Blocks.REDSTONE_WALL_TORCH, Blocks.REDSTONE_TORCH), - Map.entry(Blocks.SOUL_WALL_TORCH, Blocks.SOUL_TORCH), - Map.entry(Blocks.SKELETON_WALL_SKULL, Blocks.SKELETON_SKULL), - Map.entry(Blocks.WITHER_SKELETON_WALL_SKULL, Blocks.WITHER_SKELETON_SKULL), - Map.entry(Blocks.ZOMBIE_WALL_HEAD, Blocks.ZOMBIE_HEAD), - Map.entry(Blocks.PLAYER_WALL_HEAD, Blocks.PLAYER_HEAD), - Map.entry(Blocks.CREEPER_WALL_HEAD, Blocks.CREEPER_HEAD), - Map.entry(Blocks.DRAGON_WALL_HEAD, Blocks.DRAGON_HEAD), - Map.entry(Blocks.PIGLIN_WALL_HEAD, Blocks.PIGLIN_HEAD), - Map.entry(Blocks.WHITE_WALL_BANNER, Blocks.WHITE_BANNER), - Map.entry(Blocks.ORANGE_WALL_BANNER, Blocks.ORANGE_BANNER), - Map.entry(Blocks.MAGENTA_WALL_BANNER, Blocks.MAGENTA_BANNER), - Map.entry(Blocks.LIGHT_BLUE_WALL_BANNER, Blocks.LIGHT_BLUE_BANNER), - Map.entry(Blocks.YELLOW_WALL_BANNER, Blocks.YELLOW_BANNER), - Map.entry(Blocks.LIME_WALL_BANNER, Blocks.LIME_BANNER), - Map.entry(Blocks.PINK_WALL_BANNER, Blocks.PINK_BANNER), - Map.entry(Blocks.GRAY_WALL_BANNER, Blocks.GRAY_BANNER), - Map.entry(Blocks.LIGHT_GRAY_WALL_BANNER, Blocks.LIGHT_GRAY_BANNER), - Map.entry(Blocks.CYAN_WALL_BANNER, Blocks.CYAN_BANNER), - Map.entry(Blocks.PURPLE_WALL_BANNER, Blocks.PURPLE_BANNER), - Map.entry(Blocks.BLUE_WALL_BANNER, Blocks.BLUE_BANNER), - Map.entry(Blocks.BROWN_WALL_BANNER, Blocks.BROWN_BANNER), - Map.entry(Blocks.GREEN_WALL_BANNER, Blocks.GREEN_BANNER), - Map.entry(Blocks.RED_WALL_BANNER, Blocks.RED_BANNER), - Map.entry(Blocks.BLACK_WALL_BANNER, Blocks.BLACK_BANNER), - Map.entry(Blocks.DEAD_TUBE_CORAL_WALL_FAN, Blocks.DEAD_TUBE_CORAL_FAN), - Map.entry(Blocks.DEAD_BRAIN_CORAL_WALL_FAN, Blocks.DEAD_BRAIN_CORAL_FAN), - Map.entry(Blocks.DEAD_BUBBLE_CORAL_WALL_FAN, Blocks.DEAD_BUBBLE_CORAL_FAN), - Map.entry(Blocks.DEAD_FIRE_CORAL_WALL_FAN, Blocks.DEAD_FIRE_CORAL_FAN), - Map.entry(Blocks.DEAD_HORN_CORAL_WALL_FAN, Blocks.DEAD_HORN_CORAL_FAN), - Map.entry(Blocks.TUBE_CORAL_WALL_FAN, Blocks.TUBE_CORAL_FAN), - Map.entry(Blocks.BRAIN_CORAL_WALL_FAN, Blocks.BRAIN_CORAL_FAN), - Map.entry(Blocks.BUBBLE_CORAL_WALL_FAN, Blocks.BUBBLE_CORAL_FAN), - Map.entry(Blocks.FIRE_CORAL_WALL_FAN, Blocks.FIRE_CORAL_FAN), - Map.entry(Blocks.HORN_CORAL_WALL_FAN, Blocks.HORN_CORAL_FAN) - ); - - static Block getBlock(Block block) { - return lookup.getOrDefault(block, block); - } -} diff --git a/src/main/java/com/bawnorton/randoassistant/util/tuples/Quadruplet.java b/src/main/java/com/bawnorton/randoassistant/util/tuples/Quadruplet.java deleted file mode 100644 index 0ce68ab..0000000 --- a/src/main/java/com/bawnorton/randoassistant/util/tuples/Quadruplet.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.bawnorton.randoassistant.util.tuples; - -import java.io.Serializable; - -public record Quadruplet(A a, B b, C c, D d) implements Serializable { - public static Quadruplet of(A a, B b, C c, D d) { - return new Quadruplet<>(a, b, c, d); - } -} diff --git a/src/main/java/com/bawnorton/randoassistant/util/tuples/Quartet.java b/src/main/java/com/bawnorton/randoassistant/util/tuples/Quartet.java new file mode 100644 index 0000000..34a2504 --- /dev/null +++ b/src/main/java/com/bawnorton/randoassistant/util/tuples/Quartet.java @@ -0,0 +1,9 @@ +package com.bawnorton.randoassistant.util.tuples; + +import java.io.Serializable; + +public record Quartet(A a, B b, C c, D d) implements Serializable { + public static Quartet of(A a, B b, C c, D d) { + return new Quartet<>(a, b, c, d); + } +} diff --git a/src/main/java/com/bawnorton/randoassistant/util/tuples/Triplet.java b/src/main/java/com/bawnorton/randoassistant/util/tuples/Triplet.java deleted file mode 100644 index 035435c..0000000 --- a/src/main/java/com/bawnorton/randoassistant/util/tuples/Triplet.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.bawnorton.randoassistant.util.tuples; - -import java.io.Serializable; - -public record Triplet(A a, B b, C c) implements Serializable { - public static Triplet of(A a, B b, C c) { - return new Triplet<>(a, b, c); - } -} diff --git a/src/main/java/com/bawnorton/randoassistant/util/tuples/Wrapper.java b/src/main/java/com/bawnorton/randoassistant/util/tuples/Wrapper.java deleted file mode 100644 index 9100fd9..0000000 --- a/src/main/java/com/bawnorton/randoassistant/util/tuples/Wrapper.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.bawnorton.randoassistant.util.tuples; - -public class Wrapper { - private T element; - - private Wrapper(T element) { - this.element = element; - } - - public static Wrapper of(T element) { - return new Wrapper<>(element); - } - - public static Wrapper ofNothing() { - return new Wrapper<>(null); - } - - public T get() { - return element; - } - - public void set(T element) { - this.element = element; - } - - @Override - public String toString() { - return "Wrapper{" + element + "}"; - } -} diff --git a/src/main/resources/data/randoassistant/advancements/cat_morning_gift.json b/src/main/resources/data/randoassistant/advancements/cat_morning_gift.json new file mode 100644 index 0000000..45984b4 --- /dev/null +++ b/src/main/resources/data/randoassistant/advancements/cat_morning_gift.json @@ -0,0 +1,19 @@ +{ + "display": { + "icon": { + "item": "minecraft:string" + }, + "title": "Was it Worth the Trouble?", + "description": "You went through the effort of finding out what cats give you in the morning. Was it worth it?", + "frame": "challenge", + "show_toast": true, + "announce_to_chat": true, + "hidden": true + }, + "parent": "fasguys_toolbox:loot_table_randomizer/main", + "criteria": { + "requirement": { + "trigger": "minecraft:impossible" + } + } +} diff --git a/src/main/resources/data/randoassistant/advancements/shame.json b/src/main/resources/data/randoassistant/advancements/shame.json new file mode 100644 index 0000000..9a9f3c8 --- /dev/null +++ b/src/main/resources/data/randoassistant/advancements/shame.json @@ -0,0 +1,19 @@ +{ + "display": { + "icon": { + "item": "minecraft:emerald" + }, + "title": "What a Shame", + "description": "You traded for ender pearls instead of finding them naturally.", + "frame": "challenge", + "show_toast": true, + "announce_to_chat": true, + "hidden": true + }, + "parent": "fasguys_toolbox:loot_table_randomizer/main", + "criteria": { + "requirement": { + "trigger": "minecraft:impossible" + } + } +} diff --git a/src/main/resources/randoassistant.mixins.json b/src/main/resources/randoassistant.mixins.json index 916d4da..37fdc3f 100644 --- a/src/main/resources/randoassistant.mixins.json +++ b/src/main/resources/randoassistant.mixins.json @@ -12,6 +12,7 @@ "HoneycombItemMixin", "LivingEntityMixin", "LootableContainerBlockEntityMixin", + "MerchantEntityMixin", "MinecraftServerMixin", "PacketByteBufMixin", "PiglinBrainMixin",