base mod created
This commit is contained in:
@@ -0,0 +1,174 @@
|
||||
package net.minecraft.command;
|
||||
|
||||
import java.util.Objects;
|
||||
import javax.annotation.Nullable;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class CommandSenderWrapper implements ICommandSender
|
||||
{
|
||||
private final ICommandSender delegate;
|
||||
@Nullable
|
||||
private final Vec3d positionVector;
|
||||
@Nullable
|
||||
private final BlockPos position;
|
||||
@Nullable
|
||||
private final Integer permissionLevel;
|
||||
@Nullable
|
||||
private final Entity entity;
|
||||
@Nullable
|
||||
private final Boolean sendCommandFeedback;
|
||||
|
||||
public CommandSenderWrapper(ICommandSender delegateIn, @Nullable Vec3d positionVectorIn, @Nullable BlockPos positionIn, @Nullable Integer permissionLevelIn, @Nullable Entity entityIn, @Nullable Boolean sendCommandFeedbackIn)
|
||||
{
|
||||
this.delegate = delegateIn;
|
||||
this.positionVector = positionVectorIn;
|
||||
this.position = positionIn;
|
||||
this.permissionLevel = permissionLevelIn;
|
||||
this.entity = entityIn;
|
||||
this.sendCommandFeedback = sendCommandFeedbackIn;
|
||||
}
|
||||
|
||||
public static CommandSenderWrapper create(ICommandSender sender)
|
||||
{
|
||||
return sender instanceof CommandSenderWrapper ? (CommandSenderWrapper)sender : new CommandSenderWrapper(sender, (Vec3d)null, (BlockPos)null, (Integer)null, (Entity)null, (Boolean)null);
|
||||
}
|
||||
|
||||
public CommandSenderWrapper withEntity(Entity entityIn, Vec3d p_193997_2_)
|
||||
{
|
||||
return this.entity == entityIn && Objects.equals(this.positionVector, p_193997_2_) ? this : new CommandSenderWrapper(this.delegate, p_193997_2_, new BlockPos(p_193997_2_), this.permissionLevel, entityIn, this.sendCommandFeedback);
|
||||
}
|
||||
|
||||
public CommandSenderWrapper withPermissionLevel(int level)
|
||||
{
|
||||
return this.permissionLevel != null && this.permissionLevel.intValue() <= level ? this : new CommandSenderWrapper(this.delegate, this.positionVector, this.position, level, this.entity, this.sendCommandFeedback);
|
||||
}
|
||||
|
||||
public CommandSenderWrapper withSendCommandFeedback(boolean sendCommandFeedbackIn)
|
||||
{
|
||||
return this.sendCommandFeedback == null || this.sendCommandFeedback.booleanValue() && !sendCommandFeedbackIn ? new CommandSenderWrapper(this.delegate, this.positionVector, this.position, this.permissionLevel, this.entity, sendCommandFeedbackIn) : this;
|
||||
}
|
||||
|
||||
public CommandSenderWrapper computePositionVector()
|
||||
{
|
||||
return this.positionVector != null ? this : new CommandSenderWrapper(this.delegate, this.getPositionVector(), this.getPosition(), this.permissionLevel, this.entity, this.sendCommandFeedback);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the name of this object. For players this returns their username
|
||||
*/
|
||||
public String getName()
|
||||
{
|
||||
return this.entity != null ? this.entity.getName() : this.delegate.getName();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the formatted ChatComponent that will be used for the sender's username in chat
|
||||
*/
|
||||
public ITextComponent getDisplayName()
|
||||
{
|
||||
return this.entity != null ? this.entity.getDisplayName() : this.delegate.getDisplayName();
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a chat message to the CommandSender
|
||||
*/
|
||||
public void sendMessage(ITextComponent component)
|
||||
{
|
||||
if (this.sendCommandFeedback == null || this.sendCommandFeedback.booleanValue())
|
||||
{
|
||||
this.delegate.sendMessage(component);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns {@code true} if the CommandSender is allowed to execute the command, {@code false} if not
|
||||
*/
|
||||
public boolean canUseCommand(int permLevel, String commandName)
|
||||
{
|
||||
return this.permissionLevel != null && this.permissionLevel.intValue() < permLevel ? false : this.delegate.canUseCommand(permLevel, commandName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the position in the world. <b>{@code null} is not allowed!</b> If you are not an entity in the world, return
|
||||
* the coordinates 0, 0, 0
|
||||
*/
|
||||
public BlockPos getPosition()
|
||||
{
|
||||
if (this.position != null)
|
||||
{
|
||||
return this.position;
|
||||
}
|
||||
else
|
||||
{
|
||||
return this.entity != null ? this.entity.getPosition() : this.delegate.getPosition();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the position vector. <b>{@code null} is not allowed!</b> If you are not an entity in the world, return 0.0D,
|
||||
* 0.0D, 0.0D
|
||||
*/
|
||||
public Vec3d getPositionVector()
|
||||
{
|
||||
if (this.positionVector != null)
|
||||
{
|
||||
return this.positionVector;
|
||||
}
|
||||
else
|
||||
{
|
||||
return this.entity != null ? this.entity.getPositionVector() : this.delegate.getPositionVector();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the world, if available. <b>{@code null} is not allowed!</b> If you are not an entity in the world, return
|
||||
* the overworld
|
||||
*/
|
||||
public World getEntityWorld()
|
||||
{
|
||||
return this.entity != null ? this.entity.getEntityWorld() : this.delegate.getEntityWorld();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the entity associated with the command sender. MAY BE NULL!
|
||||
*/
|
||||
@Nullable
|
||||
public Entity getCommandSenderEntity()
|
||||
{
|
||||
return this.entity != null ? this.entity.getCommandSenderEntity() : this.delegate.getCommandSenderEntity();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the command sender should be sent feedback about executed commands
|
||||
*/
|
||||
public boolean sendCommandFeedback()
|
||||
{
|
||||
return this.sendCommandFeedback != null ? this.sendCommandFeedback.booleanValue() : this.delegate.sendCommandFeedback();
|
||||
}
|
||||
|
||||
public void setCommandStat(CommandResultStats.Type type, int amount)
|
||||
{
|
||||
if (this.entity != null)
|
||||
{
|
||||
this.entity.setCommandStat(type, amount);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.delegate.setCommandStat(type, amount);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Minecraft server instance
|
||||
*/
|
||||
@Nullable
|
||||
public MinecraftServer getServer()
|
||||
{
|
||||
return this.delegate.getServer();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user