Use the new fire() and Result#isAllowed/isDenied/isDefault methods from EventBus (backport of #10028 to 1.20.4) (#10097)

This commit is contained in:
Paint_Ninja authored and GitHub committed 2024-10-06 18:39:59 -07:00
1 parent d7ccecefe0
commit 3535dcdbb3
11 files changed
+38 -45

No files matched your search

@@ -8,7 +8,7 @@
- this.renderNameTag(p_114485_, p_114485_.getDisplayName(), p_114488_, p_114489_, p_114490_);
+ var renderNameTagEvent = new net.minecraftforge.client.event.RenderNameTagEvent(p_114485_, p_114485_.getDisplayName(), this, p_114488_, p_114489_, p_114490_, p_114487_);
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(renderNameTagEvent);
+ if (renderNameTagEvent.getResult() != net.minecraftforge.eventbus.api.Event.Result.DENY && (renderNameTagEvent.getResult() == net.minecraftforge.eventbus.api.Event.Result.ALLOW || this.shouldShowName(p_114485_))) {
+ if (!renderNameTagEvent.getResult().isDenied() && (renderNameTagEvent.getResult().isAllowed() || this.shouldShowName(p_114485_))) {
+ this.renderNameTag(p_114485_, renderNameTagEvent.getContent(), p_114488_, p_114489_, p_114490_);
}
}
@@ -17,7 +17,7 @@
float f = 1.0F;
BlockState blockstate = this.level.getBlockState(p_215120_);
if (!blockstate.isAir()) {
+ if (event.getUseBlock() != net.minecraftforge.eventbus.api.Event.Result.DENY)
+ if (!event.getUseBlock().isDenied())
blockstate.attack(this.level, p_215120_, this.player);
f = blockstate.getDestroyProgress(this.player, this.player.level(), p_215120_);
}
@@ -103,12 +103,12 @@
MenuProvider menuprovider = blockstate.getMenuProvider(p_9267_, blockpos);
if (menuprovider != null) {
p_9266_.openMenu(menuprovider);
@@ -308,10 +_,15 @@
@@ -308,10 +_,16 @@
return InteractionResult.PASS;
}
} else {
+ UseOnContext useoncontext = new UseOnContext(p_9266_, p_9269_, p_9270_);
+ if (event.getUseItem() != net.minecraftforge.eventbus.api.Event.Result.DENY) {
+ if (!event.getUseItem().isDenied()) {
+ InteractionResult result = p_9268_.onItemUseFirst(useoncontext);
+ if (result != InteractionResult.PASS) return result;
+ }
@@ -117,7 +117,8 @@
+ boolean flag1 = (p_9266_.isSecondaryUseActive() && flag) && !(p_9266_.getMainHandItem().doesSneakBypassUse(p_9267_, blockpos, p_9266_) && p_9266_.getOffhandItem().doesSneakBypassUse(p_9267_, blockpos, p_9266_));
ItemStack itemstack = p_9268_.copy();
- if (!flag1) {
+ if (event.getUseBlock() == net.minecraftforge.eventbus.api.Event.Result.ALLOW || (event.getUseBlock() != net.minecraftforge.eventbus.api.Event.Result.DENY && !flag1)) {
+ var useBlockResult = event.getUseBlock();
+ if (useBlockResult.isAllowed() || (!flag1 && !useBlockResult.isDenied())) {
InteractionResult interactionresult = blockstate.use(p_9267_, p_9266_, p_9269_, p_9270_);
if (interactionresult.consumesAction()) {
CriteriaTriggers.ITEM_USED_ON_BLOCK.trigger(p_9266_, blockpos, itemstack);
@@ -127,8 +128,8 @@
- if (!p_9268_.isEmpty() && !p_9266_.getCooldowns().isOnCooldown(p_9268_.getItem())) {
- UseOnContext useoncontext = new UseOnContext(p_9266_, p_9269_, p_9270_);
+ if (event.getUseItem() == net.minecraftforge.eventbus.api.Event.Result.ALLOW || (!p_9268_.isEmpty() && !p_9266_.getCooldowns().isOnCooldown(p_9268_.getItem()))) {
+ if (event.getUseItem() == net.minecraftforge.eventbus.api.Event.Result.DENY) return InteractionResult.PASS;
+ if (event.getUseItem().isAllowed() || (!p_9268_.isEmpty() && !p_9266_.getCooldowns().isOnCooldown(p_9268_.getItem()))) {
+ if (event.getUseItem().isDenied()) return InteractionResult.PASS;
InteractionResult interactionresult1;
if (this.isCreative()) {
int i = p_9268_.getCount();
@@ -131,13 +131,12 @@
if (mobeffectinstance == null) {
this.activeEffects.put(p_147208_.getEffect(), p_147208_);
this.onEffectAdded(p_147208_, p_147209_);
@@ -928,6 +_,9 @@
@@ -928,6 +_,8 @@
}
public boolean canBeAffected(MobEffectInstance p_21197_) {
+ var event = new net.minecraftforge.event.entity.living.MobEffectEvent.Applicable(this, p_21197_);
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event);
+ if (event.getResult() != net.minecraftforge.eventbus.api.Event.Result.DEFAULT) return event.getResult() == net.minecraftforge.eventbus.api.Event.Result.ALLOW;
+ var eventResult = net.minecraftforge.event.ForgeEventFactory.onLivingEffectCanApply(this, p_21197_).getResult();
+ if (!eventResult.isDefault()) return eventResult.isAllowed();
if (this.getMobType() == MobType.UNDEAD) {
MobEffect mobeffect = p_21197_.getEffect();
if (mobeffect == MobEffects.REGENERATION || mobeffect == MobEffects.POISON) {
@@ -1,14 +1,12 @@
--- a/net/minecraft/world/entity/monster/Spider.java
+++ b/net/minecraft/world/entity/monster/Spider.java
@@ -121,7 +_,12 @@
@@ -121,7 +_,10 @@
}
public boolean canBeAffected(MobEffectInstance p_33809_) {
- return p_33809_.getEffect() == MobEffects.POISON ? false : super.canBeAffected(p_33809_);
+ if (p_33809_.getEffect() == MobEffects.POISON) {
+ net.minecraftforge.event.entity.living.MobEffectEvent.Applicable event = new net.minecraftforge.event.entity.living.MobEffectEvent.Applicable(this, p_33809_);
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event);
+ return event.getResult() == net.minecraftforge.eventbus.api.Event.Result.ALLOW;
+ return net.minecraftforge.event.ForgeEventFactory.onLivingEffectCanApply(this, p_33809_).getResult().isAllowed();
+ }
+ return super.canBeAffected(p_33809_);
}
@@ -16,7 +16,7 @@
}
}
@@ -275,11 +_,15 @@
@@ -275,11 +_,16 @@
livingentity = (LivingEntity)p_34288_.getEntity();
}
@@ -25,12 +25,13 @@
int j = Mth.floor(this.getY());
int k = Mth.floor(this.getZ());
- Zombie zombie = new Zombie(this.level());
+ net.minecraftforge.event.entity.living.ZombieEvent.SummonAidEvent event = net.minecraftforge.event.ForgeEventFactory.fireZombieSummonAid(this, level(), i, j, k, livingentity, this.getAttribute(Attributes.SPAWN_REINFORCEMENTS_CHANCE).getValue());
+ if (event.getResult() == net.minecraftforge.eventbus.api.Event.Result.DENY) return true;
+ if (event.getResult() == net.minecraftforge.eventbus.api.Event.Result.ALLOW ||
+ var event = net.minecraftforge.event.ForgeEventFactory.fireZombieSummonAid(this, level(), i, j, k, livingentity, this.getAttribute(Attributes.SPAWN_REINFORCEMENTS_CHANCE).getValue());
+ var eventResult = event.getResult();
+ if (eventResult.isDenied()) return true;
+ if (eventResult.isAllowed() ||
+ livingentity != null && this.level().getDifficulty() == Difficulty.HARD && (double)this.random.nextFloat() < this.getAttribute(Attributes.SPAWN_REINFORCEMENTS_CHANCE).getValue() && this.level()
+ .getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING)) {
+ Zombie zombie = event.getCustomSummonedAid() != null && event.getResult() == net.minecraftforge.eventbus.api.Event.Result.ALLOW ? event.getCustomSummonedAid() : EntityType.ZOMBIE.create(this.level());
+ Zombie zombie = event.getCustomSummonedAid() != null && eventResult.isAllowed() ? event.getCustomSummonedAid() : EntityType.ZOMBIE.create(this.level());
for(int l = 0; l < 50; ++l) {
int i1 = i + Mth.nextInt(this.random, 7, 40) * Mth.nextInt(this.random, -1, 1);
@@ -6,7 +6,7 @@
this.getFeature(p_221243_).ifPresent((p_256352_) -> {
- p_256352_.value().place(p_221243_, p_221243_.getChunkSource().getGenerator(), p_221244_, p_221245_);
+ var event = net.minecraftforge.event.ForgeEventFactory.blockGrowFeature(p_221243_, p_221244_, p_221245_, p_256352_);
+ if (event.getResult().equals(net.minecraftforge.eventbus.api.Event.Result.DENY)) return;
+ if (event.getResult().isDenied()) return;
+ event.getFeature().value().place(p_221243_, p_221243_.getChunkSource().getGenerator(), p_221244_, p_221245_);
});
}
@@ -6,7 +6,7 @@
Holder<ConfiguredFeature<?, ?>> holder = p_309830_.registryAccess().registryOrThrow(Registries.CONFIGURED_FEATURE).getHolder(resourcekey).orElse((Holder.Reference<ConfiguredFeature<?, ?>>)null);
+ var event = net.minecraftforge.event.ForgeEventFactory.blockGrowFeature(p_309830_, p_309951_, p_310327_, holder);
+ holder = event.getFeature();
+ if (event.getResult() == net.minecraftforge.eventbus.api.Event.Result.DENY) return false;
+ if (event.getResult().isDenied()) return false;
if (holder != null) {
for(int i = 0; i >= -1; --i) {
for(int j = 0; j >= -1; --j) {
@@ -1,6 +1,6 @@
--- a/net/minecraft/world/level/levelgen/PhantomSpawner.java
+++ b/net/minecraft/world/level/levelgen/PhantomSpawner.java
@@ -42,19 +_,22 @@
@@ -42,19 +_,23 @@
for(ServerPlayer serverplayer : p_64576_.players()) {
if (!serverplayer.isSpectator()) {
BlockPos blockpos = serverplayer.blockPosition();
@@ -9,14 +9,15 @@
+ DifficultyInstance difficultyinstance = p_64576_.getCurrentDifficultyAt(blockpos);
+ var event = new net.minecraftforge.event.entity.player.PlayerSpawnPhantomsEvent(serverplayer, 1 + randomsource.nextInt(difficultyinstance.getDifficulty().getId() + 1));
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event);
+ if (event.getResult() == net.minecraftforge.eventbus.api.Event.Result.DENY) continue;
+ if (event.getResult() == net.minecraftforge.eventbus.api.Event.Result.ALLOW || !p_64576_.dimensionType().hasSkyLight() || blockpos.getY() >= p_64576_.getSeaLevel() && p_64576_.canSeeSky(blockpos)) {
+ var eventResult = event.getResult();
+ if (eventResult.isDenied()) continue;
+ if (eventResult.isAllowed() || !p_64576_.dimensionType().hasSkyLight() || blockpos.getY() >= p_64576_.getSeaLevel() && p_64576_.canSeeSky(blockpos)) {
if (difficultyinstance.isHarderThan(randomsource.nextFloat() * 3.0F)) {
ServerStatsCounter serverstatscounter = serverplayer.getStats();
int j = Mth.clamp(serverstatscounter.getValue(Stats.CUSTOM.get(Stats.TIME_SINCE_REST)), 1, Integer.MAX_VALUE);
int k = 24000;
- if (randomsource.nextInt(j) >= 72000) {
+ if (event.getResult() == net.minecraftforge.eventbus.api.Event.Result.ALLOW || randomsource.nextInt(j) >= 72000) {
+ if (eventResult.isAllowed() || randomsource.nextInt(j) >= 72000) {
BlockPos blockpos1 = blockpos.above(20 + randomsource.nextInt(15)).east(-10 + randomsource.nextInt(21)).south(-10 + randomsource.nextInt(21));
BlockState blockstate = p_64576_.getBlockState(blockpos1);
FluidState fluidstate = p_64576_.getFluidState(blockpos1);
+2 -2
View File
@@ -31,7 +31,7 @@ dependencyResolutionManagement {
library('antlr-runtime', 'org.antlr:antlr4-runtime:4.9.1') // Needed by Access Transformer because parsing a simple text file was too complicated
library('coremods', 'net.minecraftforge:coremods:5.1.0')
library('nashorn', 'org.openjdk.nashorn:nashorn-core:15.3') // Needed by coremods, because the JRE no longer ships JS
library('eventbus', 'net.minecraftforge:eventbus:6.2.0')
library('eventbus', 'net.minecraftforge:eventbus:6.2.8')
library('typetools', 'net.jodah:typetools:0.6.3') // Needed by EventBus because of lambdas
library('mergetool-api', 'net.minecraftforge:mergetool-api:1.0')
@@ -51,7 +51,7 @@ dependencyResolutionManagement {
library('bootstrap-shim', 'net.minecraftforge', 'bootstrap-shim').versionRef('bootstrap')
// ASM it's used for so many of our hacks
version('asm', '9.6')
version('asm', '9.7')
library('asm', 'org.ow2.asm', 'asm' ).versionRef('asm')
library('asm-tree', 'org.ow2.asm', 'asm-tree' ).versionRef('asm')
library('asm-util', 'org.ow2.asm', 'asm-util' ).versionRef('asm')
@@ -757,9 +757,8 @@ public class ForgeHooks {
}
public static boolean onCropsGrowPre(Level level, BlockPos pos, BlockState state, boolean def) {
BlockEvent ev = new BlockEvent.CropGrowEvent.Pre(level,pos,state);
MinecraftForge.EVENT_BUS.post(ev);
return (ev.getResult() == Event.Result.ALLOW || (ev.getResult() == Event.Result.DEFAULT && def));
var result = MinecraftForge.EVENT_BUS.fire(new BlockEvent.CropGrowEvent.Pre(level,pos,state)).getResult();
return (result.isAllowed() || (def && result.isDefault()));
}
public static void onCropsGrowPost(Level level, BlockPos pos, BlockState state) {
@@ -768,9 +767,8 @@ public class ForgeHooks {
@Nullable
public static CriticalHitEvent getCriticalHit(Player player, Entity target, boolean vanillaCritical, float damageModifier) {
CriticalHitEvent hitResult = new CriticalHitEvent(player, target, damageModifier, vanillaCritical);
MinecraftForge.EVENT_BUS.post(hitResult);
if (hitResult.getResult() == Event.Result.ALLOW || (vanillaCritical && hitResult.getResult() == Event.Result.DEFAULT))
CriticalHitEvent hitResult = MinecraftForge.EVENT_BUS.fire(new CriticalHitEvent(player, target, damageModifier, vanillaCritical));
if (hitResult.getResult().isAllowed() || (vanillaCritical && hitResult.getResult().isDefault()))
return hitResult;
return null;
}
@@ -29,6 +29,7 @@ import net.minecraft.util.RandomSource;
import net.minecraft.util.random.WeightedRandomList;
import net.minecraft.world.Container;
import net.minecraft.world.DifficultyInstance;
import net.minecraft.world.effect.MobEffectInstance;
import net.minecraft.world.entity.MobCategory;
import net.minecraft.world.entity.projectile.Projectile;
import net.minecraft.world.entity.projectile.ThrownEnderpearl;
@@ -104,17 +105,7 @@ import net.minecraftforge.event.entity.EntityTeleportEvent;
import net.minecraftforge.event.entity.EntityTravelToDimensionEvent;
import net.minecraftforge.event.entity.ProjectileImpactEvent;
import net.minecraftforge.event.entity.item.ItemExpireEvent;
import net.minecraftforge.event.entity.living.AnimalTameEvent;
import net.minecraftforge.event.entity.living.LivingConversionEvent;
import net.minecraftforge.event.entity.living.LivingDestroyBlockEvent;
import net.minecraftforge.event.entity.living.LivingEntityUseItemEvent;
import net.minecraftforge.event.entity.living.LivingExperienceDropEvent;
import net.minecraftforge.event.entity.living.LivingFallEvent;
import net.minecraftforge.event.entity.living.LivingHealEvent;
import net.minecraftforge.event.entity.living.LivingPackSizeEvent;
import net.minecraftforge.event.entity.living.LivingSwapItemsEvent;
import net.minecraftforge.event.entity.living.MobSpawnEvent;
import net.minecraftforge.event.entity.living.ShieldBlockEvent;
import net.minecraftforge.event.entity.living.*;
import net.minecraftforge.event.entity.living.MobSpawnEvent.AllowDespawn;
import net.minecraftforge.event.entity.living.MobSpawnEvent.PositionCheck;
import net.minecraftforge.event.entity.living.MobSpawnEvent.SpawnPlacementCheck;
@@ -491,6 +482,10 @@ public class ForgeEventFactory {
return (post(event) ? 0 : event.getAmount());
}
public static MobEffectEvent.Applicable onLivingEffectCanApply(LivingEntity entity, MobEffectInstance effect) {
return fire(new MobEffectEvent.Applicable(entity, effect));
}
public static boolean onPotionAttemptBrew(NonNullList<ItemStack> stacks) {
var tmp = NonNullList.withSize(stacks.size(), ItemStack.EMPTY);
for (int x = 0; x < tmp.size(); x++)