Stable rift signature
This commit is contained in:
parent
3ea7e958f0
commit
8f1ef8c7bf
17 changed files with 193 additions and 61 deletions
|
@ -44,6 +44,7 @@ public final class ModelManager {
|
|||
register(ModItems.RIFT_BLADE);
|
||||
register(ModItems.RIFT_REMOVER);
|
||||
register(ModItems.RIFT_SIGNATURE);
|
||||
register(ModItems.STABILIZED_RIFT_SIGNATURE);
|
||||
register(ModItems.BOOTS_WOVEN_WORLD_THREAD);
|
||||
register(ModItems.CHESTPLATE_WOVEN_WORLD_THREAD);
|
||||
register(ModItems.HELMET_WOVEN_WORLD_THREAD);
|
||||
|
|
|
@ -91,5 +91,8 @@ public final class CraftingManager {
|
|||
|
||||
event.getRegistry().register(makeShapedRecipe(new ItemStack(ModItems.RIFT_SIGNATURE),
|
||||
" x ", "xyx", "xxx", 'x', Items.GOLD_INGOT, 'y', ModItems.STABLE_FABRIC));
|
||||
|
||||
event.getRegistry().register(makeShapedRecipe(new ItemStack(ModItems.STABILIZED_RIFT_SIGNATURE),
|
||||
" x ", "xyx", "xxx", 'x', ModItems.STABLE_FABRIC, 'y', ModItems.RIFT_SIGNATURE));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
package org.dimdev.dimdoors.shared;
|
||||
|
||||
import lombok.*;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import org.dimdev.ddutils.Location;
|
||||
import org.dimdev.ddutils.nbt.INBTStorable;
|
||||
import org.dimdev.ddutils.nbt.NBTUtils;
|
||||
import org.dimdev.ddutils.nbt.SavedToNBT;
|
||||
|
||||
@ToString @AllArgsConstructor @NoArgsConstructor
|
||||
@SavedToNBT public class RotatedLocation implements INBTStorable {
|
||||
@Getter @SavedToNBT /*private*/ Location location;
|
||||
@Getter @SavedToNBT /*private*/ float yaw;
|
||||
|
||||
@Override public NBTTagCompound writeToNBT(NBTTagCompound nbt) { return NBTUtils.writeToNBT(this, nbt); }
|
||||
@Override public void readFromNBT(NBTTagCompound nbt) { NBTUtils.readFromNBT(this, nbt); }
|
||||
}
|
|
@ -1,6 +1,5 @@
|
|||
package org.dimdev.dimdoors.shared.items;
|
||||
|
||||
import lombok.*;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.*;
|
||||
|
@ -9,14 +8,12 @@ import net.minecraft.util.text.translation.I18n;
|
|||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
import org.dimdev.ddutils.Location;
|
||||
import org.dimdev.ddutils.nbt.INBTStorable;
|
||||
import org.dimdev.ddutils.nbt.NBTUtils;
|
||||
import org.dimdev.ddutils.nbt.SavedToNBT;
|
||||
import org.dimdev.dimdoors.DimDoors;
|
||||
import net.minecraft.client.util.ITooltipFlag;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.world.World;
|
||||
import org.dimdev.dimdoors.shared.RotatedLocation;
|
||||
import org.dimdev.dimdoors.shared.blocks.ModBlocks;
|
||||
import org.dimdev.dimdoors.shared.rifts.GlobalDestination;
|
||||
import org.dimdev.dimdoors.shared.rifts.TileEntityRift;
|
||||
|
@ -31,7 +28,7 @@ public class ItemRiftSignature extends Item {
|
|||
|
||||
public ItemRiftSignature() {
|
||||
setMaxStackSize(1);
|
||||
setMaxDamage(10000);
|
||||
setMaxDamage(1);
|
||||
setCreativeTab(DimDoors.DIM_DOORS_CREATIVE_TAB);
|
||||
setUnlocalizedName(ID);
|
||||
setRegistryName(new ResourceLocation(DimDoors.MODID, ID));
|
||||
|
@ -57,7 +54,7 @@ public class ItemRiftSignature extends Item {
|
|||
}
|
||||
pos = pos.offset(side);
|
||||
|
||||
Transform source = getSource(stack);
|
||||
RotatedLocation source = getSource(stack);
|
||||
|
||||
if (source != null) {
|
||||
// Place a rift at the destination point
|
||||
|
@ -67,22 +64,22 @@ public class ItemRiftSignature extends Item {
|
|||
rift1.setRotation(source.getYaw(), 0);
|
||||
rift1.register();
|
||||
|
||||
// Place a rift at the destination point
|
||||
// Place a rift at the source point
|
||||
World sourceWorld = source.getLocation().getWorld();
|
||||
sourceWorld.setBlockState(source.location.getPos(), ModBlocks.RIFT.getDefaultState());
|
||||
sourceWorld.setBlockState(source.getLocation().getPos(), ModBlocks.RIFT.getDefaultState());
|
||||
TileEntityRift rift2 = (TileEntityRift) source.getLocation().getTileEntity();
|
||||
rift2.setSingleDestination(new GlobalDestination(rift1.getLocation()));
|
||||
rift2.setRotation(source.getYaw(), 0);
|
||||
rift2.register();
|
||||
|
||||
stack.damageItem(5000, player); // TODO: calculate damage based on position
|
||||
stack.damageItem(1, player); // TODO: calculate damage based on position?
|
||||
|
||||
clearSource(stack);
|
||||
DimDoors.chat(player, "Rift Created");
|
||||
world.playSound(player, player.getPosition(), ModSounds.RIFT_END, SoundCategory.BLOCKS, 0.6f, 1);
|
||||
} else {
|
||||
// The link signature has not been used. Store its current target as the first location.
|
||||
setSource(stack, new Transform(new Location(world, pos), player.rotationYaw));
|
||||
setSource(stack, new RotatedLocation(new Location(world, pos), player.rotationYaw));
|
||||
DimDoors.chat(player, "Location Stored in Rift Signature");
|
||||
world.playSound(player, player.getPosition(), ModSounds.RIFT_START, SoundCategory.BLOCKS, 0.6f, 1);
|
||||
}
|
||||
|
@ -90,7 +87,7 @@ public class ItemRiftSignature extends Item {
|
|||
return EnumActionResult.SUCCESS;
|
||||
}
|
||||
|
||||
public static void setSource(ItemStack itemStack, Transform destination) {
|
||||
public static void setSource(ItemStack itemStack, RotatedLocation destination) {
|
||||
if (!itemStack.hasTagCompound()) itemStack.setTagCompound(new NBTTagCompound());
|
||||
itemStack.getTagCompound().setTag("destination", destination.writeToNBT(new NBTTagCompound()));
|
||||
}
|
||||
|
@ -101,9 +98,9 @@ public class ItemRiftSignature extends Item {
|
|||
}
|
||||
}
|
||||
|
||||
public static Transform getSource(ItemStack itemStack) {
|
||||
public static RotatedLocation getSource(ItemStack itemStack) {
|
||||
if (itemStack.hasTagCompound() && itemStack.getTagCompound().hasKey("destination")) {
|
||||
Transform transform = new Transform();
|
||||
RotatedLocation transform = new RotatedLocation();
|
||||
transform.readFromNBT(itemStack.getTagCompound().getCompoundTag("destination"));
|
||||
return transform;
|
||||
} else {
|
||||
|
@ -114,20 +111,11 @@ public class ItemRiftSignature extends Item {
|
|||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void addInformation(ItemStack stack, World worldIn, List<String> tooltip, ITooltipFlag flagIn) {
|
||||
Transform transform = getSource(stack);
|
||||
RotatedLocation transform = getSource(stack);
|
||||
if (transform != null) {
|
||||
tooltip.add(I18n.translateToLocalFormatted("info.rift_signature.bound", transform.getLocation().getX(), transform.getLocation().getY(), transform.getLocation().getZ(), transform.getLocation().getDim()));
|
||||
} else {
|
||||
translateAndAdd("info.rift_signature.unbound", tooltip);
|
||||
}
|
||||
}
|
||||
|
||||
@ToString @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
@SavedToNBT public static class Transform implements INBTStorable {
|
||||
@Getter @SavedToNBT /*private*/ Location location;
|
||||
@Getter @SavedToNBT /*private*/ float yaw;
|
||||
|
||||
@Override public NBTTagCompound writeToNBT(NBTTagCompound nbt) { return NBTUtils.writeToNBT(this, nbt); }
|
||||
@Override public void readFromNBT(NBTTagCompound nbt) { NBTUtils.readFromNBT(this, nbt); }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,121 @@
|
|||
package org.dimdev.dimdoors.shared.items;
|
||||
|
||||
import net.minecraft.client.util.ITooltipFlag;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.*;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.text.translation.I18n;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
import org.dimdev.ddutils.Location;
|
||||
import org.dimdev.dimdoors.DimDoors;
|
||||
import org.dimdev.dimdoors.shared.RotatedLocation;
|
||||
import org.dimdev.dimdoors.shared.blocks.ModBlocks;
|
||||
import org.dimdev.dimdoors.shared.rifts.GlobalDestination;
|
||||
import org.dimdev.dimdoors.shared.rifts.TileEntityRift;
|
||||
import org.dimdev.dimdoors.shared.sound.ModSounds;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.dimdev.ddutils.I18nUtils.translateAndAdd;
|
||||
|
||||
public class ItemStabilizedRiftSignature extends Item { // TODO: common superclass with rift signature
|
||||
public static final String ID = "stabilized_rift_signature";
|
||||
|
||||
public ItemStabilizedRiftSignature() {
|
||||
setMaxStackSize(1);
|
||||
setMaxDamage(20);
|
||||
setCreativeTab(DimDoors.DIM_DOORS_CREATIVE_TAB);
|
||||
setUnlocalizedName(ID);
|
||||
setRegistryName(new ResourceLocation(DimDoors.MODID, ID));
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@Override
|
||||
public boolean hasEffect(ItemStack stack) {
|
||||
return stack.getTagCompound() != null && stack.getTagCompound().hasKey("destination");
|
||||
}
|
||||
|
||||
@Override
|
||||
public EnumActionResult onItemUse(EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
||||
ItemStack stack = player.getHeldItem(hand);
|
||||
// Return false on the client side to pass this request to the server
|
||||
if (world.isRemote) {
|
||||
return EnumActionResult.FAIL;
|
||||
}
|
||||
|
||||
// Fail if the player can't place a block there TODO: spawn protection, other plugin support
|
||||
if (!player.canPlayerEdit(pos, side.getOpposite(), stack)) {
|
||||
return EnumActionResult.PASS;
|
||||
}
|
||||
pos = pos.offset(side);
|
||||
|
||||
RotatedLocation source = getSource(stack);
|
||||
|
||||
if (source != null) {
|
||||
// Place a rift at the destination point
|
||||
world.setBlockState(pos, ModBlocks.RIFT.getDefaultState());
|
||||
TileEntityRift rift1 = (TileEntityRift) world.getTileEntity(pos);
|
||||
rift1.setSingleDestination(new GlobalDestination(source.getLocation()));
|
||||
rift1.setRotation(source.getYaw(), 0);
|
||||
rift1.register();
|
||||
|
||||
// Place a rift at the source point
|
||||
if (!source.getLocation().getBlockState().getBlock().equals(ModBlocks.RIFT)) {
|
||||
World sourceWorld = source.getLocation().getWorld();
|
||||
sourceWorld.setBlockState(source.getLocation().getPos(), ModBlocks.RIFT.getDefaultState());
|
||||
TileEntityRift rift2 = (TileEntityRift) source.getLocation().getTileEntity();
|
||||
rift2.setRotation(source.getYaw(), 0);
|
||||
rift2.register();
|
||||
}
|
||||
|
||||
stack.damageItem(1, player);
|
||||
|
||||
DimDoors.chat(player, "Rift Created");
|
||||
world.playSound(player, player.getPosition(), ModSounds.RIFT_END, SoundCategory.BLOCKS, 0.6f, 1);
|
||||
} else {
|
||||
// The link signature has not been used. Store its current target as the first location.
|
||||
setSource(stack, new RotatedLocation(new Location(world, pos), player.rotationYaw));
|
||||
DimDoors.chat(player, "Location Stored in Rift Signature");
|
||||
world.playSound(player, player.getPosition(), ModSounds.RIFT_START, SoundCategory.BLOCKS, 0.6f, 1);
|
||||
}
|
||||
|
||||
return EnumActionResult.SUCCESS;
|
||||
}
|
||||
|
||||
public static void setSource(ItemStack itemStack, RotatedLocation destination) {
|
||||
if (!itemStack.hasTagCompound()) itemStack.setTagCompound(new NBTTagCompound());
|
||||
itemStack.getTagCompound().setTag("destination", destination.writeToNBT(new NBTTagCompound()));
|
||||
}
|
||||
|
||||
public static void clearSource(ItemStack itemStack) {
|
||||
if (itemStack.hasTagCompound()) {
|
||||
itemStack.getTagCompound().removeTag("destination");
|
||||
}
|
||||
}
|
||||
|
||||
public static RotatedLocation getSource(ItemStack itemStack) {
|
||||
if (itemStack.hasTagCompound() && itemStack.getTagCompound().hasKey("destination")) {
|
||||
RotatedLocation transform = new RotatedLocation();
|
||||
transform.readFromNBT(itemStack.getTagCompound().getCompoundTag("destination"));
|
||||
return transform;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void addInformation(ItemStack stack, World worldIn, List<String> tooltip, ITooltipFlag flagIn) {
|
||||
RotatedLocation transform = getSource(stack);
|
||||
if (transform != null) {
|
||||
tooltip.add(I18n.translateToLocalFormatted("info.stabilized_rift_signature.bound", transform.getLocation().getX(), transform.getLocation().getY(), transform.getLocation().getZ(), transform.getLocation().getDim()));
|
||||
} else {
|
||||
translateAndAdd("info.stabilized_rift_signature.unbound", tooltip);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -29,6 +29,7 @@ public final class ModItems {
|
|||
public static final ItemRiftBlade RIFT_BLADE = new ItemRiftBlade();
|
||||
public static final ItemRiftRemover RIFT_REMOVER = new ItemRiftRemover();
|
||||
public static final ItemRiftSignature RIFT_SIGNATURE = new ItemRiftSignature();
|
||||
public static final ItemStabilizedRiftSignature STABILIZED_RIFT_SIGNATURE = new ItemStabilizedRiftSignature();
|
||||
|
||||
// Armors
|
||||
public static final ItemWovenWorldThreadArmor HELMET_WOVEN_WORLD_THREAD = new ItemWovenWorldThreadArmor("helmet_woven_world_thread", 1, EntityEquipmentSlot.HEAD);
|
||||
|
@ -56,6 +57,7 @@ public final class ModItems {
|
|||
RIFT_BLADE,
|
||||
RIFT_REMOVER,
|
||||
RIFT_SIGNATURE,
|
||||
STABILIZED_RIFT_SIGNATURE,
|
||||
HELMET_WOVEN_WORLD_THREAD,
|
||||
CHESTPLATE_WOVEN_WORLD_THREAD,
|
||||
LEGGINGS_WOVEN_WORLD_THREAD,
|
||||
|
|
|
@ -60,14 +60,14 @@ info.rift_remover1=um ihn und jegliche Spalte
|
|||
info.rift_remover2=in der Nähe zu entfernen.
|
||||
|
||||
info.rift_signature.bound=Führt zu(%d, %d, %d) in Dimension #%d
|
||||
|
||||
info.rift_signature.unbound0=Erster Klick speichert die Position;
|
||||
info.rift_signature.unbound1=zweiter Klick kreiert ein Paar von Spalten,
|
||||
info.rift_signature.unbound2=welche zu den zwei Positionen führen.
|
||||
|
||||
info.rift_signature.stable0=Erster Klick speichert die Position,
|
||||
info.rift_signature.stable1=weitere Klicks kreieren Spalte, die
|
||||
info.rift_signature.stable2=die erste und die aktuelle Position verbinden.
|
||||
info.stabilized_rift_signature.bound=Führt zu(%d, %d, %d) in Dimension #%d
|
||||
info.stabilized_rift_signature.unbound0=Erster Klick speichert die Position,
|
||||
info.stabilized_rift_signature.unbound1=weitere Klicks kreieren Spalte, die
|
||||
info.stabilized_rift_signature.unbound2=die erste und die aktuelle Position verbinden.
|
||||
|
||||
info.unstable_dimensional_door=Vorsicht: Führt zu einem zufälligen Ziel
|
||||
|
||||
|
|
|
@ -66,14 +66,14 @@ info.rift_remover1=to remove it and
|
|||
info.rift_remover2=any nearby rifts.
|
||||
|
||||
info.rift_signature.bound=Leads to (%d, %d, %d) at dimension #%d
|
||||
|
||||
info.rift_signature.unbound0=First click stores a location;
|
||||
info.rift_signature.unbound1=second click creates a pair of
|
||||
info.rift_signature.unbound2=rifts linking the two locations.
|
||||
|
||||
info.rift_signature.stable0=First click stores a location,
|
||||
info.rift_signature.stable1=other clicks create rifts linking
|
||||
info.rift_signature.stable2=the first and last locations together.
|
||||
info.stabilized_rift_signature.bound=Leads to (%d, %d, %d) at dimension #%d
|
||||
info.stabilized_rift_signature.unbound0=First click stores a location,
|
||||
info.stabilized_rift_signature.unbound1=other clicks create rifts linking
|
||||
info.stabilized_rift_signature.unbound2=the first and last locations together.
|
||||
|
||||
info.unstable_dimensional_door=Caution: Leads to random destination
|
||||
|
||||
|
|
|
@ -61,14 +61,14 @@ info.rift_remover1=exposée pour l'enlever ainsi
|
|||
info.rift_remover2=que celles à proximité.
|
||||
|
||||
info.rift_signature.bound=Mène aux coordonnées (%d, %d, %d) à la dimension #%d
|
||||
|
||||
info.rift_signature.unbound0=Le premier clic stocke un emplacement ;
|
||||
info.rift_signature.unbound1=le deuxième clic crée une paire de
|
||||
info.rift_signature.unbound2=fissures qui lient les deux emplacements.
|
||||
|
||||
info.rift_signature.stable0=Le premier clic stocke un emplacement,
|
||||
info.rift_signature.stable1=les autres clics créent des fissurent qui lient
|
||||
info.rift_signature.stable2=le premier et les derniers emplacements ensemble.
|
||||
info.stabilized_rift_signature.bound=Mène aux coordonnées (%d, %d, %d) à la dimension #%d
|
||||
info.stabilized_rift_signature.unbound0=Le premier clic stocke un emplacement,
|
||||
info.stabilized_rift_signature.unbound1=les autres clics créent des fissurent qui lient
|
||||
info.stabilized_rift_signature.unbound2=le premier et les derniers emplacements ensemble.
|
||||
|
||||
info.unstable_dimensional_door=Attention : mène vers une destination aléatoire
|
||||
|
||||
|
|
|
@ -60,14 +60,14 @@ info.rift_remover1=esposta per rimuovere quello
|
|||
info.rift_remover2=e altre fratture vicine.
|
||||
|
||||
info.rift_signature.bound=Porta a (%d, %d, %d) nella dimensione #%d
|
||||
|
||||
info.rift_signature.unbound0=Al primo clic salva la posizione; al
|
||||
info.rift_signature.unbound1=secondo clic crea un paio di fratture
|
||||
info.rift_signature.unbound2=che collegano le due posizioni.
|
||||
|
||||
info.rift_signature.stable0=Al primo clic salva la posizione; al
|
||||
info.rift_signature.stable1=secondo clic crea fratture che
|
||||
info.rift_signature.stable2=collegano la prima e ultima posizione.
|
||||
info.stabilized_rift_signature.bound=Porta a (%d, %d, %d) nella dimensione #%d
|
||||
info.stabilized_rift_signature.unbound0=Al primo clic salva la posizione; al
|
||||
info.stabilized_rift_signature.unbound1=secondo clic crea fratture che
|
||||
info.stabilized_rift_signature.unbound2=collegano la prima e ultima posizione.
|
||||
|
||||
info.unstable_dimensional_door=Attenziione: Porta a una destinazione casuale
|
||||
|
||||
|
|
|
@ -60,14 +60,14 @@ info.rift_remover1=om het te verwijderen en
|
|||
info.rift_remover2=alle dichtbijzijnde scheuren.
|
||||
|
||||
info.rift_signature.bound=Leidt naar (%d, %d, %d) in dimensie #%d
|
||||
|
||||
info.rift_signature.unbound0=De eerste klik slaat een locatie op;
|
||||
info.rift_signature.unbound1=de tweede creëert een paar scheuren
|
||||
info.rift_signature.unbound2=die beide locaties met elkaar verbinden.
|
||||
|
||||
info.rift_signature.stable0=De eerste klik slaat een locatie op,
|
||||
info.rift_signature.stable1=andere klikken creëren scheuren die de eerste
|
||||
info.rift_signature.stable2=en laatste locaties met elkaar verbinden.
|
||||
info.stabilized_rift_signature.bound=Leidt naar (%d, %d, %d) in dimensie #%d
|
||||
info.stabilized_rift_signature.unbound0=De eerste klik slaat een locatie op,
|
||||
info.stabilized_rift_signature.unbound1=andere klikken creëren scheuren die de eerste
|
||||
info.stabilized_rift_signature.unbound2=en laatste locaties met elkaar verbinden.
|
||||
|
||||
info.unstable_dimensional_door=Pas op: Leidt naar een willekeurige bestemming
|
||||
|
||||
|
|
|
@ -62,14 +62,14 @@ info.rift_remover1=expusa pentru a sterge acea
|
|||
info.rift_remover2=fisură și ori ce fisuri apropiate.
|
||||
|
||||
info.rift_signature.bound=Duce la (%d, %d, %d) în dimensiunea #%d
|
||||
|
||||
info.rift_signature.unbound0=Primul clic stochează o locație;
|
||||
info.rift_signature.unbound1=al doilea clic crează o pereche
|
||||
info.rift_signature.unbound2=de fisuri conectând cele doua locații.
|
||||
|
||||
info.rift_signature.stable0=Primul clic stochează o locație;
|
||||
info.rift_signature.stable1=alte clicuri crează fisuri conectând
|
||||
info.rift_signature.stable2=prima și ultima conectiuni împreună.
|
||||
info.stabilized_rift_signature.bound=Duce la (%d, %d, %d) în dimensiunea #%d
|
||||
info.stabilized_rift_signature.unbound0=Primul clic stochează o locație;
|
||||
info.stabilized_rift_signature.unbound1=alte clicuri crează fisuri conectând
|
||||
info.stabilized_rift_signature.unbound2=prima și ultima conectiuni împreună.
|
||||
|
||||
info.unstable_dimensional_door=Atenție: Duce la o destinație aleatorie
|
||||
|
||||
|
|
|
@ -60,14 +60,14 @@ info.rift_remover1=чтобы убрать его и
|
|||
info.rift_remover2=другие ближайшие разломы.
|
||||
|
||||
info.rift_signature.bound=Ведёт в (%d, %d, %d) в измерение #%d
|
||||
|
||||
info.rift_signature.unbound0=Первое нажатие сохраняет расположение;
|
||||
info.rift_signature.unbound1=второе нажатие создаёт пару
|
||||
info.rift_signature.unbound2=разломов, соединяющих два расположения.
|
||||
|
||||
info.rift_signature.stable0=Первое нажатие сохраняет расположение,
|
||||
info.rift_signature.stable1=остальные нажатия создают разломы, соединяющие
|
||||
info.rift_signature.stable2=первое и последнее расположения вместе.
|
||||
info.stabilized_rift_signature.bound=Ведёт в (%d, %d, %d) в измерение #%d
|
||||
info.stabilized_rift_signature.unbound0=Первое нажатие сохраняет расположение,
|
||||
info.stabilized_rift_signature.unbound1=остальные нажатия создают разломы, соединяющие
|
||||
info.stabilized_rift_signature.unbound2=первое и последнее расположения вместе.
|
||||
|
||||
info.unstable_dimensional_door=Внимание: Ведёт неизвестно куда
|
||||
|
||||
|
|
|
@ -60,14 +60,14 @@ info.rift_remover1=来移除它以及附近的其他
|
|||
info.rift_remover2=裂痕.
|
||||
|
||||
info.rift_signature.bound=指向(%d, %d, %d) 位于#%d
|
||||
|
||||
info.rift_signature.unbound0=第一次点击记录一个位置;
|
||||
info.rift_signature.unbound1=第二次点击在两地间创造
|
||||
info.rift_signature.unbound2=一对相互连接的裂痕.
|
||||
|
||||
info.rift_signature.stable0=首次点击记录一个位置,
|
||||
info.rift_signature.stable1=再次点击生成连接两地的
|
||||
info.rift_signature.stable2=裂痕.
|
||||
info.stabilized_rift_signature.bound=指向(%d, %d, %d) 位于#%d
|
||||
info.stabilized_rift_signature.unbound0=首次点击记录一个位置,
|
||||
info.stabilized_rift_signature.unbound1=再次点击生成连接两地的
|
||||
info.stabilized_rift_signature.unbound2=裂痕.
|
||||
|
||||
info.unstable_dimensional_door=注意: 将会随机传送
|
||||
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
{
|
||||
"parent": "item/handheld",
|
||||
"textures": {
|
||||
"layer0": "dimdoors:items/stabilized_rift_sig"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "item/handheld",
|
||||
"textures": {
|
||||
"layer0": "dimdoors:items/stabilized_rift_signature"
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
Loading…
Add table
Reference in a new issue