Skip to content

Commit 51db94d

Browse files
committed
修复bug
现在和unidict同时使用没有太大问题,也许?
1 parent 152c765 commit 51db94d

6 files changed

Lines changed: 54 additions & 14 deletions

File tree

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ show_testing_output = false
1515

1616
# Mod Information
1717
# HIGHLY RECOMMEND complying with SemVer for mod_version: https://semver.org/
18-
mod_version = 1.1.9
18+
mod_version = 1.2.0
1919
root_package = com.circulation
2020
mod_id = only_one_item
2121
mod_name = OnlyOneItem

src/main/java/com/circulation/only_one_item/OnlyOneItem.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,6 @@ public class OnlyOneItem {
3333
@Mod.EventHandler
3434
public void preInit(FMLPreInitializationEvent event) {
3535
MinecraftForge.EVENT_BUS.register(new OreDictionaryHandler());
36-
if (Loader.isModLoaded("unidict")) {
37-
LOGGER.warn("OnlyOneItem and UniDict are incompatible, which may cause some errors to occur!");
38-
}
3936
try {
4037
OOIConfig.readConfig();
4138
} catch (IOException ignored) {

src/main/java/com/circulation/only_one_item/mixin/mc/MixinItemStack.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import net.minecraft.item.Item;
88
import net.minecraft.item.ItemStack;
99
import org.spongepowered.asm.mixin.Final;
10+
import org.spongepowered.asm.mixin.Intrinsic;
1011
import org.spongepowered.asm.mixin.Mixin;
1112
import org.spongepowered.asm.mixin.Mutable;
1213
import org.spongepowered.asm.mixin.Shadow;
@@ -40,9 +41,6 @@ public abstract class MixinItemStack implements OOIItemStack {
4041
@Shadow
4142
public abstract void setCount(int size);
4243

43-
@Shadow
44-
public abstract void setItemDamage(int meta);
45-
4644
@Inject(method = "forgeInit", at = @At("TAIL"), remap = false)
4745
private void forgeInit(CallbackInfo ci) {
4846
if (!this.isEmpty()) {
@@ -63,20 +61,17 @@ private void setMateData(int meta, CallbackInfo ci) {
6361
return ooi$isBeReplaced;
6462
}
6563

66-
@Unique
67-
@Override
64+
@Intrinsic
6865
public void ooi$init() {
6966
ooi$init = true;
7067
}
7168

72-
@Unique
73-
@Override
69+
@Intrinsic
7470
public ItemStack ooi$getThis() {
7571
return (ItemStack) (Object) this;
7672
}
7773

78-
@Unique
79-
@Override
74+
@Intrinsic
8075
public void ooi$ooiInit() {
8176
ItemConversionTarget target = MatchItemHandler.match(item, itemDamage);
8277

@@ -98,4 +93,10 @@ private void setMateData(int meta, CallbackInfo ci) {
9893
MatchItemHandler.addPreItemStack(this);
9994
}
10095
}
96+
97+
@Intrinsic
98+
public void setItem(Item item) {
99+
this.item = item;
100+
this.delegate = item.delegate;
101+
}
101102
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.circulation.only_one_item.mixin.mc;
2+
3+
import com.circulation.only_one_item.util.OOIItemStack;
4+
import com.llamalad7.mixinextras.sugar.Local;
5+
import net.minecraft.item.Item;
6+
import net.minecraft.item.ItemStack;
7+
import net.minecraft.world.storage.loot.LootContext;
8+
import net.minecraft.world.storage.loot.LootEntryItem;
9+
import org.spongepowered.asm.mixin.Final;
10+
import org.spongepowered.asm.mixin.Mixin;
11+
import org.spongepowered.asm.mixin.Shadow;
12+
import org.spongepowered.asm.mixin.injection.At;
13+
import org.spongepowered.asm.mixin.injection.Inject;
14+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
15+
16+
import java.util.Collection;
17+
import java.util.Random;
18+
19+
@SuppressWarnings("DiscouragedShift")
20+
@Mixin(LootEntryItem.class)
21+
public class MixinLootEntryItem {
22+
23+
@Shadow
24+
@Final
25+
protected Item item;
26+
27+
@Inject(method = "addLoot", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/storage/loot/functions/LootFunction;apply(Lnet/minecraft/item/ItemStack;Ljava/util/Random;Lnet/minecraft/world/storage/loot/LootContext;)Lnet/minecraft/item/ItemStack;", shift = At.Shift.BEFORE))
28+
public void addLoot(Collection<ItemStack> stacks, Random rand, LootContext context, CallbackInfo ci, @Local(ordinal = 0) ItemStack itemstack) {
29+
OOIItemStack i = OOIItemStack.forItem(itemstack);
30+
if (i.ooi$isBeReplaced()) {
31+
i.setItem(this.item);
32+
}
33+
}
34+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,21 @@
11
package com.circulation.only_one_item.util;
22

3+
import net.minecraft.item.Item;
34
import net.minecraft.item.ItemStack;
45

56
public interface OOIItemStack {
67

8+
static OOIItemStack forItem(ItemStack itemStack) {
9+
return (OOIItemStack) (Object) itemStack;
10+
}
11+
712
void ooi$init();
813

914
void ooi$ooiInit();
1015

1116
boolean ooi$isBeReplaced();
1217

1318
ItemStack ooi$getThis();
19+
20+
void setItem(Item item);
1421
}

src/main/resources/mixins.only_one_item.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
"mixins": [
99
"AccessorFurnaceRecipes",
1010
"MixinFluidStack",
11-
"MixinItemStack"
11+
"MixinItemStack",
12+
"MixinLootEntryItem"
1213
],
1314
"server": [],
1415
"client": [

0 commit comments

Comments
 (0)