Skip to content

Commit 1788b39

Browse files
committed
Remove the crazy extensions system
1 parent 653bb02 commit 1788b39

8 files changed

Lines changed: 252 additions & 318 deletions

File tree

src/main/java/falseresync/vivatech/common/Vivatech.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,11 @@
1111
import falseresync.vivatech.common.item.VivatechItemGroups;
1212
import falseresync.vivatech.common.item.VivatechItemTags;
1313
import falseresync.vivatech.common.item.VivatechItems;
14+
import falseresync.vivatech.common.item.focus.CometWarpFocusItem;
1415
import falseresync.vivatech.common.item.focus.TransmutationFocusBehavior;
1516
import falseresync.vivatech.common.power.PowerSystem;
1617
import falseresync.vivatech.common.power.wire.WireType;
17-
import falseresync.vivatech.compat.anshar.AnsharCompat;
18+
import falseresync.vivatech.compat.anshar.AnsharCompatImpl;
1819
import falseresync.vivatech.network.VivatechNetworking;
1920
import falseresync.vivatech.network.VivatechServerReceivers;
2021
import me.shedaniel.autoconfig.AutoConfig;
@@ -81,7 +82,7 @@ public void onInitialize() {
8182
});
8283

8384
if (FabricLoader.getInstance().isModLoaded("anshar")) {
84-
VivatechItems.COMET_WARP_FOCUS.registerBehaviorExtension(new AnsharCompat());
85+
CometWarpFocusItem.ansharCompat = new AnsharCompatImpl();
8586
}
8687

8788
LOGGER.info("Initialized");

src/main/java/falseresync/vivatech/common/item/GadgetItem.java

Lines changed: 0 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import falseresync.vivatech.client.VivatechKeybindings;
44
import falseresync.vivatech.common.data.VivatechComponents;
5-
import falseresync.vivatech.common.item.focus.Focus;
65
import falseresync.vivatech.common.item.focus.FocusItem;
76
import net.fabricmc.api.EnvType;
87
import net.fabricmc.api.Environment;
@@ -71,12 +70,6 @@ public TypedActionResult<ItemStack> use(World world, PlayerEntity user, Hand han
7170
var gadgetStack = user.getStackInHand(hand);
7271
var focusStack = getEquipped(gadgetStack);
7372
if (!focusStack.isEmpty() && focusStack.getItem() instanceof FocusItem focusItem) {
74-
for (Focus behaviorExtension : focusItem.getBehaviorExtensions()) {
75-
var result = behaviorExtension.focusUse(gadgetStack, focusStack, world, user, hand);
76-
if (result.getResult() != ActionResult.PASS) {
77-
return result;
78-
}
79-
}
8073
return focusItem.focusUse(gadgetStack, focusStack, world, user, hand);
8174
}
8275

@@ -92,12 +85,6 @@ public ActionResult useOnBlock(ItemUsageContext context) {
9285
var gadgetStack = context.getStack();
9386
var focusStack = getEquipped(gadgetStack);
9487
if (!focusStack.isEmpty() && focusStack.getItem() instanceof FocusItem focusItem) {
95-
for (Focus behaviorExtension : focusItem.getBehaviorExtensions()) {
96-
var result = behaviorExtension.focusUseOnBlock(gadgetStack, focusStack, context);
97-
if (result != ActionResult.PASS) {
98-
return result;
99-
}
100-
}
10188
return focusItem.focusUseOnBlock(gadgetStack, focusStack, context);
10289
}
10390

@@ -109,12 +96,6 @@ public ActionResult useOnEntity(ItemStack stack, PlayerEntity user, LivingEntity
10996
var gadgetStack = user.getStackInHand(hand);
11097
var focusStack = getEquipped(gadgetStack);
11198
if (!focusStack.isEmpty() && focusStack.getItem() instanceof FocusItem focusItem) {
112-
for (Focus behaviorExtension : focusItem.getBehaviorExtensions()) {
113-
var result = behaviorExtension.focusUseOnEntity(gadgetStack, focusStack, user, entity, hand);
114-
if (result != ActionResult.PASS) {
115-
return result;
116-
}
117-
}
11899
return focusItem.focusUseOnEntity(gadgetStack, focusStack, user, entity, hand);
119100
}
120101

@@ -125,9 +106,6 @@ public ActionResult useOnEntity(ItemStack stack, PlayerEntity user, LivingEntity
125106
public void usageTick(World world, LivingEntity user, ItemStack stack, int remainingUseTicks) {
126107
var focusStack = getEquipped(stack);
127108
if (!focusStack.isEmpty() && focusStack.getItem() instanceof FocusItem focusItem) {
128-
for (Focus behaviorExtension : focusItem.getBehaviorExtensions()) {
129-
behaviorExtension.focusUsageTick(world, user, stack, focusStack, remainingUseTicks);
130-
}
131109
focusItem.focusUsageTick(world, user, stack, focusStack, remainingUseTicks);
132110
return;
133111
}
@@ -140,12 +118,6 @@ public void usageTick(World world, LivingEntity user, ItemStack stack, int remai
140118
public ItemStack finishUsing(ItemStack stack, World world, LivingEntity user) {
141119
var focusStack = getEquipped(stack);
142120
if (!focusStack.isEmpty() && focusStack.getItem() instanceof FocusItem focusItem) {
143-
for (Focus behaviorExtension : focusItem.getBehaviorExtensions()) {
144-
var newStack = behaviorExtension.focusFinishUsing(stack, focusStack, world, user);
145-
if (!ItemStack.areEqual(newStack, stack)) {
146-
return newStack;
147-
}
148-
}
149121
return focusItem.focusFinishUsing(stack, focusStack, world, user);
150122
}
151123

@@ -157,9 +129,6 @@ public ItemStack finishUsing(ItemStack stack, World world, LivingEntity user) {
157129
public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks) {
158130
var focusStack = getEquipped(stack);
159131
if (!focusStack.isEmpty() && focusStack.getItem() instanceof FocusItem focusItem) {
160-
for (Focus behaviorExtension : focusItem.getBehaviorExtensions()) {
161-
behaviorExtension.focusOnStoppedUsing(stack, focusStack, world, user, remainingUseTicks);
162-
}
163132
focusItem.focusOnStoppedUsing(stack, focusStack, world, user, remainingUseTicks);
164133
}
165134
}
@@ -168,9 +137,6 @@ public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int
168137
public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) {
169138
var focusStack = getEquipped(stack);
170139
if (!focusStack.isEmpty() && focusStack.getItem() instanceof FocusItem focusItem) {
171-
for (Focus behaviorExtension : focusItem.getBehaviorExtensions()) {
172-
behaviorExtension.focusInventoryTick(stack, focusStack, world, entity, slot, selected);
173-
}
174140
focusItem.focusInventoryTick(stack, focusStack, world, entity, slot, selected);
175141
}
176142
// if (entity instanceof ServerPlayerEntity player) {
@@ -185,11 +151,6 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int slot,
185151
public boolean isUsedOnRelease(ItemStack stack) {
186152
var focusStack = getEquipped(stack);
187153
if (!focusStack.isEmpty() && focusStack.getItem() instanceof FocusItem focusItem) {
188-
for (Focus behaviorExtension : focusItem.getBehaviorExtensions()) {
189-
if (behaviorExtension.focusIsUsedOnRelease(stack, focusStack)) {
190-
return true;
191-
}
192-
}
193154
return focusItem.focusIsUsedOnRelease(stack, focusStack);
194155
}
195156

@@ -205,12 +166,6 @@ public boolean isUsedOnRelease(ItemStack stack) {
205166
public int getMaxUseTime(ItemStack stack, LivingEntity user) {
206167
var focusStack = getEquipped(stack);
207168
if (!focusStack.isEmpty() && focusStack.getItem() instanceof FocusItem focusItem) {
208-
for (Focus behaviorExtension : focusItem.getBehaviorExtensions()) {
209-
var maxUseTime = behaviorExtension.focusGetMaxUseTime(stack, focusStack, user);
210-
if (maxUseTime > 0) {
211-
return maxUseTime;
212-
}
213-
}
214169
return focusItem.focusGetMaxUseTime(stack, focusStack, user);
215170
}
216171

@@ -223,12 +178,6 @@ public float getBonusAttackDamage(Entity target, float baseAttackDamage, DamageS
223178
if (weaponStack != null && weaponStack.getItem() instanceof GadgetItem) {
224179
var focusStack = getEquipped(weaponStack);
225180
if (!focusStack.isEmpty() && focusStack.getItem() instanceof FocusItem focusItem) {
226-
for (Focus behaviorExtension : focusItem.getBehaviorExtensions()) {
227-
var bonusAttackDamage = behaviorExtension.focusGetBonusAttackDamage(weaponStack, focusStack, target, baseAttackDamage, damageSource);
228-
if (bonusAttackDamage > 0) {
229-
return bonusAttackDamage;
230-
}
231-
}
232181
return focusItem.focusGetBonusAttackDamage(weaponStack, focusStack, target, baseAttackDamage, damageSource);
233182
}
234183
}
@@ -242,11 +191,6 @@ public float getBonusAttackDamage(Entity target, float baseAttackDamage, DamageS
242191
public boolean isItemBarVisible(ItemStack stack) {
243192
var focusStack = getEquipped(stack);
244193
if (!focusStack.isEmpty() && focusStack.getItem() instanceof FocusItem focusItem) {
245-
for (Focus behaviorExtension : focusItem.getBehaviorExtensions()) {
246-
if (behaviorExtension.focusIsItemBarVisible(stack, focusStack)) {
247-
return true;
248-
}
249-
}
250194
return focusItem.focusIsItemBarVisible(stack, focusStack);
251195
}
252196

@@ -257,12 +201,6 @@ public boolean isItemBarVisible(ItemStack stack) {
257201
public int getItemBarStep(ItemStack stack) {
258202
var focusStack = getEquipped(stack);
259203
if (!focusStack.isEmpty() && focusStack.getItem() instanceof FocusItem focusItem) {
260-
for (Focus behaviorExtension : focusItem.getBehaviorExtensions()) {
261-
var step = behaviorExtension.focusGetItemBarStep(stack, focusStack);
262-
if (step > 0) {
263-
return step;
264-
}
265-
}
266204
return focusItem.focusGetItemBarStep(stack, focusStack);
267205
}
268206

@@ -273,12 +211,6 @@ public int getItemBarStep(ItemStack stack) {
273211
public int getItemBarColor(ItemStack stack) {
274212
var focusStack = getEquipped(stack);
275213
if (!focusStack.isEmpty() && focusStack.getItem() instanceof FocusItem focusItem) {
276-
for (Focus behaviorExtension : focusItem.getBehaviorExtensions()) {
277-
var color = behaviorExtension.focusGetItemBarStep(stack, focusStack);
278-
if (color >= 0) {
279-
return color;
280-
}
281-
}
282214
return focusItem.focusGetItemBarColor(stack, focusStack);
283215
}
284216

@@ -289,11 +221,6 @@ public int getItemBarColor(ItemStack stack) {
289221
public boolean hasGlint(ItemStack stack) {
290222
var focusStack = getEquipped(stack);
291223
if (!focusStack.isEmpty() && focusStack.getItem() instanceof FocusItem focusItem) {
292-
for (Focus behaviorExtension : focusItem.getBehaviorExtensions()) {
293-
if (behaviorExtension.focusHasGlint(stack, focusStack)) {
294-
return true;
295-
}
296-
}
297224
return focusItem.focusHasGlint(stack, focusStack);
298225
}
299226

@@ -309,9 +236,6 @@ public void appendTooltip(ItemStack stack, TooltipContext context, List<Text> to
309236
.translatable("tooltip.vivatech.gadget.active_focus", focusStack.getName())
310237
.styled(style -> style.withColor(Formatting.GRAY)));
311238
focusItem.focusAppendTooltip(stack, focusStack, context, tooltip, type);
312-
for (Focus behaviorExtension : focusItem.getBehaviorExtensions()) {
313-
behaviorExtension.focusAppendTooltip(stack, focusStack, context, tooltip, type);
314-
}
315239
}
316240
tooltip.add(Text
317241
.translatable("tooltip.vivatech.gadget.change_focus", KeyBindingHelper.getBoundKeyOf(VivatechKeybindings.TOOL_CONTROL).getLocalizedText())
@@ -336,17 +260,11 @@ public TypedActionResult<ItemStack> exchangeFocuses(ItemStack gadgetStack, ItemS
336260
if (oldFocusStack.getItem() instanceof FocusItem oldFocusItem) {
337261
removeOld = true;
338262
oldFocusItem.focusOnUnequipped(gadgetStack, oldFocusStack, user);
339-
for (Focus behaviorExtension : oldFocusItem.getBehaviorExtensions()) {
340-
behaviorExtension.focusOnUnequipped(gadgetStack, oldFocusStack, user);
341-
}
342263
}
343264

344265
if (newFocusStack.getItem() instanceof FocusItem newFocusItem) {
345266
insertNew = true;
346267
newFocusItem.focusOnEquipped(gadgetStack, newFocusStack, user);
347-
for (Focus behaviorExtension : newFocusItem.getBehaviorExtensions()) {
348-
behaviorExtension.focusOnEquipped(gadgetStack, newFocusStack, user);
349-
}
350268
}
351269

352270
// newFocus != empty, oldFocus == empty -> success oldFocus

src/main/java/falseresync/vivatech/common/item/focus/CometWarpFocusItem.java

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,18 @@
44
import falseresync.vivatech.common.VivatechSounds;
55
import falseresync.vivatech.common.data.VivatechComponents;
66
import falseresync.vivatech.common.Reports;
7+
import falseresync.vivatech.compat.anshar.AnsharCompat;
78
import net.minecraft.entity.EquipmentSlot;
89
import net.minecraft.entity.player.PlayerEntity;
910
import net.minecraft.item.ItemStack;
11+
import net.minecraft.item.ItemUsageContext;
1012
import net.minecraft.item.tooltip.TooltipType;
1113
import net.minecraft.server.network.ServerPlayerEntity;
1214
import net.minecraft.server.world.ServerWorld;
1315
import net.minecraft.sound.SoundCategory;
1416
import net.minecraft.sound.SoundEvents;
1517
import net.minecraft.text.Text;
18+
import net.minecraft.util.ActionResult;
1619
import net.minecraft.util.Formatting;
1720
import net.minecraft.util.Hand;
1821
import net.minecraft.util.TypedActionResult;
@@ -22,9 +25,9 @@
2225
import net.minecraft.world.World;
2326

2427
import java.util.List;
25-
import java.util.Set;
2628

2729
public class CometWarpFocusItem extends FocusItem {
30+
public static AnsharCompat ansharCompat = new AnsharCompat() {};
2831
public static final int DEFAULT_PLACEMENT_COST = 5;
2932
public static final int DEFAULT_WARPING_COST = 15;
3033
public static final int DEFAULT_INTERDIMENSIONAL_COST = 30;
@@ -35,6 +38,7 @@ public CometWarpFocusItem(Settings settings) {
3538

3639
@Override
3740
public void focusOnEquipped(ItemStack gadgetStack, ItemStack focusStack, PlayerEntity user) {
41+
ansharCompat.onEquipped(gadgetStack, focusStack, user);
3842
var anchor = focusStack.remove(VivatechComponents.WARP_FOCUS_ANCHOR);
3943
if (anchor != null) {
4044
gadgetStack.set(VivatechComponents.WARP_FOCUS_ANCHOR, anchor);
@@ -43,12 +47,28 @@ public void focusOnEquipped(ItemStack gadgetStack, ItemStack focusStack, PlayerE
4347

4448
@Override
4549
public void focusOnUnequipped(ItemStack gadgetStack, ItemStack focusStack, PlayerEntity user) {
50+
ansharCompat.onUnequipped(gadgetStack, focusStack, user);
4651
var anchor = gadgetStack.remove(VivatechComponents.WARP_FOCUS_ANCHOR);
4752
focusStack.set(VivatechComponents.WARP_FOCUS_ANCHOR, anchor);
4853
}
4954

55+
@Override
56+
public ActionResult focusUseOnBlock(ItemStack gadgetStack, ItemStack focusStack, ItemUsageContext context) {
57+
var result = ansharCompat.useOnBlock(gadgetStack, focusStack, context);
58+
if (result != null) {
59+
return result;
60+
}
61+
62+
return super.focusUseOnBlock(gadgetStack, focusStack, context);
63+
}
64+
5065
@Override
5166
public TypedActionResult<ItemStack> focusUse(ItemStack gadgetStack, ItemStack focusStack, World world, PlayerEntity user, Hand hand) {
67+
var result = ansharCompat.use(gadgetStack, focusStack, world, user, hand);
68+
if (result != null) {
69+
return result;
70+
}
71+
5272
if (user instanceof ServerPlayerEntity player) {
5373
if (user.isSneaking()) {
5474
if (!Vivatech.getChargeManager().tryExpendGadgetCharge(gadgetStack, DEFAULT_PLACEMENT_COST, user)) {
@@ -99,16 +119,13 @@ public boolean focusHasGlint(ItemStack gadgetStack, ItemStack focusStack) {
99119
return hasGlint(gadgetStack);
100120
}
101121

102-
@Override
103-
public boolean focusHasGlintSelf(ItemStack stack) {
104-
return stack.contains(VivatechComponents.WARP_FOCUS_ANCHOR);
105-
}
106-
107122
@Override
108123
public void focusAppendTooltip(ItemStack gadgetStack, ItemStack focusStack, TooltipContext context, List<Text> tooltip, TooltipType type) {
124+
ansharCompat.appendTooltip(gadgetStack, context, tooltip, type);
109125
if (focusStack.contains(VivatechComponents.TOOLTIP_OVERRIDDEN)) {
110126
return;
111127
}
128+
112129
var anchor = gadgetStack.get(VivatechComponents.WARP_FOCUS_ANCHOR);
113130
if (anchor == null) {
114131
tooltip.add(Text.translatable("tooltip.vivatech.gadget.setup_anchor")
@@ -123,7 +140,22 @@ public void focusAppendTooltip(ItemStack gadgetStack, ItemStack focusStack, Tool
123140
}
124141

125142
@Override
126-
public void focusAppendTooltipSelf(ItemStack stack, TooltipContext context, List<Text> tooltip, TooltipType type) {
143+
public boolean hasGlint(ItemStack stack) {
144+
var result = ansharCompat.hasGlint(stack);
145+
if (result != null) {
146+
return result;
147+
}
148+
149+
return stack.contains(VivatechComponents.WARP_FOCUS_ANCHOR);
150+
}
151+
152+
@Override
153+
public void appendTooltip(ItemStack stack, TooltipContext context, List<Text> tooltip, TooltipType type) {
154+
ansharCompat.appendTooltip(stack, context, tooltip, type);
155+
if (stack.contains(VivatechComponents.TOOLTIP_OVERRIDDEN)) {
156+
return;
157+
}
158+
127159
var anchor = stack.get(VivatechComponents.WARP_FOCUS_ANCHOR);
128160
if (anchor != null) {
129161
tooltip.add(Text.translatable(

0 commit comments

Comments
 (0)