Skip to content

Commit

Permalink
Updated dependencies, added by-item search support for skyblock items.
Browse files Browse the repository at this point in the history
  • Loading branch information
rinOfTheStars committed Mar 14, 2021
1 parent 281059b commit f4d502d
Show file tree
Hide file tree
Showing 8 changed files with 90 additions and 7 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ archivesBaseName = project.archives_base_name
version = project.mod_version

repositories {
jcenter()
maven { url "https://maven.shedaniel.me/"}
maven { url "https://www.cursemaven.com" }
}

Expand Down
8 changes: 4 additions & 4 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@ org.gradle.jvmargs=-Xmx1G
# Fabric Properties
# check these on https://modmuss50.me/fabric.html
minecraft_version=1.16.5
yarn_mappings=1.16.5+build.3
loader_version=0.11.1
yarn_mappings=1.16.5+build.5
loader_version=0.11.3
# Mod Properties
mod_version=0.1.0
archives_base_name=skyblock-rei
# Dependencies
# check this on https://modmuss50.me/fabric.html
fabric_version=0.25.1+build.416-1.16
fabric_version=0.32.0+1.16

rei_version=5.8.10
rei_version=5.10.184
6 changes: 6 additions & 0 deletions src/main/java/com/cocona/skyblockrei/SkyblockREI.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
public class SkyblockREI implements ClientModInitializer {
public static final Logger LOG = LogManager.getLogger("skyblock-rei");

public static PackagedData packagedDataRef;


public static final Identifier SKYBLOCK_CRAFTING_ID = new Identifier("skyblock-rei", "recipes/skyblock_crafting");

Expand All @@ -27,6 +29,10 @@ public void onInitializeClient() {

}

public static void updatePackagedDataRef(PackagedData update){
packagedDataRef = update;
}

public static boolean isAllEntryStacksNull(List<EntryStack> list) {
int potential = list.size();
for(EntryStack e : list){
Expand Down
7 changes: 7 additions & 0 deletions src/main/java/com/cocona/skyblockrei/SkyblockREIPlugin.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.cocona.skyblockrei;

import com.cocona.skyblockrei.data.PackagedData;
import com.cocona.skyblockrei.data.search.SkyblockFocusedStackProvider;
import com.cocona.skyblockrei.recipe.skyblockCrafting.SkyblockCustomCategory;
import com.cocona.skyblockrei.recipe.skyblockCrafting.SkyblockCustomDisplay;
import com.google.common.base.Predicates;
Expand Down Expand Up @@ -38,6 +39,7 @@ public void registerEntries(EntryRegistry entryRegistry) {
stacks.sort(Comparator.<EntryStack, Identifier>comparing(stack -> Registry.ITEM.getId(stack.getItemStack().getItem()))
.thenComparing(stack -> stack.asFormatStrippedText().asString()));
entryRegistry.registerEntries(stacks.toArray(new EntryStack[0]));
SkyblockREI.updatePackagedDataRef(packagedData);
}

@Override
Expand Down Expand Up @@ -69,4 +71,9 @@ public void registerPluginCategories(RecipeHelper recipeHelper) {
SkyblockCustomCategory category = new SkyblockCustomCategory();
recipeHelper.registerCategory(category);
}

@Override
public void registerOthers(RecipeHelper recipeHelper) {
recipeHelper.registerFocusedStackProvider(new SkyblockFocusedStackProvider());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public PackagedData(List<EntryStack> i, List<Pair<String, SkyblockCraftingRecipe
defMap = d;
}

private EntryStack getEntryFromMap(String key){
public EntryStack getEntryFromMap(String key){
Pair<String, EntryStack> defaultResult = new Pair<>("", EntryStack.empty());
int amount = 1;
//amount parsing
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package com.cocona.skyblockrei.data.search;

import com.cocona.skyblockrei.SkyblockREI;
import com.cocona.skyblockrei.SkyblockREIPlugin;
import com.cocona.skyblockrei.mixin.HandledScreenAccess;
import com.mojang.brigadier.StringReader;
import me.shedaniel.rei.api.EntryStack;
import me.shedaniel.rei.api.FocusedStackProvider;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.ingame.HandledScreen;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.StringNbtReader;
import net.minecraft.util.TypedActionResult;
import org.jetbrains.annotations.NotNull;

import java.util.function.Supplier;

public class SkyblockFocusedStackProvider implements FocusedStackProvider {
@Override
public @NotNull TypedActionResult<EntryStack> provide(Screen screen) {
if (screen instanceof HandledScreen) {
HandledScreen<?> containerScreen = (HandledScreen<?>) screen;

if (((HandledScreenAccess)containerScreen).getFocusedSlot() != null && !((HandledScreenAccess)containerScreen).getFocusedSlot().getStack().isEmpty()){
ItemStack focusedItem = ((HandledScreenAccess)containerScreen).getFocusedSlot().getStack();
try {
CompoundTag tag = focusedItem.getTag();
CompoundTag subtag = tag.getCompound("ExtraAttributes");
String attID = subtag.getString("id");
EntryStack result = SkyblockREI.packagedDataRef.getEntryFromMap(attID);
if(!result.equals(EntryStack.empty())){
return TypedActionResult.success(result.setting(EntryStack.Settings.CHECK_TAGS, () -> true));
} else {
return TypedActionResult.success(EntryStack.create(((HandledScreenAccess) containerScreen).getFocusedSlot().getStack()));
}

} catch(Exception e){
SkyblockREI.LOG.error("Error caught while parsing item nbt for skyblock-specific data. Returning to default behavior!");
SkyblockREI.LOG.catching(e);
return TypedActionResult.success(EntryStack.create(((HandledScreenAccess) containerScreen).getFocusedSlot().getStack()));
}
}
}
return TypedActionResult.pass(EntryStack.empty());
}

@Override
public double getPriority() {
return 1000;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.cocona.skyblockrei.mixin;

import net.minecraft.client.gui.screen.ingame.HandledScreen;
import net.minecraft.screen.slot.Slot;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;

@Mixin(HandledScreen.class)
public interface HandledScreenAccess {
@Accessor("focusedSlot")
public Slot getFocusedSlot();


}
5 changes: 4 additions & 1 deletion src/main/resources/skyblock-rei.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,8 @@
],
"injectors": {
"defaultRequire": 1
}
},
"mixins": [
"HandledScreenAccess"
]
}

0 comments on commit f4d502d

Please sign in to comment.