25w33a
This commit is contained in:
1 parent
096be5dc20
commit
a0cc5b8a0a
4 files changed
+24
-19
No files matched your search
+1
-1
@@ -3,7 +3,7 @@ org.gradle.jvmargs=-Xmx1G
|
|||||||
|
|
||||||
# Fabric Properties
|
# Fabric Properties
|
||||||
# check https://fabricmc.net/develop/
|
# check https://fabricmc.net/develop/
|
||||||
minecraft_version=25w32a
|
minecraft_version=25w33a
|
||||||
loader_version=0.16.14
|
loader_version=0.16.14
|
||||||
jsr305_version=3.0.2
|
jsr305_version=3.0.2
|
||||||
fabric_version=0.119.5+1.21.5
|
fabric_version=0.119.5+1.21.5
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import org.spongepowered.asm.mixin.Shadow;
|
|||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -17,6 +16,7 @@ import net.minecraft.world.entity.Entity;
|
|||||||
import net.minecraft.world.entity.LivingEntity;
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
import net.minecraft.world.level.Explosion;
|
import net.minecraft.world.level.Explosion;
|
||||||
import net.minecraft.world.phys.Vec3;
|
import net.minecraft.world.phys.Vec3;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
|
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
|
||||||
|
|
||||||
import static carpet.script.CarpetEventServer.Event.EXPLOSION_OUTCOME;
|
import static carpet.script.CarpetEventServer.Event.EXPLOSION_OUTCOME;
|
||||||
@@ -36,7 +36,7 @@ public abstract class Explosion_scarpetEventMixin
|
|||||||
private List<Entity> affectedEntities = new ArrayList<>();
|
private List<Entity> affectedEntities = new ArrayList<>();
|
||||||
|
|
||||||
@Inject(method = "explode", at = @At("HEAD"))
|
@Inject(method = "explode", at = @At("HEAD"))
|
||||||
private void explodeCM(CallbackInfo ci)
|
private void explodeCM(CallbackInfoReturnable<Integer> cir)
|
||||||
{
|
{
|
||||||
affectedEntities.clear();
|
affectedEntities.clear();
|
||||||
}
|
}
|
||||||
@@ -49,7 +49,7 @@ public abstract class Explosion_scarpetEventMixin
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Inject(method = "explode", locals = LocalCapture.CAPTURE_FAILHARD, at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/ServerExplosion;hurtEntities()V", shift = At.Shift.AFTER))
|
@Inject(method = "explode", locals = LocalCapture.CAPTURE_FAILHARD, at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/ServerExplosion;hurtEntities()V", shift = At.Shift.AFTER))
|
||||||
private void onExplosionDone(CallbackInfo ci, List list)
|
private void onExplosionDone(CallbackInfoReturnable<Integer> cir, List list)
|
||||||
{
|
{
|
||||||
if (EXPLOSION_OUTCOME.isNeeded() && !level.isClientSide())
|
if (EXPLOSION_OUTCOME.isNeeded() && !level.isClientSide())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -4,11 +4,13 @@ import carpet.fakes.ServerWorldInterface;
|
|||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Holder;
|
import net.minecraft.core.Holder;
|
||||||
import net.minecraft.core.RegistryAccess;
|
import net.minecraft.core.RegistryAccess;
|
||||||
|
import net.minecraft.core.particles.ExplosionParticleInfo;
|
||||||
import net.minecraft.core.particles.ParticleOptions;
|
import net.minecraft.core.particles.ParticleOptions;
|
||||||
import net.minecraft.resources.ResourceKey;
|
import net.minecraft.resources.ResourceKey;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import net.minecraft.sounds.SoundEvent;
|
import net.minecraft.sounds.SoundEvent;
|
||||||
import net.minecraft.util.profiling.ProfilerFiller;
|
import net.minecraft.util.profiling.ProfilerFiller;
|
||||||
|
import net.minecraft.util.random.WeightedList;
|
||||||
import net.minecraft.world.DifficultyInstance;
|
import net.minecraft.world.DifficultyInstance;
|
||||||
import net.minecraft.world.damagesource.DamageSource;
|
import net.minecraft.world.damagesource.DamageSource;
|
||||||
import net.minecraft.world.entity.Entity;
|
import net.minecraft.world.entity.Entity;
|
||||||
@@ -69,7 +71,7 @@ public abstract class ServerLevel_scarpetMixin extends Level implements ServerWo
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Inject(method = "explode", at = @At("HEAD"), cancellable = true)
|
@Inject(method = "explode", at = @At("HEAD"), cancellable = true)
|
||||||
private void handleExplosion(final Entity entity, final DamageSource damageSource, final ExplosionDamageCalculator explosionDamageCalculator, final double x, final double y, final double z, final float g, final boolean bl, final ExplosionInteraction explosionInteraction, final ParticleOptions particleOptions, final ParticleOptions particleOptions2, final Holder<SoundEvent> holder, final CallbackInfo ci)
|
private void handleExplosion(Entity entity, DamageSource damageSource, ExplosionDamageCalculator explosionDamageCalculator, double x, double y, double z, float g, boolean bl, ExplosionInteraction explosionInteraction, ParticleOptions particleOptions, ParticleOptions particleOptions2, WeightedList<ExplosionParticleInfo> weightedList, Holder<SoundEvent> holder, CallbackInfo ci)
|
||||||
{
|
{
|
||||||
if (EXPLOSION.isNeeded()) {
|
if (EXPLOSION.isNeeded()) {
|
||||||
Explosion.BlockInteraction var10000 = switch (explosionInteraction) {
|
Explosion.BlockInteraction var10000 = switch (explosionInteraction) {
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ import carpet.script.value.StringValue;
|
|||||||
import carpet.script.value.Value;
|
import carpet.script.value.Value;
|
||||||
import carpet.script.value.ValueConversions;
|
import carpet.script.value.ValueConversions;
|
||||||
|
|
||||||
import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
|
||||||
import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
|
import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
|
||||||
import it.unimi.dsi.fastutil.longs.LongSet;
|
import it.unimi.dsi.fastutil.longs.LongSet;
|
||||||
import net.minecraft.Util;
|
import net.minecraft.Util;
|
||||||
@@ -39,6 +38,7 @@ import net.minecraft.core.HolderSet;
|
|||||||
import net.minecraft.core.QuartPos;
|
import net.minecraft.core.QuartPos;
|
||||||
import net.minecraft.core.Registry;
|
import net.minecraft.core.Registry;
|
||||||
import net.minecraft.core.RegistryAccess;
|
import net.minecraft.core.RegistryAccess;
|
||||||
|
import net.minecraft.core.particles.ExplosionParticleInfo;
|
||||||
import net.minecraft.core.particles.ParticleOptions;
|
import net.minecraft.core.particles.ParticleOptions;
|
||||||
import net.minecraft.core.particles.ParticleTypes;
|
import net.minecraft.core.particles.ParticleTypes;
|
||||||
import net.minecraft.core.registries.BuiltInRegistries;
|
import net.minecraft.core.registries.BuiltInRegistries;
|
||||||
@@ -54,6 +54,7 @@ import net.minecraft.sounds.SoundEvents;
|
|||||||
import net.minecraft.tags.ItemTags;
|
import net.minecraft.tags.ItemTags;
|
||||||
import net.minecraft.tags.TagKey;
|
import net.minecraft.tags.TagKey;
|
||||||
import net.minecraft.util.ProblemReporter;
|
import net.minecraft.util.ProblemReporter;
|
||||||
|
import net.minecraft.util.random.WeightedList;
|
||||||
import net.minecraft.world.level.ServerExplosion;
|
import net.minecraft.world.level.ServerExplosion;
|
||||||
import net.minecraft.world.level.chunk.ChunkGenerator;
|
import net.minecraft.world.level.chunk.ChunkGenerator;
|
||||||
import net.minecraft.world.level.chunk.PalettedContainer;
|
import net.minecraft.world.level.chunk.PalettedContainer;
|
||||||
@@ -71,7 +72,6 @@ import org.apache.commons.lang3.tuple.Pair;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -85,15 +85,11 @@ import java.util.function.Predicate;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import net.minecraft.commands.arguments.item.ItemInput;
|
|
||||||
import net.minecraft.nbt.CompoundTag;
|
import net.minecraft.nbt.CompoundTag;
|
||||||
import net.minecraft.nbt.Tag;
|
|
||||||
import net.minecraft.network.protocol.game.ClientboundExplodePacket;
|
import net.minecraft.network.protocol.game.ClientboundExplodePacket;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.sounds.SoundSource;
|
import net.minecraft.sounds.SoundSource;
|
||||||
import net.minecraft.util.Mth;
|
import net.minecraft.util.Mth;
|
||||||
import net.minecraft.util.SortedArraySet;
|
|
||||||
import net.minecraft.world.Clearable;
|
|
||||||
import net.minecraft.world.InteractionResult;
|
import net.minecraft.world.InteractionResult;
|
||||||
import net.minecraft.world.entity.Entity;
|
import net.minecraft.world.entity.Entity;
|
||||||
import net.minecraft.world.entity.EntityType;
|
import net.minecraft.world.entity.EntityType;
|
||||||
@@ -998,6 +994,12 @@ public class WorldAccess
|
|||||||
return BooleanValue.of(success);
|
return BooleanValue.of(success);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// from ServerLevel = don't wanna mixin this in, as it is PITA
|
||||||
|
WeightedList<ExplosionParticleInfo> DEFAULT_EXPLOSION_BLOCK_PARTICLES = WeightedList.<ExplosionParticleInfo>builder()
|
||||||
|
.add(new ExplosionParticleInfo(ParticleTypes.POOF, 0.5F, 1.0F))
|
||||||
|
.add(new ExplosionParticleInfo(ParticleTypes.SMOKE, 1.0F, 1.0F))
|
||||||
|
.build();
|
||||||
|
|
||||||
expression.addContextFunction("create_explosion", -1, (c, t, lv) ->
|
expression.addContextFunction("create_explosion", -1, (c, t, lv) ->
|
||||||
{
|
{
|
||||||
if (lv.isEmpty())
|
if (lv.isEmpty())
|
||||||
@@ -1078,7 +1080,7 @@ public class WorldAccess
|
|||||||
LivingEntity theAttacker = attacker;
|
LivingEntity theAttacker = attacker;
|
||||||
|
|
||||||
// copy of ServerWorld.createExplosion #TRACK#
|
// copy of ServerWorld.createExplosion #TRACK#
|
||||||
ServerExplosion explosion = new ServerExplosion(cc.level(), source, null, null, pos, powah, createFire, mode)
|
ServerExplosion serverExplosion = new ServerExplosion(cc.level(), source, null, null, pos, powah, createFire, mode)
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
@Nullable
|
@Nullable
|
||||||
@@ -1088,14 +1090,15 @@ public class WorldAccess
|
|||||||
return theAttacker;
|
return theAttacker;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
explosion.explode();
|
int i = serverExplosion.explode();
|
||||||
ParticleOptions explosionParticle = explosion.isSmall() ? ParticleTypes.EXPLOSION : ParticleTypes.EXPLOSION_EMITTER;
|
ParticleOptions particleOptions3 = serverExplosion.isSmall() ? ParticleTypes.EXPLOSION : ParticleTypes.EXPLOSION_EMITTER;
|
||||||
cc.level().players().forEach(spe -> {
|
|
||||||
if (spe.distanceToSqr(pos) < 4096.0D)
|
for (ServerPlayer serverPlayer : cc.level().players()) {
|
||||||
{
|
if (serverPlayer.distanceToSqr(pos) < 4096.0) {
|
||||||
spe.connection.send(new ClientboundExplodePacket(pos, Optional.ofNullable(explosion.getHitPlayers().get(spe)), explosionParticle, SoundEvents.GENERIC_EXPLODE));
|
Optional<Vec3> optional = Optional.ofNullable((Vec3)serverExplosion.getHitPlayers().get(serverPlayer));
|
||||||
|
serverPlayer.connection.send(new ClientboundExplodePacket(pos, powah, i, optional, particleOptions3, SoundEvents.GENERIC_EXPLODE, DEFAULT_EXPLOSION_BLOCK_PARTICLES));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
|
||||||
return Value.TRUE;
|
return Value.TRUE;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user