Skip to content

Commit

Permalink
Fix RecipeManager mixin & add ShulkerBoxScreenHandler Mixin
Browse files Browse the repository at this point in the history
  • Loading branch information
pisaiah committed Oct 14, 2020
1 parent beb1404 commit 1b232da
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public class MixinRecipeManager implements IMixinRecipeManager {
*/
@Overwrite
@SuppressWarnings({ "unchecked", "rawtypes" })
protected void apply(Map<Identifier, JsonElement> map, ResourceManager iresourcemanager, Profiler gameprofilerfiller) {
public void apply(Map<Identifier, JsonElement> map, ResourceManager iresourcemanager, Profiler gameprofilerfiller) {
this.errored = false;
Map<RecipeType<?>, Map<Identifier, Recipe<?>>> map1 = Maps.newHashMap();
for (RecipeType<?> recipeType : Registry.RECIPE_TYPE)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package com.javazilla.bukkitfabric.mixin.screen;

import org.bukkit.craftbukkit.inventory.CraftInventory;
import org.bukkit.craftbukkit.inventory.CraftInventoryView;
import org.bukkit.entity.Player;
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;

import com.javazilla.bukkitfabric.interfaces.IMixinServerEntityPlayer;

import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.inventory.Inventory;
import net.minecraft.screen.ShulkerBoxScreenHandler;

@Mixin(ShulkerBoxScreenHandler.class)
public class MixinShulkerBoxScreenHandler extends MixinScreenHandler {

@Shadow
public Inventory inventory;

private CraftInventoryView bukkitEntity;
private PlayerInventory player;

@Inject(method = "<init>*", at = @At("TAIL"))
public void setPlayerInv(int i, PlayerInventory playerinventory, Inventory iinventory, CallbackInfo ci) {
this.player = (PlayerInventory) playerinventory;
}

@Override
public CraftInventoryView getBukkitView() {
if (bukkitEntity != null)
return bukkitEntity;

bukkitEntity = new CraftInventoryView((Player)((IMixinServerEntityPlayer)this.player.player).getBukkitEntity(), new CraftInventory(this.inventory), (ShulkerBoxScreenHandler)(Object)this);
return bukkitEntity;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,11 @@ public void visitMethodInsn(int opcode, String owner, String name, String desc,
return;
}

if (owner.equalsIgnoreCase("java/lang/Class") && name.equalsIgnoreCase("getName") && desc.equalsIgnoreCase("()Ljava/lang/String;")) {
super.visitMethodInsn( Opcodes.INVOKESTATIC, "com/javazilla/bukkitfabric/nms/ReflectionRemapper", "getClassName", "(Ljava/lang/Class;)Ljava/lang/String;", false);
return;
}

if (owner.startsWith("net/minecraft/class_")) {
if (!name.startsWith("method_"))
name = MappingsReader.METHODS2.getOrDefault(name + desc, MappingsReader.getIntermedMethod(owner.replace('/', '.'), name));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,15 @@ public static String getPackageName(Package pkage) {
return name;
}

/**
*/
public static String getClassName(Class<?> clazz) {
String name = clazz.getName();
if (name.startsWith("org.bukkit.craftbukkit"))
name = name.replace("org.bukkit.craftbukkit", "org.bukkit.craftbukkit." + NMS_VERSION);
return name;
}

/**
*/
public static String getMinecraftServerVersion() {
Expand Down
1 change: 1 addition & 0 deletions src/main/resources/bukkitfabric.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@
"screen.MixinHorseScreenHandler",
"screen.MixinLecternScreenHandler",
"screen.MixinMerchantScreenHandler",
"screen.ShulkerBoxScreenHandler",

"enchantment.MixinFrostWalkerEnchantment"
],
Expand Down

0 comments on commit 1b232da

Please sign in to comment.