make it compile
This commit is contained in:
parent
7449a5bb46
commit
6740cf9d4b
16 changed files with 77 additions and 44 deletions
src/main
java/land/chipmunk/kaboomfabric/extras
Extras.java
commands
CommandClearChat.javaCommandConsole.javaCommandDestroyEntities.javaCommandEnchantAll.javaCommandJumpscare.javaCommandKaboom.javaCommandPing.javaCommandPumpkin.javaCommandSpawn.javaCommandSpidey.java
mixin
modules/block
resources
|
@ -3,7 +3,6 @@ package land.chipmunk.kaboomfabric.extras;
|
||||||
import net.fabricmc.api.ModInitializer;
|
import net.fabricmc.api.ModInitializer;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
import net.minecraft.util.Formatting;
|
|
||||||
import com.mojang.brigadier.CommandDispatcher;
|
import com.mojang.brigadier.CommandDispatcher;
|
||||||
import land.chipmunk.kaboomfabric.extras.commands.*;
|
import land.chipmunk.kaboomfabric.extras.commands.*;
|
||||||
|
|
||||||
|
@ -41,7 +40,7 @@ public class Extras implements ModInitializer {
|
||||||
|
|
||||||
for (int i = 0; i < string.length(); i++) {
|
for (int i = 0; i < string.length(); i++) {
|
||||||
char character = string.charAt(i);
|
char character = string.charAt(i);
|
||||||
if (character == '&' && string.length() > (i + 1) && validateEscapeCode(string.charAt(i + 1))) sb.append(Formatting.FORMATTING_CODE_PREFIX);
|
if (character == '&' && string.length() > (i + 1) && validateEscapeCode(string.charAt(i + 1))) sb.append((char) 0xa7);
|
||||||
else sb.append(character);
|
else sb.append(character);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ public interface CommandClearChat {
|
||||||
for (int i = 0; i < 100; i++) text.append(new LiteralText("\n"));
|
for (int i = 0; i < 100; i++) text.append(new LiteralText("\n"));
|
||||||
text.append(new LiteralText("The chat has been cleared").formatted(Formatting.DARK_GREEN));
|
text.append(new LiteralText("The chat has been cleared").formatted(Formatting.DARK_GREEN));
|
||||||
|
|
||||||
for (ServerPlayerEntity player : context.getSource().getServer().getPlayerManager().getPlayerList()) {
|
for (ServerPlayerEntity player : context.getSource().getMinecraftServer().getPlayerManager().getPlayerList()) {
|
||||||
player.sendMessage(text);
|
player.sendMessage(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,13 +27,13 @@ public interface CommandConsole {
|
||||||
static int consoleCommand (CommandContext<ServerCommandSource> context) {
|
static int consoleCommand (CommandContext<ServerCommandSource> context) {
|
||||||
// ? Should I optimize this to manually create a ParseResults object, or just not wrap the say command in the first place?
|
// ? Should I optimize this to manually create a ParseResults object, or just not wrap the say command in the first place?
|
||||||
final ServerCommandSource source = context.getSource();
|
final ServerCommandSource source = context.getSource();
|
||||||
final MinecraftServer server = source.getServer();
|
final MinecraftServer server = source.getMinecraftServer();
|
||||||
final ServerCommandSource console = server.getCommandSource();
|
final ServerCommandSource console = server.getCommandSource();
|
||||||
|
|
||||||
final String command = "say " + Extras.parseEscapeSequences(getString(context, "message"));
|
final String command = "say " + Extras.parseEscapeSequences(getString(context, "message"));
|
||||||
|
|
||||||
final CommandManager commandManager = server.getCommandManager();
|
final CommandManager commandManager = server.getCommandManager();
|
||||||
commandManager.execute(commandManager.getDispatcher().parse(command, source), command);
|
commandManager.execute(console, command);
|
||||||
|
|
||||||
return Command.SINGLE_SUCCESS;
|
return Command.SINGLE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,8 @@ import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.server.command.ServerCommandSource;
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
import net.minecraft.text.LiteralText;
|
import net.minecraft.text.LiteralText;
|
||||||
|
import land.chipmunk.kaboomfabric.extras.mixin.ServerWorldAccessor;
|
||||||
|
import land.chipmunk.kaboomfabric.extras.mixin.EntityAccessor;
|
||||||
|
|
||||||
// Currently broken
|
// Currently broken
|
||||||
public interface CommandDestroyEntities {
|
public interface CommandDestroyEntities {
|
||||||
|
@ -19,7 +21,7 @@ public interface CommandDestroyEntities {
|
||||||
final LiteralCommandNode node = dispatcher.register(
|
final LiteralCommandNode node = dispatcher.register(
|
||||||
literal("destroyentities")
|
literal("destroyentities")
|
||||||
.requires(source -> source.hasPermissionLevel(2))
|
.requires(source -> source.hasPermissionLevel(2))
|
||||||
// .executes(CommandDestroyEntities::destroyEntitiesCommand)
|
//.executes(CommandDestroyEntities::destroyEntitiesCommand)
|
||||||
);
|
);
|
||||||
|
|
||||||
dispatcher.register(literal("de").redirect(node));
|
dispatcher.register(literal("de").redirect(node));
|
||||||
|
@ -27,15 +29,15 @@ public interface CommandDestroyEntities {
|
||||||
|
|
||||||
static int destroyEntitiesCommand (CommandContext<ServerCommandSource> context) {
|
static int destroyEntitiesCommand (CommandContext<ServerCommandSource> context) {
|
||||||
final ServerCommandSource source = context.getSource();
|
final ServerCommandSource source = context.getSource();
|
||||||
final MinecraftServer server = source.getServer();
|
final MinecraftServer server = source.getMinecraftServer();
|
||||||
|
|
||||||
int entityCount = 0;
|
int entityCount = 0;
|
||||||
int worldCount = 0;
|
int worldCount = 0;
|
||||||
for (ServerWorld world : server.getWorlds()) {
|
for (ServerWorld world : server.getWorlds()) {
|
||||||
for (Entity entity : world.iterateEntities()) {
|
for (Entity entity : ((ServerWorldAccessor)(Object)world).entitiesById().values()) {
|
||||||
if (entity instanceof PlayerEntity) continue;
|
if (entity instanceof PlayerEntity) continue;
|
||||||
try {
|
try {
|
||||||
entity.discard();
|
((EntityAccessor)(Object)entity).destroy();
|
||||||
entityCount++;
|
entityCount++;
|
||||||
} catch (Exception ignored) {
|
} catch (Exception ignored) {
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ import net.minecraft.server.command.ServerCommandSource;
|
||||||
import net.minecraft.text.LiteralText;
|
import net.minecraft.text.LiteralText;
|
||||||
import net.minecraft.util.Formatting;
|
import net.minecraft.util.Formatting;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraft.item.Items;
|
import net.minecraft.util.registry.Registry;
|
||||||
import net.minecraft.nbt.ListTag;
|
import net.minecraft.nbt.ListTag;
|
||||||
import net.minecraft.nbt.CompoundTag;
|
import net.minecraft.nbt.CompoundTag;
|
||||||
import net.minecraft.nbt.Tag;
|
import net.minecraft.nbt.Tag;
|
||||||
|
@ -31,8 +31,8 @@ public abstract class CommandEnchantAll {
|
||||||
|
|
||||||
public static int enchantAllCommand (CommandContext<ServerCommandSource> context) throws CommandSyntaxException {
|
public static int enchantAllCommand (CommandContext<ServerCommandSource> context) throws CommandSyntaxException {
|
||||||
final ServerCommandSource source = context.getSource();
|
final ServerCommandSource source = context.getSource();
|
||||||
final ServerPlayerEntity player = source.getPlayerOrThrow();
|
final ServerPlayerEntity player = source.getPlayer();
|
||||||
final PlayerInventory inventory = player.getInventory();
|
final PlayerInventory inventory = player.inventory;
|
||||||
|
|
||||||
final ListTag enchantments = new ListTag();
|
final ListTag enchantments = new ListTag();
|
||||||
for (Identifier identifier : Registry.ENCHANTMENT.getIds()) {
|
for (Identifier identifier : Registry.ENCHANTMENT.getIds()) {
|
||||||
|
@ -45,12 +45,12 @@ public abstract class CommandEnchantAll {
|
||||||
final ItemStack stack = inventory.getStack(inventory.selectedSlot).copy();
|
final ItemStack stack = inventory.getStack(inventory.selectedSlot).copy();
|
||||||
if (stack.isEmpty()) throw EMPTY_ITEM_EXCEPTION.create();
|
if (stack.isEmpty()) throw EMPTY_ITEM_EXCEPTION.create();
|
||||||
|
|
||||||
CompoundTag nbt = stack.getNbt();
|
CompoundTag nbt = stack.getTag();
|
||||||
if (nbt == null) {
|
if (nbt == null) {
|
||||||
nbt = new CompoundTag();
|
nbt = new CompoundTag();
|
||||||
stack.setNbt(nbt);
|
stack.setTag(nbt);
|
||||||
}
|
}
|
||||||
stack.getNbt().put("Enchantments", enchantments);
|
stack.getTag().put("Enchantments", enchantments);
|
||||||
inventory.setStack(inventory.selectedSlot, stack);
|
inventory.setStack(inventory.selectedSlot, stack);
|
||||||
|
|
||||||
source.sendFeedback(new LiteralText("I killed Martin."), false);
|
source.sendFeedback(new LiteralText("I killed Martin."), false);
|
||||||
|
|
|
@ -12,7 +12,7 @@ import static net.minecraft.command.arguments.EntityArgumentType.getPlayers;
|
||||||
import net.minecraft.server.command.ServerCommandSource;
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
import net.minecraft.server.network.ServerPlayerEntity;
|
import net.minecraft.server.network.ServerPlayerEntity;
|
||||||
import net.minecraft.server.world.ServerWorld;
|
import net.minecraft.server.world.ServerWorld;
|
||||||
import net.minecraft.item.Items;
|
import net.minecraft.util.registry.Registry;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraft.particle.ParticleEffect;
|
import net.minecraft.particle.ParticleEffect;
|
||||||
import net.minecraft.sound.SoundEvent;
|
import net.minecraft.sound.SoundEvent;
|
||||||
|
@ -42,7 +42,7 @@ public interface CommandJumpscare {
|
||||||
final SoundEvent soundEvent = Registry.SOUND_EVENT.get(new Identifier("minecraft", "entity.enderman.scream"));
|
final SoundEvent soundEvent = Registry.SOUND_EVENT.get(new Identifier("minecraft", "entity.enderman.scream"));
|
||||||
|
|
||||||
for (ServerPlayerEntity player : players) {
|
for (ServerPlayerEntity player : players) {
|
||||||
final ServerWorld world = player.getWorld();
|
final ServerWorld world = player.getServerWorld();
|
||||||
final Vec3d position = player.getPos();
|
final Vec3d position = player.getPos();
|
||||||
world.<ParticleEffect>spawnParticles(player, particle, false, position.getX(), position.getY(), position.getZ(), 4, 0, 0, 0, 1);
|
world.<ParticleEffect>spawnParticles(player, particle, false, position.getX(), position.getY(), position.getZ(), 4, 0, 0, 0, 1);
|
||||||
|
|
||||||
|
|
|
@ -6,17 +6,18 @@ import com.mojang.brigadier.context.CommandContext;
|
||||||
import static net.minecraft.server.command.CommandManager.literal;
|
import static net.minecraft.server.command.CommandManager.literal;
|
||||||
import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
||||||
import net.minecraft.server.command.ServerCommandSource;
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
import net.minecraft.world.World;
|
|
||||||
import net.minecraft.server.world.ServerWorld;
|
import net.minecraft.server.world.ServerWorld;
|
||||||
|
import net.minecraft.world.explosion.Explosion.DestructionType;
|
||||||
import net.minecraft.server.network.ServerPlayerEntity;
|
import net.minecraft.server.network.ServerPlayerEntity;
|
||||||
import net.minecraft.entity.player.PlayerInventory;
|
import net.minecraft.entity.player.PlayerInventory;
|
||||||
import net.minecraft.item.Items;
|
import net.minecraft.util.registry.Registry;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.LiteralText;
|
||||||
|
import net.minecraft.util.Clearable;
|
||||||
import java.util.concurrent.ThreadLocalRandom;
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
|
|
||||||
public interface CommandKaboom {
|
public interface CommandKaboom {
|
||||||
|
@ -29,16 +30,16 @@ public interface CommandKaboom {
|
||||||
}
|
}
|
||||||
|
|
||||||
static int kaboomCommand (CommandContext<ServerCommandSource> context) throws CommandSyntaxException {
|
static int kaboomCommand (CommandContext<ServerCommandSource> context) throws CommandSyntaxException {
|
||||||
final ServerPlayerEntity player = context.getSource().getPlayerOrThrow();
|
final ServerPlayerEntity player = context.getSource().getPlayer();
|
||||||
boolean explode = ThreadLocalRandom.current().nextBoolean();
|
boolean explode = ThreadLocalRandom.current().nextBoolean();
|
||||||
|
|
||||||
if (explode) {
|
if (explode) {
|
||||||
final Vec3d position = player.getPos();
|
final Vec3d position = player.getPos();
|
||||||
final ServerWorld world = player.getWorld();
|
final ServerWorld world = player.getServerWorld();
|
||||||
final int explosionCount = 20;
|
final int explosionCount = 20;
|
||||||
final int power = 8;
|
final int power = 8;
|
||||||
|
|
||||||
world.createExplosion(player, position.getX(), position.getY(), position.getZ(), power, true, World.ExplosionSourceType.MOB);
|
world.createExplosion(player, position.getX(), position.getY(), position.getZ(), power, true, DestructionType.DESTROY);
|
||||||
|
|
||||||
final int power2 = 4;
|
final int power2 = 4;
|
||||||
final BlockState lava = Registry.BLOCK.get(new Identifier("minecraft", "lava")).getDefaultState();
|
final BlockState lava = Registry.BLOCK.get(new Identifier("minecraft", "lava")).getDefaultState();
|
||||||
|
@ -48,11 +49,11 @@ public interface CommandKaboom {
|
||||||
final double posY = position.getY() + ThreadLocalRandom.current().nextInt(-6, 6);
|
final double posY = position.getY() + ThreadLocalRandom.current().nextInt(-6, 6);
|
||||||
final double posZ = position.getZ() + ThreadLocalRandom.current().nextInt(-15, 15);
|
final double posZ = position.getZ() + ThreadLocalRandom.current().nextInt(-15, 15);
|
||||||
|
|
||||||
world.createExplosion(player, posX, posY, posZ, power2, true, World.ExplosionSourceType.MOB);
|
world.createExplosion(player, posX, posY, posZ, power2, true, DestructionType.DESTROY);
|
||||||
|
|
||||||
final BlockPos blockPos = new BlockPos((int) posX, (int) posY, (int) posZ);
|
final BlockPos blockPos = new BlockPos((int) posX, (int) posY, (int) posZ);
|
||||||
if (!world.canSetBlock(blockPos)) continue;
|
if (!world.canSetBlock(blockPos)) continue;
|
||||||
if (world.getBlockState(blockPos).hasBlockEntity()) world.removeBlockEntity(blockPos);
|
Clearable.clear(world.getBlockEntity(blockPos));
|
||||||
world.setBlockState(blockPos, lava);
|
world.setBlockState(blockPos, lava);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,8 +61,8 @@ public interface CommandKaboom {
|
||||||
return Command.SINGLE_SUCCESS;
|
return Command.SINGLE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInventory inventory = player.getInventory();
|
final PlayerInventory inventory = player.inventory;
|
||||||
inventory.setStack(inventory.selectedSlot, new ItemStack(Items.get(new Identifier("minecraft", "cake"))));
|
inventory.setStack(inventory.selectedSlot, new ItemStack(Registry.ITEM.get(new Identifier("minecraft", "cake"))));
|
||||||
player.sendMessage(new LiteralText("Have a nice day :)"));
|
player.sendMessage(new LiteralText("Have a nice day :)"));
|
||||||
return Command.SINGLE_SUCCESS;
|
return Command.SINGLE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,7 @@ public abstract class CommandPing {
|
||||||
|
|
||||||
public static int pingCommand (CommandContext<ServerCommandSource> context) throws CommandSyntaxException {
|
public static int pingCommand (CommandContext<ServerCommandSource> context) throws CommandSyntaxException {
|
||||||
final ServerCommandSource source = context.getSource();
|
final ServerCommandSource source = context.getSource();
|
||||||
final ServerPlayerEntity player = source.getPlayerOrThrow();
|
final ServerPlayerEntity player = source.getPlayer();
|
||||||
final int ping = player.pingMilliseconds;
|
final int ping = player.pingMilliseconds;
|
||||||
final Formatting highlighting = getHighlighting(ping);
|
final Formatting highlighting = getHighlighting(ping);
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ import static net.minecraft.command.arguments.EntityArgumentType.getPlayers;
|
||||||
import net.minecraft.server.command.ServerCommandSource;
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
import net.minecraft.server.network.ServerPlayerEntity;
|
import net.minecraft.server.network.ServerPlayerEntity;
|
||||||
import net.minecraft.entity.player.PlayerInventory;
|
import net.minecraft.entity.player.PlayerInventory;
|
||||||
import net.minecraft.item.Items;
|
import net.minecraft.util.registry.Registry;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
@ -34,11 +34,11 @@ public interface CommandPumpkin {
|
||||||
static int pumpkinCommand (CommandContext<ServerCommandSource> context) throws CommandSyntaxException {
|
static int pumpkinCommand (CommandContext<ServerCommandSource> context) throws CommandSyntaxException {
|
||||||
final ServerCommandSource source = context.getSource();
|
final ServerCommandSource source = context.getSource();
|
||||||
final Collection<ServerPlayerEntity> players = getPlayers(context, "targets");
|
final Collection<ServerPlayerEntity> players = getPlayers(context, "targets");
|
||||||
final Item pumpkin = Items.get(new Identifier("minecraft", "pumpkin"));
|
final Item pumpkin = Registry.ITEM.get(new Identifier("minecraft", "pumpkin"));
|
||||||
|
|
||||||
for (ServerPlayerEntity player : players) {
|
for (ServerPlayerEntity player : players) {
|
||||||
final PlayerInventory inventory = player.getInventory();
|
final PlayerInventory inventory = player.inventory;
|
||||||
inventory.setStack(PlayerInventory.ARMOR_SLOTS[3], new ItemStack(pumpkin));
|
inventory.setStack(3, new ItemStack(pumpkin));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (players.size() == 1) {
|
if (players.size() == 1) {
|
||||||
|
|
|
@ -8,6 +8,8 @@ import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
||||||
import static net.minecraft.server.command.CommandManager.literal;
|
import static net.minecraft.server.command.CommandManager.literal;
|
||||||
import net.minecraft.server.command.ServerCommandSource;
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
import net.minecraft.server.world.ServerWorld;
|
import net.minecraft.server.world.ServerWorld;
|
||||||
|
import net.minecraft.world.level.LevelProperties;
|
||||||
|
import net.minecraft.world.dimension.DimensionType;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
import net.minecraft.text.LiteralText;
|
import net.minecraft.text.LiteralText;
|
||||||
|
@ -26,12 +28,11 @@ public interface CommandSpawn {
|
||||||
static int spawnCommand (CommandContext<ServerCommandSource> context) throws CommandSyntaxException {
|
static int spawnCommand (CommandContext<ServerCommandSource> context) throws CommandSyntaxException {
|
||||||
final ServerCommandSource source = context.getSource();
|
final ServerCommandSource source = context.getSource();
|
||||||
final Entity entity = source.getEntityOrThrow();
|
final Entity entity = source.getEntityOrThrow();
|
||||||
final ServerWorld world = source.getServer().getOverworld();
|
final ServerWorld world = source.getMinecraftServer().getWorld(DimensionType.OVERWORLD);
|
||||||
|
final LevelProperties properties = world.getLevelProperties();
|
||||||
|
|
||||||
final Vec3d spawn = Vec3d.ofCenter(world.getSpawnPos());
|
entity.setWorld(world);
|
||||||
final float spawnAngle = world.getSpawnAngle();
|
entity.teleport(properties.getSpawnX() + 0.5, properties.getSpawnY(), properties.getSpawnZ() + 0.5);
|
||||||
|
|
||||||
entity.teleport(world, spawn.getX(), spawn.getY(), spawn.getZ(), positionFlags, spawnAngle, 0);
|
|
||||||
|
|
||||||
source.sendFeedback(new LiteralText("Successfully moved to spawn"), false);
|
source.sendFeedback(new LiteralText("Successfully moved to spawn"), false);
|
||||||
|
|
||||||
|
|
|
@ -9,11 +9,12 @@ import static net.minecraft.server.command.CommandManager.argument;
|
||||||
import net.minecraft.server.command.ServerCommandSource;
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.server.world.ServerWorld;
|
import net.minecraft.server.world.ServerWorld;
|
||||||
import net.minecraft.item.Items;
|
import net.minecraft.util.registry.Registry;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.util.Clearable;
|
||||||
import land.chipmunk.kaboomfabric.extras.modules.block.BlockIterator;
|
import land.chipmunk.kaboomfabric.extras.modules.block.BlockIterator;
|
||||||
|
|
||||||
public abstract class CommandSpidey {
|
public abstract class CommandSpidey {
|
||||||
|
@ -29,7 +30,7 @@ public abstract class CommandSpidey {
|
||||||
final ServerCommandSource source = context.getSource();
|
final ServerCommandSource source = context.getSource();
|
||||||
final Entity entity = source.getEntityOrThrow();
|
final Entity entity = source.getEntityOrThrow();
|
||||||
final ServerWorld world = source.getWorld();
|
final ServerWorld world = source.getWorld();
|
||||||
|
/*
|
||||||
final Vec3d start = entity.getEyePos();
|
final Vec3d start = entity.getEyePos();
|
||||||
final Vec3d direction = Vec3d.fromPolar(entity.getYaw(), entity.getPitch());
|
final Vec3d direction = Vec3d.fromPolar(entity.getYaw(), entity.getPitch());
|
||||||
final int yOffset = 0;
|
final int yOffset = 0;
|
||||||
|
@ -41,11 +42,12 @@ public abstract class CommandSpidey {
|
||||||
|
|
||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
BlockPos pos = iterator.next();
|
BlockPos pos = iterator.next();
|
||||||
if (!world.isInBuildLimit(pos) || !world.getBlockState(pos).isAir()) break;
|
if ((pos.getY() >= 0 && pos.getY() <= 255) || !world.getBlockState(pos).isAir()) break;
|
||||||
|
|
||||||
if (world.getBlockState(pos).hasBlockEntity()) world.removeBlockEntity(pos);
|
Clearable.clear(world.getBlockEntity(pos));
|
||||||
world.setBlockState(pos, cobweb);
|
world.setBlockState(pos, cobweb);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
return Command.SINGLE_SUCCESS;
|
return Command.SINGLE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
package land.chipmunk.kaboomfabric.extras.mixin;
|
||||||
|
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.gen.Invoker;
|
||||||
|
|
||||||
|
@Mixin(net.minecraft.entity.Entity.class)
|
||||||
|
public interface EntityAccessor {
|
||||||
|
@Invoker("destroy") void destroy ();
|
||||||
|
}
|
|
@ -3,14 +3,15 @@ package land.chipmunk.kaboomfabric.extras.mixin;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
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.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
import com.mojang.brigadier.context.CommandContext;
|
||||||
import net.minecraft.server.command.ServerCommandSource;
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
@Mixin(net.minecraft.server.command.ReloadCommand.class)
|
@Mixin(net.minecraft.server.command.ReloadCommand.class)
|
||||||
public abstract class ReloadCommandMixin {
|
public abstract class ReloadCommandMixin {
|
||||||
@Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/server/MinecraftServer;reload()V"), method = "method_13530", cancellable = true)
|
@Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/server/MinecraftServer;reload()V"), method = "method_13530", cancellable = true)
|
||||||
private static void reload (Collection<?> datapacks, ServerCommandSource source, CallbackInfo info) {
|
private static void reload (CommandContext<ServerCommandSource> context, CallbackInfoReturnable<Integer> info) {
|
||||||
info.cancel();
|
info.cancel();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
package land.chipmunk.kaboomfabric.extras.mixin;
|
||||||
|
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||||
|
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
|
|
||||||
|
@Mixin(net.minecraft.server.world.ServerWorld.class)
|
||||||
|
public interface ServerWorldAccessor {
|
||||||
|
@Accessor("entitiesById") Int2ObjectMap<Entity> entitiesById ();
|
||||||
|
}
|
|
@ -219,9 +219,12 @@ public class BlockIterator implements Iterator<BlockPos> {
|
||||||
return getPosition(direction.getZ(), position.getZ(), block.getZ());
|
return getPosition(direction.getZ(), position.getZ(), block.getZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: Backport
|
||||||
|
/*
|
||||||
public BlockIterator(Entity entity, int maxDistance) {
|
public BlockIterator(Entity entity, int maxDistance) {
|
||||||
this(entity.getPos(), Vec3d.fromPolar(entity.getYaw(), entity.getPitch()), entity.getEyeHeight(entity.getPose()), maxDistance);
|
this(entity.getPos(), Vec3d.fromPolar(entity.getYaw(), entity.getPitch()), entity.getEyeHeight(entity.getPose()), maxDistance);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs the BlockIterator.
|
* Constructs the BlockIterator.
|
||||||
|
@ -231,9 +234,11 @@ public class BlockIterator implements Iterator<BlockPos> {
|
||||||
* @param entity Information from the entity is used to set up the trace
|
* @param entity Information from the entity is used to set up the trace
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
public BlockIterator(Entity entity) {
|
public BlockIterator(Entity entity) {
|
||||||
this(entity, 0);
|
this(entity, 0);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true if the iteration has more elements
|
* Returns true if the iteration has more elements
|
||||||
|
|
|
@ -10,7 +10,9 @@
|
||||||
"StopCommandMixin",
|
"StopCommandMixin",
|
||||||
"ReloadCommandMixin",
|
"ReloadCommandMixin",
|
||||||
"OpCommandMixin",
|
"OpCommandMixin",
|
||||||
"EntitySelectorMixin"
|
"EntitySelectorMixin",
|
||||||
|
"ServerWorldAccessor",
|
||||||
|
"EntityAccessor"
|
||||||
],
|
],
|
||||||
"injectors": {
|
"injectors": {
|
||||||
"defaultRequire": 1
|
"defaultRequire": 1
|
||||||
|
|
Loading…
Reference in a new issue