Mirror von
https://github.com/IntellectualSites/FastAsyncWorldEdit.git
synchronisiert 2024-11-19 09:20:08 +01:00
Add -w flag to butcher for water mobs
beb784e0ffe1d8a8cf678912dbd6207e96afcfc8 Co-Authored-By: Lewis B <17665267+lewisjb@users.noreply.github.com>
Dieser Commit ist enthalten in:
Ursprung
9cd05bc5a1
Commit
679b9d203d
@ -40,6 +40,7 @@ import org.bukkit.entity.Projectile;
|
|||||||
import org.bukkit.entity.TNTPrimed;
|
import org.bukkit.entity.TNTPrimed;
|
||||||
import org.bukkit.entity.Tameable;
|
import org.bukkit.entity.Tameable;
|
||||||
import org.bukkit.entity.Villager;
|
import org.bukkit.entity.Villager;
|
||||||
|
import org.bukkit.entity.WaterMob;
|
||||||
import org.bukkit.entity.minecart.ExplosiveMinecart;
|
import org.bukkit.entity.minecart.ExplosiveMinecart;
|
||||||
|
|
||||||
import static com.google.common.base.Preconditions.checkNotNull;
|
import static com.google.common.base.Preconditions.checkNotNull;
|
||||||
@ -147,4 +148,9 @@ class BukkitEntityProperties implements EntityProperties {
|
|||||||
public boolean isPasteable() {
|
public boolean isPasteable() {
|
||||||
return !(entity instanceof Player || entity instanceof ComplexEntityPart);
|
return !(entity instanceof Player || entity instanceof ComplexEntityPart);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isWaterCreature() {
|
||||||
|
return entity instanceof WaterMob;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1003,7 +1003,9 @@ public class BrushCommands {
|
|||||||
@Switch(name = 'f', desc = "Also kill all friendly mobs (Applies the flags `-abgnpt`)")
|
@Switch(name = 'f', desc = "Also kill all friendly mobs (Applies the flags `-abgnpt`)")
|
||||||
boolean killFriendly,
|
boolean killFriendly,
|
||||||
@Switch(name = 'r', desc = "Also destroy armor stands")
|
@Switch(name = 'r', desc = "Also destroy armor stands")
|
||||||
boolean killArmorStands, InjectedValueAccess context) throws WorldEditException {
|
boolean killArmorStands,
|
||||||
|
@Switch(name = 'w', desc = "Also kill water mobs")
|
||||||
|
boolean killWater, InjectedValueAccess context) throws WorldEditException {
|
||||||
worldEdit.checkMaxBrushRadius(radius);
|
worldEdit.checkMaxBrushRadius(radius);
|
||||||
|
|
||||||
CreatureButcher flags = new CreatureButcher(player);
|
CreatureButcher flags = new CreatureButcher(player);
|
||||||
@ -1015,6 +1017,7 @@ public class BrushCommands {
|
|||||||
flags.or(CreatureButcher.Flags.AMBIENT, killAmbient, "worldedit.butcher.ambient");
|
flags.or(CreatureButcher.Flags.AMBIENT, killAmbient, "worldedit.butcher.ambient");
|
||||||
flags.or(CreatureButcher.Flags.TAGGED, killWithName, "worldedit.butcher.tagged");
|
flags.or(CreatureButcher.Flags.TAGGED, killWithName, "worldedit.butcher.tagged");
|
||||||
flags.or(CreatureButcher.Flags.ARMOR_STAND, killArmorStands, "worldedit.butcher.armorstands");
|
flags.or(CreatureButcher.Flags.ARMOR_STAND, killArmorStands, "worldedit.butcher.armorstands");
|
||||||
|
flags.or(CreatureButcher.Flags.WATER, killWater, "worldedit.butcher.water");
|
||||||
|
|
||||||
set(context, new ButcherBrush(flags)).setSize(radius);
|
set(context, new ButcherBrush(flags)).setSize(radius);
|
||||||
}
|
}
|
||||||
|
@ -569,7 +569,9 @@ public class UtilityCommands {
|
|||||||
@Switch(name = 'f', desc = "Also kill all friendly mobs (Applies the flags `-abgnpt`)")
|
@Switch(name = 'f', desc = "Also kill all friendly mobs (Applies the flags `-abgnpt`)")
|
||||||
boolean killFriendly,
|
boolean killFriendly,
|
||||||
@Switch(name = 'r', desc = "Also destroy armor stands")
|
@Switch(name = 'r', desc = "Also destroy armor stands")
|
||||||
boolean killArmorStands) throws WorldEditException {
|
boolean killArmorStands,
|
||||||
|
@Switch(name = 'w', desc = "Also kill water mobs")
|
||||||
|
boolean killWater) throws WorldEditException {
|
||||||
LocalConfiguration config = we.getConfiguration();
|
LocalConfiguration config = we.getConfiguration();
|
||||||
|
|
||||||
if (radius == null) {
|
if (radius == null) {
|
||||||
@ -595,6 +597,7 @@ public class UtilityCommands {
|
|||||||
flags.or(CreatureButcher.Flags.AMBIENT, killAmbient, "worldedit.butcher.ambient");
|
flags.or(CreatureButcher.Flags.AMBIENT, killAmbient, "worldedit.butcher.ambient");
|
||||||
flags.or(CreatureButcher.Flags.TAGGED, killWithName, "worldedit.butcher.tagged");
|
flags.or(CreatureButcher.Flags.TAGGED, killWithName, "worldedit.butcher.tagged");
|
||||||
flags.or(CreatureButcher.Flags.ARMOR_STAND, killArmorStands, "worldedit.butcher.armorstands");
|
flags.or(CreatureButcher.Flags.ARMOR_STAND, killArmorStands, "worldedit.butcher.armorstands");
|
||||||
|
flags.or(CreatureButcher.Flags.WATER, killWater, "worldedit.butcher.water");
|
||||||
|
|
||||||
int killed = killMatchingEntities(radius, actor, flags::createFunction);
|
int killed = killMatchingEntities(radius, actor, flags::createFunction);
|
||||||
|
|
||||||
|
@ -36,8 +36,9 @@ public class CreatureButcher {
|
|||||||
public static final int GOLEMS = 1 << 3;
|
public static final int GOLEMS = 1 << 3;
|
||||||
public static final int AMBIENT = 1 << 4;
|
public static final int AMBIENT = 1 << 4;
|
||||||
public static final int TAGGED = 1 << 5;
|
public static final int TAGGED = 1 << 5;
|
||||||
public static final int FRIENDLY = PETS | NPCS | ANIMALS | GOLEMS | AMBIENT | TAGGED;
|
|
||||||
public static final int ARMOR_STAND = 1 << 6;
|
public static final int ARMOR_STAND = 1 << 6;
|
||||||
|
public static final int WATER = 1 << 7;
|
||||||
|
public static final int FRIENDLY = PETS | NPCS | ANIMALS | GOLEMS | AMBIENT | TAGGED | WATER;
|
||||||
|
|
||||||
private Flags() {
|
private Flags() {
|
||||||
}
|
}
|
||||||
@ -73,6 +74,7 @@ public class CreatureButcher {
|
|||||||
boolean killAmbient = (flags & Flags.AMBIENT) != 0;
|
boolean killAmbient = (flags & Flags.AMBIENT) != 0;
|
||||||
boolean killTagged = (flags & Flags.TAGGED) != 0;
|
boolean killTagged = (flags & Flags.TAGGED) != 0;
|
||||||
boolean killArmorStands = (flags & Flags.ARMOR_STAND) != 0;
|
boolean killArmorStands = (flags & Flags.ARMOR_STAND) != 0;
|
||||||
|
boolean killWaterCreatures = (flags & Flags.WATER) != 0;
|
||||||
|
|
||||||
EntityProperties type = entity.getFacet(EntityProperties.class);
|
EntityProperties type = entity.getFacet(EntityProperties.class);
|
||||||
|
|
||||||
@ -116,6 +118,10 @@ public class CreatureButcher {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!killWaterCreatures && type.isWaterCreature()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
entity.remove();
|
entity.remove();
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
@ -161,4 +161,11 @@ public interface EntityProperties {
|
|||||||
* @return true if pasteable
|
* @return true if pasteable
|
||||||
*/
|
*/
|
||||||
boolean isPasteable();
|
boolean isPasteable();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test whether the entity is a water creature.
|
||||||
|
*
|
||||||
|
* @return true if water creature
|
||||||
|
*/
|
||||||
|
boolean isWaterCreature();
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,7 @@ import net.minecraft.entity.decoration.ItemFrameEntity;
|
|||||||
import net.minecraft.entity.decoration.painting.PaintingEntity;
|
import net.minecraft.entity.decoration.painting.PaintingEntity;
|
||||||
import net.minecraft.entity.mob.AmbientEntity;
|
import net.minecraft.entity.mob.AmbientEntity;
|
||||||
import net.minecraft.entity.mob.MobEntity;
|
import net.minecraft.entity.mob.MobEntity;
|
||||||
|
import net.minecraft.entity.mob.WaterCreatureEntity;
|
||||||
import net.minecraft.entity.passive.AnimalEntity;
|
import net.minecraft.entity.passive.AnimalEntity;
|
||||||
import net.minecraft.entity.passive.TameableEntity;
|
import net.minecraft.entity.passive.TameableEntity;
|
||||||
import net.minecraft.entity.passive.GolemEntity;
|
import net.minecraft.entity.passive.GolemEntity;
|
||||||
@ -148,4 +149,9 @@ public class FabricEntityProperties implements EntityProperties {
|
|||||||
public boolean isPasteable() {
|
public boolean isPasteable() {
|
||||||
return !(entity instanceof ServerPlayerEntity || entity instanceof EnderDragonEntity);
|
return !(entity instanceof ServerPlayerEntity || entity instanceof EnderDragonEntity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isWaterCreature() {
|
||||||
|
return entity instanceof WaterCreatureEntity;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -41,6 +41,7 @@ import net.minecraft.entity.item.minecart.AbstractMinecartEntity;
|
|||||||
import net.minecraft.entity.passive.AmbientEntity;
|
import net.minecraft.entity.passive.AmbientEntity;
|
||||||
import net.minecraft.entity.passive.AnimalEntity;
|
import net.minecraft.entity.passive.AnimalEntity;
|
||||||
import net.minecraft.entity.passive.TameableEntity;
|
import net.minecraft.entity.passive.TameableEntity;
|
||||||
|
import net.minecraft.entity.passive.WaterMobEntity;
|
||||||
import net.minecraft.entity.passive.GolemEntity;
|
import net.minecraft.entity.passive.GolemEntity;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||||
@ -148,4 +149,9 @@ public class ForgeEntityProperties implements EntityProperties {
|
|||||||
public boolean isPasteable() {
|
public boolean isPasteable() {
|
||||||
return !(entity instanceof ServerPlayerEntity || entity instanceof EnderDragonPartEntity);
|
return !(entity instanceof ServerPlayerEntity || entity instanceof EnderDragonPartEntity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isWaterCreature() {
|
||||||
|
return entity instanceof WaterMobEntity;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -149,4 +149,9 @@ public class SpongeEntityProperties implements EntityProperties {
|
|||||||
public boolean isPasteable() {
|
public boolean isPasteable() {
|
||||||
return !(entity instanceof Player || entity instanceof ComplexLivingPart);
|
return !(entity instanceof Player || entity instanceof ComplexLivingPart);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isWaterCreature() {
|
||||||
|
return false; // TODO api8
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren