-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
8c05515
commit c21d3ef
Showing
15 changed files
with
1,153 additions
and
16 deletions.
There are no files selected for viewing
99 changes: 98 additions & 1 deletion
99
...2/src/main/java/org/imesense/dynamicspawncontrol/gameplay/commands/cmdAdminDumpBlock.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,106 @@ | ||
package org.imesense.dynamicspawncontrol.gameplay.commands; | ||
|
||
import net.minecraft.block.Block; | ||
import net.minecraft.block.properties.IProperty; | ||
import net.minecraft.block.state.IBlockState; | ||
import net.minecraft.command.CommandBase; | ||
import net.minecraft.command.ICommandSender; | ||
import net.minecraft.entity.player.EntityPlayer; | ||
import net.minecraft.nbt.NBTTagCompound; | ||
import net.minecraft.server.MinecraftServer; | ||
import net.minecraft.tileentity.TileEntity; | ||
import net.minecraft.util.math.BlockPos; | ||
import net.minecraft.util.math.RayTraceResult; | ||
import net.minecraft.util.text.TextComponentString; | ||
import net.minecraft.util.text.TextFormatting; | ||
import org.imesense.dynamicspawncontrol.technical.customlibrary.Log; | ||
import org.imesense.dynamicspawncontrol.technical.customlibrary.RayTrace; | ||
|
||
import javax.annotation.Nonnull; | ||
import java.util.Objects; | ||
|
||
/** | ||
* | ||
*/ | ||
public final class cmdAdminDumpBlock | ||
public final class cmdAdminDumpBlock extends CommandBase | ||
{ | ||
/** | ||
* | ||
* @param nameClass | ||
*/ | ||
public cmdAdminDumpBlock(final String nameClass) | ||
{ | ||
Log.writeDataToLogFile(Log.TypeLog[0], nameClass); | ||
} | ||
|
||
/** | ||
* | ||
* @return | ||
*/ | ||
@Nonnull | ||
@Override | ||
public String getName() | ||
{ | ||
return "dsc_dump_block"; | ||
} | ||
|
||
/** | ||
* | ||
* @param sender | ||
* @return | ||
*/ | ||
@Nonnull | ||
@Override | ||
public String getUsage(@Nonnull ICommandSender sender) | ||
{ | ||
return "/dsc_dump_block"; | ||
} | ||
|
||
/** | ||
* | ||
* @param server | ||
* @param sender | ||
* @param args | ||
*/ | ||
@Override | ||
public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String... args) | ||
{ | ||
if (sender instanceof EntityPlayer) | ||
{ | ||
EntityPlayer player = (EntityPlayer) sender; | ||
RayTraceResult result = RayTrace.getMovingObjectPositionFromPlayer(player.getEntityWorld(), player, false); | ||
|
||
if (result != null && result.typeOfHit == RayTraceResult.Type.BLOCK) | ||
{ | ||
BlockPos blockPos = result.getBlockPos(); | ||
IBlockState state = player.getEntityWorld().getBlockState(blockPos); | ||
int blockId = Block.getIdFromBlock(state.getBlock()); | ||
|
||
sender.sendMessage(new TextComponentString(TextFormatting.GOLD + "Block ID: " + blockId)); | ||
Log.writeDataToLogFile(Log.TypeLog[0], "Block ID: " + blockId); | ||
sender.sendMessage(new TextComponentString(TextFormatting.GOLD + Objects.requireNonNull(state.getBlock().getRegistryName()).toString())); | ||
Log.writeDataToLogFile(Log.TypeLog[0], Objects.requireNonNull(state.getBlock().getRegistryName()).toString()); | ||
|
||
for (IProperty<?> key : state.getPropertyKeys()) | ||
{ | ||
String value = state.getValue(key).toString(); | ||
sender.sendMessage(new TextComponentString("State: " + key.getName() + " = " + value)); | ||
Log.writeDataToLogFile(Log.TypeLog[0], "State: " + key.getName() + " = " + value); | ||
} | ||
|
||
TileEntity tileEntity = player.getEntityWorld().getTileEntity(blockPos); | ||
|
||
if (tileEntity != null) | ||
{ | ||
NBTTagCompound nbt = tileEntity.writeToNBT(new NBTTagCompound()); | ||
sender.sendMessage(new TextComponentString("NBT Tags: " + nbt)); | ||
Log.writeDataToLogFile(Log.TypeLog[0], "NBT Tags: " + nbt); | ||
} | ||
} | ||
} | ||
else | ||
{ | ||
sender.sendMessage(new TextComponentString(TextFormatting.RED + "This command can only be used by players!")); | ||
} | ||
} | ||
} |
81 changes: 80 additions & 1 deletion
81
.../src/main/java/org/imesense/dynamicspawncontrol/gameplay/commands/cmdAdminDumpEntity.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,88 @@ | ||
package org.imesense.dynamicspawncontrol.gameplay.commands; | ||
|
||
import net.minecraft.client.Minecraft; | ||
import net.minecraft.command.CommandBase; | ||
import net.minecraft.command.ICommandSender; | ||
import net.minecraft.entity.Entity; | ||
import net.minecraft.entity.player.EntityPlayer; | ||
import net.minecraft.server.MinecraftServer; | ||
import net.minecraft.util.math.RayTraceResult; | ||
import net.minecraft.util.text.TextComponentString; | ||
import net.minecraft.util.text.TextFormatting; | ||
import org.imesense.dynamicspawncontrol.technical.customlibrary.Log; | ||
|
||
import javax.annotation.Nonnull; | ||
|
||
/** | ||
* | ||
*/ | ||
public final class cmdAdminDumpEntity | ||
public final class cmdAdminDumpEntity extends CommandBase | ||
{ | ||
/** | ||
* | ||
* @param nameClass | ||
*/ | ||
public cmdAdminDumpEntity(final String nameClass) | ||
{ | ||
Log.writeDataToLogFile(Log.TypeLog[0], nameClass); | ||
} | ||
|
||
/** | ||
* | ||
* @return | ||
*/ | ||
@Nonnull | ||
@Override | ||
public String getName() | ||
{ | ||
return "dsc_dump_entity"; | ||
} | ||
|
||
/** | ||
* | ||
* @param sender | ||
* @return | ||
*/ | ||
@Nonnull | ||
@Override | ||
public String getUsage(@Nonnull ICommandSender sender) | ||
{ | ||
return "/dsc_dump_entity"; | ||
} | ||
|
||
/** | ||
* | ||
* @param server | ||
* @param sender | ||
* @param args | ||
*/ | ||
@Override | ||
public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String... args) | ||
{ | ||
if (sender instanceof EntityPlayer) | ||
{ | ||
RayTraceResult result = Minecraft.getMinecraft().objectMouseOver; | ||
|
||
if (result != null && result.typeOfHit == RayTraceResult.Type.ENTITY) | ||
{ | ||
Entity target = result.entityHit; | ||
String entityInfo = "Entity Info: "; | ||
|
||
entityInfo += "Name: " + target.getName() + ", "; | ||
entityInfo += "ID: " + target.getEntityId() + ", "; | ||
entityInfo += "Class: " + target.getClass().getSimpleName(); | ||
|
||
sender.sendMessage(new TextComponentString(entityInfo)); | ||
Log.writeDataToLogFile(Log.TypeLog[0], entityInfo); | ||
} | ||
else | ||
{ | ||
sender.sendMessage(new TextComponentString(TextFormatting.RED + "The entity is not selected!")); | ||
} | ||
} | ||
else | ||
{ | ||
sender.sendMessage(new TextComponentString(TextFormatting.RED + "This command can only be used by players!")); | ||
} | ||
} | ||
} |
152 changes: 151 additions & 1 deletion
152
....2/src/main/java/org/imesense/dynamicspawncontrol/gameplay/commands/cmdAdminDumpItem.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,159 @@ | ||
package org.imesense.dynamicspawncontrol.gameplay.commands; | ||
|
||
import net.minecraft.command.CommandBase; | ||
import net.minecraft.command.ICommandSender; | ||
import net.minecraft.entity.player.EntityPlayer; | ||
import net.minecraft.item.Item; | ||
import net.minecraft.item.ItemStack; | ||
import net.minecraft.nbt.NBTBase; | ||
import net.minecraft.nbt.NBTTagCompound; | ||
import net.minecraft.nbt.NBTTagList; | ||
import net.minecraft.server.MinecraftServer; | ||
import net.minecraft.util.EnumHand; | ||
import net.minecraft.util.text.TextComponentString; | ||
import net.minecraft.util.text.TextFormatting; | ||
import net.minecraftforge.common.util.Constants; | ||
import org.apache.commons.lang3.StringUtils; | ||
import org.imesense.dynamicspawncontrol.technical.customlibrary.Log; | ||
|
||
import javax.annotation.Nonnull; | ||
import java.util.Objects; | ||
|
||
/** | ||
* | ||
*/ | ||
public final class cmdAdminDumpItem | ||
public final class cmdAdminDumpItem extends CommandBase | ||
{ | ||
/** | ||
* | ||
* @param nameClass | ||
*/ | ||
public cmdAdminDumpItem(final String nameClass) | ||
{ | ||
Log.writeDataToLogFile(Log.TypeLog[0], nameClass); | ||
} | ||
|
||
/** | ||
* | ||
* @return | ||
*/ | ||
@Nonnull | ||
@Override | ||
public String getName() | ||
{ | ||
return "dsc_dump_item"; | ||
} | ||
|
||
/** | ||
* | ||
* @param sender | ||
* @return | ||
*/ | ||
@Nonnull | ||
@Override | ||
public String getUsage(@Nonnull ICommandSender sender) | ||
{ | ||
return "/dsc_dump_item"; | ||
} | ||
|
||
/** | ||
* | ||
* @param server | ||
* @param sender | ||
* @param args | ||
*/ | ||
@Override | ||
public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String... args) | ||
{ | ||
if (sender instanceof EntityPlayer) | ||
{ | ||
EntityPlayer player = (EntityPlayer) sender; | ||
ItemStack heldItem = player.getHeldItem(EnumHand.MAIN_HAND); | ||
Item item = heldItem.getItem(); | ||
sender.sendMessage(new TextComponentString(TextFormatting.GOLD + Objects.requireNonNull(item.getRegistryName()).toString())); | ||
Log.writeDataToLogFile(Log.TypeLog[0], Objects.requireNonNull(item.getRegistryName()).toString()); | ||
NBTTagCompound nbt = heldItem.getTagCompound(); | ||
if (nbt != null) | ||
{ | ||
dumpNBT(sender, 2, nbt); | ||
} | ||
} | ||
else | ||
{ | ||
sender.sendMessage(new TextComponentString(TextFormatting.RED + "Эту команду могут использовать только игроки!")); | ||
} | ||
} | ||
|
||
/** | ||
* | ||
* @param sender | ||
* @param indent | ||
* @param nbt | ||
*/ | ||
private static void dumpNBT(ICommandSender sender, int indent, NBTTagCompound nbt) | ||
{ | ||
for (String key : nbt.getKeySet()) | ||
{ | ||
NBTBase base = nbt.getTag(key); | ||
byte id = base.getId(); | ||
switch (id) | ||
{ | ||
case Constants.NBT.TAG_INT: | ||
sender.sendMessage(new TextComponentString(StringUtils.repeat(' ', indent) + "(Int) " + key + " = " + nbt.getInteger(key))); | ||
Log.writeDataToLogFile(Log.TypeLog[0], StringUtils.repeat(' ', indent) + "(Int) " + key + " = " + nbt.getInteger(key)); | ||
break; | ||
case Constants.NBT.TAG_LONG: | ||
sender.sendMessage(new TextComponentString(StringUtils.repeat(' ', indent) + "(Long) " + key + " = " + nbt.getLong(key))); | ||
Log.writeDataToLogFile(Log.TypeLog[0], StringUtils.repeat(' ', indent) + "(Long) " + key + " = " + nbt.getLong(key)); | ||
break; | ||
case Constants.NBT.TAG_DOUBLE: | ||
sender.sendMessage(new TextComponentString(StringUtils.repeat(' ', indent) + "(Double) " + key + " = " + nbt.getDouble(key))); | ||
Log.writeDataToLogFile(Log.TypeLog[0], StringUtils.repeat(' ', indent) + "(Double) " + key + " = " + nbt.getDouble(key)); | ||
break; | ||
case Constants.NBT.TAG_FLOAT: | ||
sender.sendMessage(new TextComponentString(StringUtils.repeat(' ', indent) + "(Float) " + key + " = " + nbt.getFloat(key))); | ||
Log.writeDataToLogFile(Log.TypeLog[0], StringUtils.repeat(' ', indent) + "(Float) " + key + " = " + nbt.getFloat(key)); | ||
break; | ||
case Constants.NBT.TAG_STRING: | ||
sender.sendMessage(new TextComponentString(StringUtils.repeat(' ', indent) + "(String) " + key + " = " + nbt.getString(key))); | ||
Log.writeDataToLogFile(Log.TypeLog[0], StringUtils.repeat(' ', indent) + "(String) " + key + " = " + nbt.getString(key)); | ||
break; | ||
case Constants.NBT.TAG_BYTE: | ||
sender.sendMessage(new TextComponentString(StringUtils.repeat(' ', indent) + "(Byte) " + key + " = " + nbt.getByte(key))); | ||
Log.writeDataToLogFile(Log.TypeLog[0], StringUtils.repeat(' ', indent) + "(Byte) " + key + " = " + nbt.getByte(key)); | ||
break; | ||
case Constants.NBT.TAG_SHORT: | ||
sender.sendMessage(new TextComponentString(StringUtils.repeat(' ', indent) + "(Short) " + key + " = " + nbt.getShort(key))); | ||
Log.writeDataToLogFile(Log.TypeLog[0], StringUtils.repeat(' ', indent) + "(Short) " + key + " = " + nbt.getShort(key)); | ||
break; | ||
case Constants.NBT.TAG_LIST: | ||
sender.sendMessage(new TextComponentString(StringUtils.repeat(' ', indent) + "(List) " + key)); | ||
Log.writeDataToLogFile(Log.TypeLog[0], StringUtils.repeat(' ', indent) + "(List) " + key); | ||
NBTBase b = nbt.getTag(key); | ||
|
||
if (((NBTTagList)b).getTagType() == Constants.NBT.TAG_COMPOUND) | ||
{ | ||
NBTTagList list = nbt.getTagList(key, Constants.NBT.TAG_COMPOUND); | ||
int idx = 0; | ||
for (NBTBase bs : list) | ||
{ | ||
sender.sendMessage(new TextComponentString(TextFormatting.YELLOW + StringUtils.repeat(' ', indent+2) + "Index " + idx)); | ||
Log.writeDataToLogFile(Log.TypeLog[0], StringUtils.repeat(' ', indent+2) + "Index " + idx); | ||
idx++; | ||
dumpNBT(sender, indent + 4, (NBTTagCompound) bs); | ||
} | ||
} | ||
break; | ||
case Constants.NBT.TAG_COMPOUND: | ||
sender.sendMessage(new TextComponentString(StringUtils.repeat(' ', indent) + "(NBT) " + key)); | ||
Log.writeDataToLogFile(Log.TypeLog[0], StringUtils.repeat(' ', indent) + "(NBT) " + key); | ||
dumpNBT(sender, indent + 2, nbt.getCompoundTag(key)); | ||
break; | ||
default: | ||
sender.sendMessage(new TextComponentString(StringUtils.repeat(' ', indent) + "(?) " + key)); | ||
Log.writeDataToLogFile(Log.TypeLog[0], StringUtils.repeat(' ', indent) + "(?) " + key); | ||
break; | ||
} | ||
} | ||
} | ||
} |
Oops, something went wrong.