diff --git a/src/api/java/appeng/api/parts/IPart.java b/src/api/java/appeng/api/parts/IPart.java index 9a5a9b42c..af116ac8a 100644 --- a/src/api/java/appeng/api/parts/IPart.java +++ b/src/api/java/appeng/api/parts/IPart.java @@ -46,6 +46,8 @@ import net.minecraft.world.IBlockReader; import net.minecraft.world.World; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.model.data.EmptyModelData; +import net.minecraftforge.client.model.data.IModelData; import net.minecraftforge.common.capabilities.Capability; import appeng.api.networking.IGridNode; @@ -346,13 +348,14 @@ public interface IPart extends IBoxProvider, ICustomCableConnection } /** - * Flag to be passed to the renderer. + * Additional model data to be passed to the models for rendering this part. * - * @return flag or null + * @return The model data to pass to the model. Only useful if custom models are used. */ - default Long getRenderFlag() + @Nonnull + default IModelData getModelData() { - return null; + return EmptyModelData.INSTANCE; } } diff --git a/src/api/java/appeng/api/parts/IPartBakedModel.java b/src/api/java/appeng/api/parts/IPartBakedModel.java deleted file mode 100644 index 14f10c737..000000000 --- a/src/api/java/appeng/api/parts/IPartBakedModel.java +++ /dev/null @@ -1,16 +0,0 @@ - -package appeng.api.parts; - - -import java.util.List; -import java.util.Random; - -import javax.annotation.Nullable; - -import net.minecraft.client.renderer.model.BakedQuad; - - -public interface IPartBakedModel -{ - List getPartQuads( @Nullable Long partFlags, Random rand ); -} diff --git a/src/main/java/appeng/client/render/cablebus/CableBusBakedModel.java b/src/main/java/appeng/client/render/cablebus/CableBusBakedModel.java index acab58b1d..f82d02605 100644 --- a/src/main/java/appeng/client/render/cablebus/CableBusBakedModel.java +++ b/src/main/java/appeng/client/render/cablebus/CableBusBakedModel.java @@ -31,13 +31,11 @@ import java.util.Random; import javax.annotation.Nullable; import net.minecraft.block.BlockState; -import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.model.BakedQuad; import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.ItemCameraTransforms; import net.minecraft.client.renderer.model.ItemOverrideList; -import net.minecraft.client.renderer.texture.AtlasTexture; import net.minecraft.client.renderer.texture.MissingTextureSprite; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.util.Direction; @@ -46,7 +44,6 @@ import net.minecraftforge.client.MinecraftForgeClient; import net.minecraftforge.client.model.data.EmptyModelData; import net.minecraftforge.client.model.data.IModelData; -import appeng.api.parts.IPartBakedModel; import appeng.api.parts.IPartModel; import appeng.api.util.AECableType; import appeng.api.util.AEColor; @@ -116,6 +113,11 @@ public class CableBusBakedModel implements IBakedModel continue; } + IModelData partModelData = renderState.getPartModelData().get(facing); + if (partModelData == null) { + partModelData = EmptyModelData.INSTANCE; + } + for( ResourceLocation model : partModel.getModels() ) { IBakedModel bakedModel = this.partModels.get( model ); @@ -125,15 +127,7 @@ public class CableBusBakedModel implements IBakedModel throw new IllegalStateException( "Trying to use an unregistered part model: " + model ); } - List partQuads; - if( bakedModel instanceof IPartBakedModel ) - { - partQuads = ( (IPartBakedModel) bakedModel ).getPartQuads( renderState.getPartFlags().get( facing ), rand ); - } - else - { - partQuads = bakedModel.getQuads( state, null, rand ); - } + List partQuads = bakedModel.getQuads(state, null, rand, partModelData); // Rotate quads accordingly QuadRotator rotator = new QuadRotator(); diff --git a/src/main/java/appeng/client/render/cablebus/CableBusRenderState.java b/src/main/java/appeng/client/render/cablebus/CableBusRenderState.java index 02e085cbe..de485bd8e 100644 --- a/src/main/java/appeng/client/render/cablebus/CableBusRenderState.java +++ b/src/main/java/appeng/client/render/cablebus/CableBusRenderState.java @@ -30,6 +30,7 @@ import net.minecraft.util.Direction; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.world.ILightReader; +import net.minecraftforge.client.model.data.IModelData; import net.minecraftforge.client.model.data.ModelProperty; import appeng.api.parts.IPartModel; @@ -84,7 +85,8 @@ public class CableBusRenderState // facades on this cable bus private List boundingBoxes = new ArrayList<>(); - private EnumMap partFlags = new EnumMap<>( Direction.class ); + // Additional model data passed to the part models + private EnumMap partModelData = new EnumMap<>( Direction.class ); public CableCoreType getCoreType() { @@ -186,9 +188,9 @@ public class CableBusRenderState return this.boundingBoxes; } - public EnumMap getPartFlags() + public EnumMap getPartModelData() { - return this.partFlags; + return this.partModelData; } @Override @@ -203,7 +205,7 @@ public class CableBusRenderState result = prime * result + ( ( this.channelsOnSide == null ) ? 0 : this.channelsOnSide.hashCode() ); result = prime * result + ( ( this.connectionTypes == null ) ? 0 : this.connectionTypes.hashCode() ); result = prime * result + ( ( this.coreType == null ) ? 0 : this.coreType.hashCode() ); - result = prime * result + ( ( this.partFlags == null ) ? 0 : this.partFlags.hashCode() ); + result = prime * result + ( ( this.partModelData == null ) ? 0 : this.partModelData.hashCode() ); return result; } @@ -228,6 +230,6 @@ public class CableBusRenderState return this.cableColor == other.cableColor && this.cableType == other.cableType && this.coreType == other.coreType && Objects .equals( this.attachmentConnections, other.attachmentConnections ) && Objects.equals( this.cableBusAdjacent, other.cableBusAdjacent ) && Objects .equals( this.channelsOnSide, other.channelsOnSide ) && Objects.equals( this.connectionTypes, other.connectionTypes ) && Objects - .equals( this.partFlags, other.partFlags ); + .equals( this.partModelData, other.partModelData); } } diff --git a/src/main/java/appeng/client/render/cablebus/P2PTunnelFrequencyBakedModel.java b/src/main/java/appeng/client/render/cablebus/P2PTunnelFrequencyBakedModel.java index c24890a4a..5b1318bf2 100644 --- a/src/main/java/appeng/client/render/cablebus/P2PTunnelFrequencyBakedModel.java +++ b/src/main/java/appeng/client/render/cablebus/P2PTunnelFrequencyBakedModel.java @@ -12,18 +12,19 @@ import com.google.common.cache.CacheBuilder; import net.minecraft.block.BlockState; import net.minecraft.client.renderer.model.BakedQuad; -import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.util.Direction; -import appeng.api.parts.IPartBakedModel; import appeng.api.util.AEColor; import appeng.util.Platform; +import net.minecraftforge.client.model.data.IDynamicBakedModel; +import net.minecraftforge.client.model.data.IModelData; -public class P2PTunnelFrequencyBakedModel implements IBakedModel, IPartBakedModel +public class P2PTunnelFrequencyBakedModel implements IDynamicBakedModel { + private final TextureAtlasSprite texture; private final static Cache> modelCache = CacheBuilder.newBuilder().maximumSize( 100 ).build(); @@ -41,36 +42,16 @@ public class P2PTunnelFrequencyBakedModel implements IBakedModel, IPartBakedMode } @Override - public List getPartQuads( Long partFlags, Random rand ) + public List getQuads( BlockState state, Direction side, Random rand, IModelData modelData ) { - try - { - return modelCache.get( partFlags, () -> - { - short frequency = 0; - boolean active = false; - if( partFlags != null ) - { - frequency = (short) ( partFlags.longValue() & 0xffffL ); - active = ( partFlags.longValue() & 0x10000L ) != 0; - } - return this.getQuadsForFrequency( frequency, active ); - } ); - } - catch( ExecutionException e ) + if( side != null || !(modelData instanceof P2PTunnelFrequencyModelData) ) { return Collections.emptyList(); } - } - @Override - public List getQuads( BlockState state, Direction side, Random rand ) - { - if( side != null ) - { - return Collections.emptyList(); - } - return this.getPartQuads( null, rand ); + P2PTunnelFrequencyModelData freqModelData = (P2PTunnelFrequencyModelData) modelData; + + return this.getPartQuads( freqModelData.getFrequency()); } private List getQuadsForFrequency( final short frequency, final boolean active ) @@ -94,7 +75,7 @@ public class P2PTunnelFrequencyBakedModel implements IBakedModel, IPartBakedMode } else { - final float cv[] = c.dye.getColorComponentValues(); + final float[] cv = c.dye.getColorComponentValues(); cb.setColorRGB( cv[0] * 0.5f, cv[1] * 0.5f, cv[2] * 0.5f ); } @@ -108,6 +89,23 @@ public class P2PTunnelFrequencyBakedModel implements IBakedModel, IPartBakedMode return cb.getOutput(); } + private List getPartQuads(long partFlags) + { + try + { + return modelCache.get( partFlags, () -> + { + short frequency = (short) ( partFlags & 0xffffL ); + boolean active = ( partFlags & 0x10000L ) != 0; + return this.getQuadsForFrequency( frequency, active ); + } ); + } + catch( ExecutionException e ) + { + return Collections.emptyList(); + } + } + @Override public boolean isAmbientOcclusion() { diff --git a/src/main/java/appeng/client/render/cablebus/P2PTunnelFrequencyModel.java b/src/main/java/appeng/client/render/cablebus/P2PTunnelFrequencyModel.java index 0e9fd7633..fc133b6c7 100644 --- a/src/main/java/appeng/client/render/cablebus/P2PTunnelFrequencyModel.java +++ b/src/main/java/appeng/client/render/cablebus/P2PTunnelFrequencyModel.java @@ -9,41 +9,25 @@ import javax.annotation.Nullable; import com.mojang.datafixers.util.Pair; -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.client.renderer.model.IModelTransform; -import net.minecraft.client.renderer.model.IUnbakedModel; -import net.minecraft.client.renderer.model.Material; -import net.minecraft.client.renderer.model.ModelBakery; +import net.minecraft.client.renderer.model.*; import net.minecraft.client.renderer.texture.AtlasTexture; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.util.ResourceLocation; import appeng.core.AppEng; +import net.minecraftforge.client.model.IModelConfiguration; +import net.minecraftforge.client.model.geometry.IModelGeometry; -public class P2PTunnelFrequencyModel implements IUnbakedModel +public class P2PTunnelFrequencyModel implements IModelGeometry { private static final Material TEXTURE = new Material( AtlasTexture.LOCATION_BLOCKS_TEXTURE, new ResourceLocation( AppEng.MOD_ID, "parts/p2p_tunnel_frequency" ) ); @Override - public Collection getDependencies() - { - return Collections.emptyList(); - } - - @Override - public Collection getTextures( Function modelGetter, Set> missingTextureErrors ) - { - return Collections.singleton( TEXTURE ); - } - - @Nullable - @Override - public IBakedModel bakeModel( ModelBakery modelBakeryIn, Function spriteGetterIn, IModelTransform transformIn, ResourceLocation locationIn ) - { + public IBakedModel bake(IModelConfiguration owner, ModelBakery bakery, Function spriteGetter, IModelTransform modelTransform, ItemOverrideList overrides, ResourceLocation modelLocation) { try { - final TextureAtlasSprite texture = spriteGetterIn.apply( TEXTURE ); + final TextureAtlasSprite texture = spriteGetter.apply( TEXTURE ); return new P2PTunnelFrequencyBakedModel( texture ); } catch( Exception e ) @@ -51,4 +35,10 @@ public class P2PTunnelFrequencyModel implements IUnbakedModel throw new RuntimeException( e ); } } + + @Override + public Collection getTextures(IModelConfiguration owner, Function modelGetter, Set> missingTextureErrors) { + return Collections.singleton( TEXTURE ); + } + } diff --git a/src/main/java/appeng/client/render/cablebus/P2PTunnelFrequencyModelData.java b/src/main/java/appeng/client/render/cablebus/P2PTunnelFrequencyModelData.java new file mode 100644 index 000000000..f6acb8f93 --- /dev/null +++ b/src/main/java/appeng/client/render/cablebus/P2PTunnelFrequencyModelData.java @@ -0,0 +1,23 @@ +package appeng.client.render.cablebus; + +import appeng.client.render.model.AEInternalModelData; +import net.minecraftforge.client.model.data.IModelData; +import net.minecraftforge.client.model.data.ModelProperty; + +import javax.annotation.Nullable; + +public final class P2PTunnelFrequencyModelData extends AEInternalModelData { + + public static final ModelProperty FREQUENCY = new ModelProperty<>(); + + private final long frequency; + + public P2PTunnelFrequencyModelData(long frequency) { + this.frequency = frequency; + } + + public long getFrequency() { + return frequency; + } + +} diff --git a/src/main/java/appeng/client/render/model/AEInternalModelData.java b/src/main/java/appeng/client/render/model/AEInternalModelData.java new file mode 100644 index 000000000..ab2f38ef9 --- /dev/null +++ b/src/main/java/appeng/client/render/model/AEInternalModelData.java @@ -0,0 +1,27 @@ +package appeng.client.render.model; + +import net.minecraftforge.client.model.data.IModelData; +import net.minecraftforge.client.model.data.ModelProperty; + +import javax.annotation.Nullable; + +public abstract class AEInternalModelData implements IModelData { + + @Override + public final boolean hasProperty(ModelProperty prop) { + throw new IllegalStateException("This model data must be used by internal models only."); + } + + @Nullable + @Override + public final T getData(ModelProperty prop) { + throw new IllegalStateException("This model data must be used by internal models only."); + } + + @Nullable + @Override + public final T setData(ModelProperty prop, T data) { + throw new IllegalStateException("This model data must be used by internal models only."); + } + +} diff --git a/src/main/java/appeng/core/AppEng.java b/src/main/java/appeng/core/AppEng.java index ae1aac04d..d1e2f16ab 100644 --- a/src/main/java/appeng/core/AppEng.java +++ b/src/main/java/appeng/core/AppEng.java @@ -34,6 +34,7 @@ import appeng.client.ClientHelper; import appeng.client.render.DummyFluidItemModel; import appeng.client.render.SimpleModelLoader; import appeng.client.render.cablebus.CableBusModel; +import appeng.client.render.cablebus.P2PTunnelFrequencyModel; import appeng.client.render.crafting.CraftingCubeModelLoader; import appeng.client.render.model.*; import appeng.client.render.spatial.SpatialPylonModel; @@ -43,6 +44,8 @@ import appeng.core.sync.network.NetworkHandler; import appeng.core.worlddata.WorldData; import appeng.hooks.TickHandler; import appeng.parts.PartPlacement; +import appeng.parts.automation.PlaneModel; +import appeng.parts.automation.PlaneModelLoader; import appeng.server.AECommand; import appeng.server.ServerHelper; import com.google.common.base.Stopwatch; @@ -98,12 +101,11 @@ public final class AppEng private static AppEng INSTANCE; -//FIXME private final Registration registration; + private final Registration registration; /** * determined in pre-init but used in init */ - // FIXME private ExportConfig exportConfig; public AppEng() { @@ -125,7 +127,7 @@ public final class AppEng CreativeTabFacade.init(); IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); - Registration registration = new Registration(); + registration = new Registration(); modEventBus.addGenericListener(Block.class, registration::registerBlocks); modEventBus.addGenericListener(Item.class, registration::registerItems); modEventBus.addGenericListener(EntityType.class, registration::registerEntities); @@ -195,11 +197,12 @@ public final class AppEng addBuiltInModel("spatial_pylon", SpatialPylonModel::new); addBuiltInModel("paint_splotches", PaintSplotchesModel::new); addBuiltInModel("quantum_bridge_formed", QnbFormedModel::new); + addBuiltInModel("p2p_tunnel_frequency", P2PTunnelFrequencyModel::new); + ModelLoaderRegistry.registerLoader(new ResourceLocation(AppEng.MOD_ID, "part_plane"), PlaneModelLoader.INSTANCE); ModelLoaderRegistry.registerLoader(new ResourceLocation(AppEng.MOD_ID, "crafting_cube"), CraftingCubeModelLoader.INSTANCE); ModelLoaderRegistry.registerLoader(new ResourceLocation(AppEng.MOD_ID, "uvlightmap"), UVLModelLoader.INSTANCE); addBuiltInModel("cable_bus", () -> new CableBusModel((PartModels) Api.INSTANCE.registries().partModels())); - } private static > void addBuiltInModel(String id, Supplier modelFactory) { @@ -232,7 +235,7 @@ public final class AppEng public AdvancementTriggers getAdvancementTriggers() { - return null; // FIXME this.registration.advancementTriggers; + return this.registration.advancementTriggers; } // @EventHandler @@ -250,8 +253,6 @@ public final class AppEng // AEConfig.init( configFile ); // FacadeConfig.init( facadeFile ); // -// this.exportConfig = new ForgeExportConfig( recipeConfiguration ); -// // AELog.info( "Pre Initialization ( started )" ); // // @@ -286,35 +287,6 @@ public final class AppEng thread.start(); } -// @EventHandler -// private void init( final FMLCommonSetupEvent event ) -// { -// final Stopwatch start = Stopwatch.createStarted(); -// AELog.info( "Initialization ( started )" ); -// -// AppEng.proxy.init(); -// -// if( this.exportConfig.isExportingItemNamesEnabled() ) -// { -// if( FMLCommonHandler.instance().getSide().isClient() ) -// { -// final ExportProcess process = new ExportProcess( this.configDirectory, this.exportConfig ); -// final Thread exportProcessThread = new Thread( process ); -// -// this.startService( "AE2 CSV Export", exportProcessThread ); -// } -// else -// { -// AELog.info( "Disabling item.csv export for custom recipes, since creative tab information is only available on the client." ); -// } -// } -// -// this.registration.initialize( event, this.configDirectory ); -// IntegrationRegistry.INSTANCE.init(); -// -// AELog.info( "Initialization ( ended after " + start.elapsed( TimeUnit.MILLISECONDS ) + "ms )" ); -// } - private void registerNetworkHandler() { final Stopwatch start = Stopwatch.createStarted(); diff --git a/src/main/java/appeng/core/Registration.java b/src/main/java/appeng/core/Registration.java index e2d8b9d4a..079d529f3 100644 --- a/src/main/java/appeng/core/Registration.java +++ b/src/main/java/appeng/core/Registration.java @@ -36,6 +36,7 @@ import appeng.api.networking.security.ISecurityGrid; import appeng.api.networking.spatial.ISpatialCache; import appeng.api.networking.storage.IStorageGrid; import appeng.api.networking.ticking.ITickManager; +import appeng.bootstrap.ICriterionTriggerRegistry; import appeng.bootstrap.IModelRegistry; import appeng.bootstrap.components.*; import appeng.client.gui.implementations.GuiCellWorkbench; @@ -86,6 +87,7 @@ import appeng.core.features.registries.PartModels; import appeng.core.features.registries.cell.BasicCellHandler; import appeng.core.features.registries.cell.BasicItemCellGuiHandler; import appeng.core.features.registries.cell.CreativeCellHandler; +import appeng.core.stats.AdvancementTriggers; import appeng.core.stats.AeStats; import appeng.core.stats.PartItemPredicate; import appeng.fluids.client.gui.*; @@ -97,6 +99,9 @@ import appeng.recipes.game.DisassembleRecipe; import appeng.recipes.ingredients.PartIngredientSerializer; import appeng.server.AECommand; import appeng.tile.AEBaseTile; +import net.minecraft.advancements.CriteriaTriggers; +import net.minecraft.advancements.ICriterionInstance; +import net.minecraft.advancements.ICriterionTrigger; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.ScreenManager; @@ -121,20 +126,24 @@ import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.event.server.FMLServerStartingEvent; import net.minecraftforge.fml.loading.FMLEnvironment; import net.minecraftforge.fml.network.IContainerFactory; +import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.IForgeRegistry; +import java.lang.reflect.Method; + final class Registration { public Registration() { AeStats.register(); + advancementTriggers = new AdvancementTriggers( CriteriaTriggers::register ); } // DimensionType storageDimensionType; // int storageDimensionID; // Biome storageBiome; -// AdvancementTriggers advancementTriggers; + AdvancementTriggers advancementTriggers; // // void preInitialize( final FMLPreInitializationEvent event ) // { @@ -237,8 +246,6 @@ final class Registration } ); PartItemPredicate.register(); - // FIXME Stats.register(); - // FIXME this.advancementTriggers = new AdvancementTriggers( new CriterionTrigggerRegistry() ); } // @SubscribeEvent @@ -871,31 +878,6 @@ final class Registration // { // ModelLoader.setCustomStateMapper( block, mapper ); // } -// } -// -// private static class CriterionTrigggerRegistry implements ICriterionTriggerRegistry -// { -// private Method method; -// -// CriterionTrigggerRegistry() -// { -// this.method = ReflectionHelper.findMethod( CriteriaTriggers.class, "register", "func_192118_a", ICriterionTrigger.class ); -// this.method.setAccessible( true ); -// } -// -// @Override -// public void register( ICriterionTrigger trigger ) -// { -// try -// { -// this.method.invoke( null, trigger ); -// } -// catch( IllegalAccessException | IllegalArgumentException | InvocationTargetException e ) -// { -// AELog.debug( e ); -// } -// } -// // } public void registerTextures(TextureStitchEvent.Pre event) { diff --git a/src/main/java/appeng/core/api/definitions/ApiItems.java b/src/main/java/appeng/core/api/definitions/ApiItems.java index 92cf003fb..ff5915bd1 100644 --- a/src/main/java/appeng/core/api/definitions/ApiItems.java +++ b/src/main/java/appeng/core/api/definitions/ApiItems.java @@ -27,10 +27,7 @@ import appeng.api.features.AEFeature; import appeng.client.render.crafting.EncodedPatternRenderer; import appeng.client.render.crafting.ItemEncodedPatternRendering; import appeng.core.CreativeTabFacade; -import appeng.debug.ToolDebugCard; -import appeng.debug.ToolEraser; -import appeng.debug.ToolMeteoritePlacer; -import appeng.debug.ToolReplicatorCard; +import appeng.debug.*; import appeng.entity.EntityGrowingCrystal; import appeng.fluids.items.BasicFluidStorageCell; import appeng.fluids.items.FluidDummyItem; @@ -310,6 +307,7 @@ public final class ApiItems implements IItems this.toolMeteoritePlacer = debugTools.item( "debug_meteorite_placer", ToolMeteoritePlacer::new ).build(); this.toolDebugCard = debugTools.item( "debug_card", ToolDebugCard::new ).build(); this.toolReplicatorCard = debugTools.item( "debug_replicator_card", ToolReplicatorCard::new ).build(); + debugTools.item( "debug_part_placer", ToolDebugPartPlacer::new ).build(); this.dummyFluidItem = registry.item( "dummy_fluid_item", FluidDummyItem::new ).rendering( new FluidDummyItemRendering() ).build(); } diff --git a/src/main/java/appeng/core/api/definitions/ApiParts.java b/src/main/java/appeng/core/api/definitions/ApiParts.java index b98c8c938..e19761755 100644 --- a/src/main/java/appeng/core/api/definitions/ApiParts.java +++ b/src/main/java/appeng/core/api/definitions/ApiParts.java @@ -25,6 +25,7 @@ import appeng.api.parts.IPart; import appeng.api.util.AEColor; import appeng.api.util.AEColoredItemDefinition; import appeng.bootstrap.FeatureFactory; +import appeng.client.render.cablebus.P2PTunnelFrequencyModel; import appeng.core.AppEng; import appeng.core.CreativeTab; import appeng.core.features.*; @@ -145,71 +146,8 @@ public final class ApiParts implements IParts private void registerPartModels(PartModels partModels) { // Register the built-in models for annihilation planes - ResourceLocation annihilationPlaneTexture = new ResourceLocation( AppEng.MOD_ID, "item/part/annihilation_plane" ); - ResourceLocation annihilationPlaneOnTexture = new ResourceLocation( AppEng.MOD_ID, "parts/annihilation_plane_on" ); - ResourceLocation fluidAnnihilationPlaneTexture = new ResourceLocation( AppEng.MOD_ID, "item/part/fluid_annihilation_plane" ); - ResourceLocation fluidAnnihilationPlaneOnTexture = new ResourceLocation( AppEng.MOD_ID, "parts/fluid_annihilation_plane_on" ); - ResourceLocation identityAnnihilationPlaneTexture = new ResourceLocation( AppEng.MOD_ID, "item/part/identity_annihilation_plane" ); - ResourceLocation identityAnnihilationPlaneOnTexture = new ResourceLocation( AppEng.MOD_ID, "parts/identity_annihilation_plane_on" ); - ResourceLocation formationPlaneTexture = new ResourceLocation( AppEng.MOD_ID, "item/part/formation_plane" ); - ResourceLocation formationPlaneOnTexture = new ResourceLocation( AppEng.MOD_ID, "parts/formation_plane_on" ); ResourceLocation fluidFormationPlaneTexture = new ResourceLocation( AppEng.MOD_ID, "item/part/fluid_formation_plane" ); ResourceLocation fluidFormationPlaneOnTexture = new ResourceLocation( AppEng.MOD_ID, "parts/fluid_formation_plane_on" ); - ResourceLocation sidesTexture = new ResourceLocation( AppEng.MOD_ID, "parts/plane_sides" ); - ResourceLocation backTexture = new ResourceLocation( AppEng.MOD_ID, "parts/transition_plane_back" ); - - List modelNames = new ArrayList<>(); - -// FIXME for( PlaneConnections connection : PlaneConnections.PERMUTATIONS ) -// FIXME { -// FIXME PlaneModel model = new PlaneModel( annihilationPlaneTexture, sidesTexture, backTexture, connection ); -// FIXME rendering.builtInModel( "models/part/annihilation_plane_" + connection.getFilenameSuffix(), model ); -// FIXME modelNames.add( "part/annihilation_plane_" + connection.getFilenameSuffix() ); -// FIXME -// FIXME model = new PlaneModel( annihilationPlaneOnTexture, sidesTexture, backTexture, connection ); -// FIXME rendering.builtInModel( "models/part/annihilation_plane_on_" + connection.getFilenameSuffix(), model ); -// FIXME modelNames.add( "part/annihilation_plane_on_" + connection.getFilenameSuffix() ); -// FIXME -// FIXME model = new PlaneModel( fluidAnnihilationPlaneTexture, sidesTexture, backTexture, connection ); -// FIXME rendering.builtInModel( "models/part/fluid_annihilation_plane_" + connection.getFilenameSuffix(), model ); -// FIXME modelNames.add( "part/fluid_annihilation_plane_" + connection.getFilenameSuffix() ); -// FIXME -// FIXME model = new PlaneModel( fluidAnnihilationPlaneOnTexture, sidesTexture, backTexture, connection ); -// FIXME rendering.builtInModel( "models/part/fluid_annihilation_plane_on_" + connection.getFilenameSuffix(), model ); -// FIXME modelNames.add( "part/fluid_annihilation_plane_on_" + connection.getFilenameSuffix() ); -// FIXME -// FIXME model = new PlaneModel( identityAnnihilationPlaneTexture, sidesTexture, backTexture, connection ); -// FIXME rendering.builtInModel( "models/part/identity_annihilation_plane_" + connection.getFilenameSuffix(), model ); -// FIXME modelNames.add( "part/identity_annihilation_plane_" + connection.getFilenameSuffix() ); -// FIXME -// FIXME model = new PlaneModel( identityAnnihilationPlaneOnTexture, sidesTexture, backTexture, connection ); -// FIXME rendering.builtInModel( "models/part/identity_annihilation_plane_on_" + connection.getFilenameSuffix(), model ); -// FIXME modelNames.add( "part/identity_annihilation_plane_on_" + connection.getFilenameSuffix() ); -// FIXME -// FIXME model = new PlaneModel( formationPlaneTexture, sidesTexture, backTexture, connection ); -// FIXME rendering.builtInModel( "models/part/formation_plane_" + connection.getFilenameSuffix(), model ); -// FIXME modelNames.add( "part/formation_plane_" + connection.getFilenameSuffix() ); -// FIXME -// FIXME model = new PlaneModel( formationPlaneOnTexture, sidesTexture, backTexture, connection ); -// FIXME rendering.builtInModel( "models/part/formation_plane_on_" + connection.getFilenameSuffix(), model ); -// FIXME modelNames.add( "part/formation_plane_on_" + connection.getFilenameSuffix() ); -// FIXME -// FIXME model = new PlaneModel( fluidFormationPlaneTexture, sidesTexture, backTexture, connection ); -// FIXME rendering.builtInModel( "models/part/fluid_formation_plane_" + connection.getFilenameSuffix(), model ); -// FIXME modelNames.add( "part/fluid_formation_plane_" + connection.getFilenameSuffix() ); -// FIXME -// FIXME model = new PlaneModel( fluidFormationPlaneOnTexture, sidesTexture, backTexture, connection ); -// FIXME rendering.builtInModel( "models/part/fluid_formation_plane_on_" + connection.getFilenameSuffix(), model ); -// FIXME modelNames.add( "part/fluid_formation_plane_on_" + connection.getFilenameSuffix() ); -// FIXME } -// FIXME -// FIXME // base p2p model with frequency -// FIXME rendering.builtInModel( "models/part/builtin/p2p_tunnel_frequency", new P2PTunnelFrequencyModel() ); - - List partResourceLocs = modelNames.stream() - .map( name -> new ResourceLocation( AppEng.MOD_ID, name ) ) - .collect( Collectors.toList() ); - partModels.registerModels( partResourceLocs ); // Register all part models for( PartType partType : PartType.values() ) diff --git a/src/main/java/appeng/core/localization/GuiText.java b/src/main/java/appeng/core/localization/GuiText.java index 2a49624db..49a70d443 100644 --- a/src/main/java/appeng/core/localization/GuiText.java +++ b/src/main/java/appeng/core/localization/GuiText.java @@ -91,17 +91,6 @@ public enum GuiText Inscriber, QuartzCuttingKnife, - // tunnel names - METunnel, - ItemTunnel, - RedstoneTunnel, - EUTunnel, - FluidTunnel, - OCTunnel, - LightTunnel, - FETunnel, - PressureTunnel, - // spatial StoredSize, CellId, diff --git a/src/main/java/appeng/debug/ToolDebugPartPlacer.java b/src/main/java/appeng/debug/ToolDebugPartPlacer.java new file mode 100644 index 000000000..b2fea1e46 --- /dev/null +++ b/src/main/java/appeng/debug/ToolDebugPartPlacer.java @@ -0,0 +1,104 @@ +package appeng.debug; + +import appeng.api.parts.IPart; +import appeng.api.parts.IPartHost; +import appeng.api.parts.PartItemStack; +import appeng.api.util.AEPartLocation; +import appeng.items.AEBaseItem; +import appeng.items.parts.ColoredPartItem; +import appeng.items.parts.ItemPart; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemUseContext; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3i; +import net.minecraft.util.text.StringTextComponent; +import net.minecraft.world.World; +import net.minecraftforge.registries.ForgeRegistries; + +import java.util.Arrays; + +/** + * This tool will try to place anything that is registered as a {@link ItemPart} (and not a colored one) + * onto an existing cable to quickly test parts and their rendering. + */ +public class ToolDebugPartPlacer extends AEBaseItem { + + public ToolDebugPartPlacer(Properties properties) { + super(properties); + } + + @Override + public ActionResultType onItemUseFirst(ItemStack stack, ItemUseContext context) { + World world = context.getWorld(); + if (world.isRemote()) { + return ActionResultType.PASS; + } + + PlayerEntity player = context.getPlayer(); + BlockPos pos = context.getPos(); + + if (player == null) { + return ActionResultType.PASS; + } + + if (!player.abilities.isCreativeMode) { + player.sendMessage(new StringTextComponent("Only usable in creative mode")); + return ActionResultType.FAIL; + } + + TileEntity te = world.getTileEntity(pos); + if (!(te instanceof IPartHost)) { + player.sendMessage(new StringTextComponent("Right-click something that will accept parts")); + return ActionResultType.FAIL; + } + IPartHost center = (IPartHost) te; + IPart cable = center.getPart(AEPartLocation.INTERNAL); + if (cable == null) { + player.sendMessage(new StringTextComponent("Clicked part host must have an INSIDE part")); + return ActionResultType.FAIL; + } + + Direction face = context.getFace(); + Vec3i offset = face.getDirectionVec(); + Direction[] perpendicularFaces = Arrays.stream(Direction.values()).filter(d -> d.getAxis() != face.getAxis()) + .toArray(Direction[]::new); + + BlockPos nextPos = pos; + for (Item item : ForgeRegistries.ITEMS) { + if (!(item instanceof ItemPart)) { + continue; + } + + if (item instanceof ColoredPartItem) { + continue; // Cables and such + } + + nextPos = nextPos.add(offset); + if (!world.setBlockState(nextPos, te.getBlockState())) { + continue; + } + + TileEntity t = world.getTileEntity(nextPos); + if (!(t instanceof IPartHost)) { + continue; + } + + IPartHost partHost = (IPartHost) t; + if (partHost.addPart(cable.getItemStack(PartItemStack.PICK), AEPartLocation.INTERNAL, player, null) == null) { + continue; + } + for (Direction dir : perpendicularFaces) { + ItemStack itemStack = new ItemStack(item, 1); + partHost.addPart(itemStack, AEPartLocation.fromFacing(dir), player, null); + } + } + + return ActionResultType.SUCCESS; + } + +} diff --git a/src/main/java/appeng/fluids/parts/PartFluidAnnihilationPlane.java b/src/main/java/appeng/fluids/parts/PartFluidAnnihilationPlane.java index 2062722a6..4d0aa4cbd 100644 --- a/src/main/java/appeng/fluids/parts/PartFluidAnnihilationPlane.java +++ b/src/main/java/appeng/fluids/parts/PartFluidAnnihilationPlane.java @@ -4,6 +4,7 @@ package appeng.fluids.parts; import java.util.List; +import appeng.parts.automation.PlaneModelData; import net.minecraft.advancements.CriteriaTriggers; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -24,6 +25,7 @@ import net.minecraft.util.SoundEvents; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockReader; import net.minecraft.world.World; +import net.minecraftforge.client.model.data.IModelData; import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidUtil; @@ -64,10 +66,12 @@ import appeng.parts.automation.PlaneConnections; import appeng.parts.automation.PlaneModels; import appeng.util.Platform; +import javax.annotation.Nonnull; + public class PartFluidAnnihilationPlane extends PartBasicState implements IGridTickable { - private static final PlaneModels MODELS = new PlaneModels( "part/fluid_annihilation_plane_", "part/fluid_annihilation_plane_on_" ); + private static final PlaneModels MODELS = new PlaneModels( "part/fluid_annihilation_plane", "part/fluid_annihilation_plane_on" ); @PartModels public static List getModels() @@ -335,6 +339,13 @@ public class PartFluidAnnihilationPlane extends PartBasicState implements IGridT @Override public IPartModel getStaticModels() { - return MODELS.getModel( this.getConnections(), this.isPowered(), this.isActive() ); + return MODELS.getModel( this.isPowered(), this.isActive() ); } + + @Nonnull + @Override + public IModelData getModelData() { + return new PlaneModelData(getConnections()); + } + } diff --git a/src/main/java/appeng/fluids/parts/PartFluidFormationPlane.java b/src/main/java/appeng/fluids/parts/PartFluidFormationPlane.java index bd2e64c7a..66627ccc3 100644 --- a/src/main/java/appeng/fluids/parts/PartFluidFormationPlane.java +++ b/src/main/java/appeng/fluids/parts/PartFluidFormationPlane.java @@ -10,6 +10,7 @@ import appeng.container.ContainerLocator; import appeng.container.ContainerOpener; import appeng.container.implementations.ContainerFormationPlane; import appeng.fluids.container.ContainerFluidFormationPlane; +import appeng.parts.automation.PlaneModelData; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.entity.player.PlayerEntity; @@ -22,6 +23,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; import net.minecraft.fluid.Fluid; +import net.minecraftforge.client.model.data.IModelData; import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidUtil; @@ -57,10 +59,12 @@ import appeng.parts.automation.PlaneModels; import appeng.util.Platform; import appeng.util.prioritylist.PrecisePriorityList; +import javax.annotation.Nonnull; + public class PartFluidFormationPlane extends PartAbstractFormationPlane implements IAEFluidInventory { - private static final PlaneModels MODELS = new PlaneModels( "part/fluid_formation_plane_", "part/fluid_formation_plane_on_" ); + private static final PlaneModels MODELS = new PlaneModels( "part/fluid_formation_plane", "part/fluid_formation_plane_on" ); @PartModels public static List getModels() @@ -219,7 +223,13 @@ public class PartFluidFormationPlane extends PartAbstractFormationPlane { - private static final PlaneModels MODELS = new PlaneModels( "part/annihilation_plane_", "part/annihilation_plane_on_" ); + private static final PlaneModels MODELS = new PlaneModels( "part/annihilation_plane", "part/annihilation_plane_on" ); @PartModels public static List getModels() @@ -576,6 +579,8 @@ public class PartAnnihilationPlane extends PartBasicState implements IGridTickab { this.isAccepting = true; + getTile().requestModelDataUpdate(); + try { this.getProxy().getTick().alertDevice( this.getProxy().getNode() ); @@ -589,7 +594,13 @@ public class PartAnnihilationPlane extends PartBasicState implements IGridTickab @Override public IPartModel getStaticModels() { - return MODELS.getModel( this.getConnections(), this.isPowered(), this.isActive() ); + return MODELS.getModel( this.isPowered(), this.isActive() ); + } + + @Nonnull + @Override + public IModelData getModelData() { + return new PlaneModelData(getConnections()); } /** diff --git a/src/main/java/appeng/parts/automation/PartFormationPlane.java b/src/main/java/appeng/parts/automation/PartFormationPlane.java index f0bea9d74..01f7c5e51 100644 --- a/src/main/java/appeng/parts/automation/PartFormationPlane.java +++ b/src/main/java/appeng/parts/automation/PartFormationPlane.java @@ -43,6 +43,7 @@ import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; import net.minecraft.world.server.ServerWorld; +import net.minecraftforge.client.model.data.IModelData; import net.minecraftforge.common.IPlantable; import net.minecraftforge.items.IItemHandler; @@ -78,13 +79,14 @@ import appeng.util.inv.InvOperation; import appeng.util.prioritylist.FuzzyPriorityList; import appeng.util.prioritylist.PrecisePriorityList; +import javax.annotation.Nonnull; import javax.annotation.Nullable; public class PartFormationPlane extends PartAbstractFormationPlane { - private static final PlaneModels MODELS = new PlaneModels( "part/formation_plane_", "part/formation_plane_on_" ); + private static final PlaneModels MODELS = new PlaneModels( "part/formation_plane", "part/formation_plane_on" ); @PartModels public static List getModels() @@ -374,7 +376,13 @@ public class PartFormationPlane extends PartAbstractFormationPlane @Override public IPartModel getStaticModels() { - return MODELS.getModel( this.getConnections(), this.isPowered(), this.isActive() ); + return MODELS.getModel( this.isPowered(), this.isActive() ); + } + + @Nonnull + @Override + public IModelData getModelData() { + return new PlaneModelData(getConnections()); } @Override diff --git a/src/main/java/appeng/parts/automation/PartIdentityAnnihilationPlane.java b/src/main/java/appeng/parts/automation/PartIdentityAnnihilationPlane.java index adaf37381..23df1bfb4 100644 --- a/src/main/java/appeng/parts/automation/PartIdentityAnnihilationPlane.java +++ b/src/main/java/appeng/parts/automation/PartIdentityAnnihilationPlane.java @@ -32,14 +32,16 @@ import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.server.ServerWorld; +import net.minecraftforge.client.model.data.IModelData; +import javax.annotation.Nonnull; import java.util.List; public class PartIdentityAnnihilationPlane extends PartAnnihilationPlane { - private static final PlaneModels MODELS = new PlaneModels( "part/identity_annihilation_plane_", "part/identity_annihilation_plane_on_" ); + private static final PlaneModels MODELS = new PlaneModels( "part/identity_annihilation_plane", "part/identity_annihilation_plane_on" ); @PartModels public static List getModels() @@ -90,7 +92,13 @@ public class PartIdentityAnnihilationPlane extends PartAnnihilationPlane @Override public IPartModel getStaticModels() { - return MODELS.getModel( this.getConnections(), this.isPowered(), this.isActive() ); + return MODELS.getModel( this.isPowered(), this.isActive() ); + } + + @Nonnull + @Override + public IModelData getModelData() { + return new PlaneModelData(getConnections()); } } diff --git a/src/main/java/appeng/parts/automation/PlaneBakedModel.java b/src/main/java/appeng/parts/automation/PlaneBakedModel.java index 96f8d72d4..cb7e978d7 100644 --- a/src/main/java/appeng/parts/automation/PlaneBakedModel.java +++ b/src/main/java/appeng/parts/automation/PlaneBakedModel.java @@ -19,63 +19,70 @@ package appeng.parts.automation; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Random; +import java.util.*; import javax.annotation.Nullable; import com.google.common.collect.ImmutableList; import net.minecraft.block.BlockState; import net.minecraft.client.renderer.model.BakedQuad; -import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.renderer.vertex.VertexFormat; import net.minecraft.util.Direction; import appeng.client.render.cablebus.CubeBuilder; +import net.minecraftforge.client.model.data.IDynamicBakedModel; +import net.minecraftforge.client.model.data.IModelData; /** * Built-in model for annihilation planes that supports connected textures. */ -public class PlaneBakedModel implements IBakedModel +public class PlaneBakedModel implements IDynamicBakedModel { + private static final PlaneConnections DEFAULT_PERMUTATION = PlaneConnections.of(false, false, false, false); + private final TextureAtlasSprite frontTexture; - private final List quads; + private final Map> quads; - PlaneBakedModel( TextureAtlasSprite frontTexture, TextureAtlasSprite sidesTexture, TextureAtlasSprite backTexture, PlaneConnections connections ) + PlaneBakedModel( TextureAtlasSprite frontTexture, TextureAtlasSprite sidesTexture, TextureAtlasSprite backTexture ) { this.frontTexture = frontTexture; - List quads = new ArrayList<>( 4 * 6 ); + quads = new HashMap<>(PlaneConnections.PERMUTATIONS.size()); + // Create all possible permutations (16) + for (PlaneConnections permutation : PlaneConnections.PERMUTATIONS) { + List quads = new ArrayList<>(4 * 6); - CubeBuilder builder = new CubeBuilder( quads ); + CubeBuilder builder = new CubeBuilder(quads); - builder.setTextures( sidesTexture, sidesTexture, frontTexture, backTexture, sidesTexture, sidesTexture ); + builder.setTextures(sidesTexture, sidesTexture, frontTexture, backTexture, sidesTexture, sidesTexture); - // Keep the orientation of the X axis in mind here. When looking at a quad facing north from the front, - // The X-axis points left - int minX = connections.isRight() ? 0 : 1; - int maxX = connections.isLeft() ? 16 : 15; - int minY = connections.isDown() ? 0 : 1; - int maxY = connections.isUp() ? 16 : 15; + // Keep the orientation of the X axis in mind here. When looking at a quad facing north from the front, + // The X-axis points left + int minX = permutation.isRight() ? 0 : 1; + int maxX = permutation.isLeft() ? 16 : 15; + int minY = permutation.isDown() ? 0 : 1; + int maxY = permutation.isUp() ? 16 : 15; - builder.addCube( minX, minY, 0, maxX, maxY, 1 ); + builder.addCube(minX, minY, 0, maxX, maxY, 1); - this.quads = ImmutableList.copyOf( quads ); + this.quads.put(permutation, ImmutableList.copyOf(quads)); + } } @Override - public List getQuads( @Nullable BlockState state, @Nullable Direction side, Random rand ) + public List getQuads(@Nullable BlockState state, @Nullable Direction side, Random rand, IModelData modelData) { if( side == null ) { - return this.quads; + PlaneConnections connections = DEFAULT_PERMUTATION; + if (modelData instanceof PlaneModelData) { + connections = ((PlaneModelData) modelData).getConnections(); + } + return this.quads.get(connections); } else { diff --git a/src/main/java/appeng/parts/automation/PlaneModel.java b/src/main/java/appeng/parts/automation/PlaneModel.java index 5e95dc5ca..d27429a5d 100644 --- a/src/main/java/appeng/parts/automation/PlaneModel.java +++ b/src/main/java/appeng/parts/automation/PlaneModel.java @@ -28,55 +28,43 @@ import javax.annotation.Nullable; import com.mojang.datafixers.util.Pair; -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.client.renderer.model.IModelTransform; -import net.minecraft.client.renderer.model.IUnbakedModel; -import net.minecraft.client.renderer.model.Material; -import net.minecraft.client.renderer.model.ModelBakery; +import net.minecraft.client.renderer.model.*; import net.minecraft.client.renderer.texture.AtlasTexture; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.IModelConfiguration; +import net.minecraftforge.client.model.geometry.IModelGeometry; /** * Built-in model for annihilation planes that supports connected textures. */ -public class PlaneModel implements IUnbakedModel +public class PlaneModel implements IModelGeometry { private final Material frontTexture; private final Material sidesTexture; private final Material backTexture; - private final PlaneConnections connections; - public PlaneModel( ResourceLocation frontTexture, ResourceLocation sidesTexture, ResourceLocation backTexture, PlaneConnections connections ) + public PlaneModel( ResourceLocation frontTexture, ResourceLocation sidesTexture, ResourceLocation backTexture ) { this.frontTexture = new Material( AtlasTexture.LOCATION_BLOCKS_TEXTURE, frontTexture ); this.sidesTexture = new Material( AtlasTexture.LOCATION_BLOCKS_TEXTURE, sidesTexture ); this.backTexture = new Material( AtlasTexture.LOCATION_BLOCKS_TEXTURE, backTexture ); - this.connections = connections; } @Override - public Collection getDependencies() - { - return Collections.emptyList(); + public IBakedModel bake(IModelConfiguration owner, ModelBakery bakery, Function spriteGetter, IModelTransform modelTransform, ItemOverrideList overrides, ResourceLocation modelLocation) { + TextureAtlasSprite frontSprite = spriteGetter.apply( this.frontTexture ); + TextureAtlasSprite sidesSprite = spriteGetter.apply( this.sidesTexture ); + TextureAtlasSprite backSprite = spriteGetter.apply( this.backTexture ); + + return new PlaneBakedModel( frontSprite, sidesSprite, backSprite ); } @Override - public Collection getTextures( Function modelGetter, Set> missingTextureErrors ) - { + public Collection getTextures(IModelConfiguration owner, Function modelGetter, Set> missingTextureErrors) { return Arrays.asList( frontTexture, sidesTexture, backTexture ); } - @Nullable - @Override - public IBakedModel bakeModel( ModelBakery modelBakeryIn, Function spriteGetterIn, IModelTransform transformIn, ResourceLocation locationIn ) - { - TextureAtlasSprite frontSprite = spriteGetterIn.apply( this.frontTexture ); - TextureAtlasSprite sidesSprite = spriteGetterIn.apply( this.sidesTexture ); - TextureAtlasSprite backSprite = spriteGetterIn.apply( this.backTexture ); - - return new PlaneBakedModel( frontSprite, sidesSprite, backSprite, this.connections ); - } } diff --git a/src/main/java/appeng/parts/automation/PlaneModelData.java b/src/main/java/appeng/parts/automation/PlaneModelData.java new file mode 100644 index 000000000..8c2e071ac --- /dev/null +++ b/src/main/java/appeng/parts/automation/PlaneModelData.java @@ -0,0 +1,17 @@ +package appeng.parts.automation; + +import appeng.client.render.model.AEInternalModelData; + +public class PlaneModelData extends AEInternalModelData { + + private final PlaneConnections connections; + + public PlaneModelData(PlaneConnections connections) { + this.connections = connections; + } + + public PlaneConnections getConnections() { + return connections; + } + +} diff --git a/src/main/java/appeng/parts/automation/PlaneModelLoader.java b/src/main/java/appeng/parts/automation/PlaneModelLoader.java new file mode 100644 index 000000000..1abea0feb --- /dev/null +++ b/src/main/java/appeng/parts/automation/PlaneModelLoader.java @@ -0,0 +1,30 @@ +package appeng.parts.automation; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonObject; +import net.minecraft.resources.IResourceManager; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.IModelLoader; + +public class PlaneModelLoader implements IModelLoader { + + public static final PlaneModelLoader INSTANCE = new PlaneModelLoader(); + + @Override + public void onResourceManagerReload(IResourceManager resourceManager) { + } + + @Override + public PlaneModel read(JsonDeserializationContext deserializationContext, JsonObject modelContents) { + String frontTexture = modelContents.get("front").getAsString(); + String sidesTexture = modelContents.get("sides").getAsString(); + String backTexture = modelContents.get("back").getAsString(); + + return new PlaneModel( + new ResourceLocation(frontTexture), + new ResourceLocation(sidesTexture), + new ResourceLocation(backTexture) + ); + } + +} diff --git a/src/main/java/appeng/parts/automation/PlaneModels.java b/src/main/java/appeng/parts/automation/PlaneModels.java index 9da759be9..93c9b9772 100644 --- a/src/main/java/appeng/parts/automation/PlaneModels.java +++ b/src/main/java/appeng/parts/automation/PlaneModels.java @@ -24,6 +24,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import net.minecraft.util.ResourceLocation; @@ -43,56 +44,43 @@ public class PlaneModels public static final ResourceLocation MODEL_CHASSIS_ON = new ResourceLocation( AppEng.MOD_ID, "part/transition_plane_on" ); public static final ResourceLocation MODEL_CHASSIS_HAS_CHANNEL = new ResourceLocation( AppEng.MOD_ID, "part/transition_plane_has_channel" ); - private final Map modelsOff; + private final IPartModel modelOff; - private final Map modelsOn; + private final IPartModel modelOn; - private final Map modelsHasChannel; + private final IPartModel modelHasChannel; - public PlaneModels( String prefixOff, String prefixOn ) + public PlaneModels( String planeOffLocation, String planeOnLocation ) { - Map modelsOff = new HashMap<>(); - Map modelsOn = new HashMap<>(); - Map modelsHasChannel = new HashMap<>(); + ResourceLocation planeOff = new ResourceLocation( AppEng.MOD_ID, planeOffLocation ); + ResourceLocation planeOn = new ResourceLocation( AppEng.MOD_ID, planeOnLocation ); - for( PlaneConnections permutation : PlaneConnections.PERMUTATIONS ) - { - ResourceLocation planeOff = new ResourceLocation( AppEng.MOD_ID, prefixOff + permutation.getFilenameSuffix() ); - ResourceLocation planeOn = new ResourceLocation( AppEng.MOD_ID, prefixOn + permutation.getFilenameSuffix() ); - - modelsOff.put( permutation, new PartModel( MODEL_CHASSIS_OFF, planeOff ) ); - modelsOn.put( permutation, new PartModel( MODEL_CHASSIS_ON, planeOff ) ); - modelsHasChannel.put( permutation, new PartModel( MODEL_CHASSIS_HAS_CHANNEL, planeOn ) ); - } - - this.modelsOff = ImmutableMap.copyOf( modelsOff ); - this.modelsOn = ImmutableMap.copyOf( modelsOn ); - this.modelsHasChannel = ImmutableMap.copyOf( modelsHasChannel ); + this.modelOff = new PartModel( MODEL_CHASSIS_OFF, planeOff ); + this.modelOn = new PartModel( MODEL_CHASSIS_ON, planeOff ); + this.modelHasChannel = new PartModel( MODEL_CHASSIS_HAS_CHANNEL, planeOn ); } - public IPartModel getModel( PlaneConnections connections, boolean hasPower, boolean hasChannel ) + public IPartModel getModel(boolean hasPower, boolean hasChannel) { if( hasPower && hasChannel ) { - return this.modelsHasChannel.get( connections ); + return modelHasChannel; } else if( hasPower ) { - return this.modelsOn.get( connections ); + return modelOn; } else { - return this.modelsOff.get( connections ); + return modelOff; } } public List getModels() { - List result = new ArrayList<>(); - this.modelsOff.values().forEach( result::add ); - this.modelsOn.values().forEach( result::add ); - this.modelsHasChannel.values().forEach( result::add ); - return result; + return ImmutableList.of( + modelOff, modelOn, modelHasChannel + ); } } diff --git a/src/main/java/appeng/parts/p2p/P2PModels.java b/src/main/java/appeng/parts/p2p/P2PModels.java index 6bc8060ce..24eb1183d 100644 --- a/src/main/java/appeng/parts/p2p/P2PModels.java +++ b/src/main/java/appeng/parts/p2p/P2PModels.java @@ -38,7 +38,7 @@ class P2PModels public static final ResourceLocation MODEL_STATUS_OFF = new ResourceLocation( AppEng.MOD_ID, "part/p2p/p2p_tunnel_status_off" ); public static final ResourceLocation MODEL_STATUS_ON = new ResourceLocation( AppEng.MOD_ID, "part/p2p/p2p_tunnel_status_on" ); public static final ResourceLocation MODEL_STATUS_HAS_CHANNEL = new ResourceLocation( AppEng.MOD_ID, "part/p2p/p2p_tunnel_status_has_channel" ); - public static final ResourceLocation MODEL_FREQUENCY = new ResourceLocation( AppEng.MOD_ID, "part/builtin/p2p_tunnel_frequency" ); + public static final ResourceLocation MODEL_FREQUENCY = new ResourceLocation( AppEng.MOD_ID, "part/p2p/p2p_tunnel_frequency" ); private final IPartModel modelsOff; private final IPartModel modelsOn; diff --git a/src/main/java/appeng/parts/p2p/PartP2PTunnel.java b/src/main/java/appeng/parts/p2p/PartP2PTunnel.java index 6cf96af3e..51812529b 100644 --- a/src/main/java/appeng/parts/p2p/PartP2PTunnel.java +++ b/src/main/java/appeng/parts/p2p/PartP2PTunnel.java @@ -24,6 +24,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Optional; +import appeng.client.render.cablebus.P2PTunnelFrequencyModelData; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; @@ -52,6 +53,9 @@ import appeng.me.cache.P2PCache; import appeng.me.cache.helpers.TunnelCollection; import appeng.parts.PartBasicState; import appeng.util.Platform; +import net.minecraftforge.client.model.data.IModelData; +import net.minecraftforge.client.model.data.ModelDataMap; +import net.minecraftforge.client.model.data.ModelProperty; public abstract class PartP2PTunnel extends PartBasicState @@ -437,7 +441,7 @@ public abstract class PartP2PTunnel extends PartBasicSt } @Override - public Long getRenderFlag() + public IModelData getModelData() { long ret = Short.toUnsignedLong( this.getFrequency() ); @@ -446,6 +450,6 @@ public abstract class PartP2PTunnel extends PartBasicSt ret |= 0x10000L; } - return ret; + return new P2PTunnelFrequencyModelData(ret); } } diff --git a/src/main/resources/assets/appliedenergistics2/lang/cs_cz.json b/src/main/resources/assets/appliedenergistics2/lang/cs_cz.json index 0565b502e..db587db65 100644 --- a/src/main/resources/assets/appliedenergistics2/lang/cs_cz.json +++ b/src/main/resources/assets/appliedenergistics2/lang/cs_cz.json @@ -149,16 +149,13 @@ "gui.appliedenergistics2.Creates": "Vytvoří", "gui.appliedenergistics2.Cyan": "Azurová", "gui.appliedenergistics2.Drive": "ME jednotka", - "gui.appliedenergistics2.EUTunnel": "EU", "gui.appliedenergistics2.Efficiency": "Efektivita", "gui.appliedenergistics2.Empty": "Prázdný", "gui.appliedenergistics2.Encoded": "Kódované", "gui.appliedenergistics2.EnergyDrain": "Pasivní vypuštění", "gui.appliedenergistics2.Excluded": "Kromě", "gui.appliedenergistics2.ExportBus": "ME exportní sběrnice", - "gui.appliedenergistics2.FETunnel": "FE", "gui.appliedenergistics2.FacadeCrafting": "Výroba fasád", - "gui.appliedenergistics2.FluidTunnel": "Tekutina", "gui.appliedenergistics2.Fluix": "Fluix", "gui.appliedenergistics2.FormationPlane": "Formační plocha", "gui.appliedenergistics2.FromStorage": "Dostupné", @@ -177,15 +174,12 @@ "gui.appliedenergistics2.InterfaceTerminal": "Terminál rozhraní", "gui.appliedenergistics2.InterfaceTerminalHint": "Zobrazí nebo skryje Terminál rozhraní.", "gui.appliedenergistics2.InvalidPattern": "Nesprávné schéma", - "gui.appliedenergistics2.ItemTunnel": "Předmět", "gui.appliedenergistics2.LevelEmitter": "ME úrovňový vysílač", "gui.appliedenergistics2.LightBlue": "Světle modrá", "gui.appliedenergistics2.LightGray": "Světle šedá", - "gui.appliedenergistics2.LightTunnel": "Světlo", "gui.appliedenergistics2.Lime": "Světle zelená", "gui.appliedenergistics2.Linked": "Spárovaný", "gui.appliedenergistics2.Lumen": "Lumen", - "gui.appliedenergistics2.METunnel": "ME", "gui.appliedenergistics2.Magenta": "Purpurová", "gui.appliedenergistics2.MaxPower": "Maximální energie", "gui.appliedenergistics2.Missing": "Chybějící", @@ -215,7 +209,6 @@ "gui.appliedenergistics2.QuartzCuttingKnife": "Křemenný sekáček", "gui.appliedenergistics2.Range": "Vzdálenost", "gui.appliedenergistics2.Red": "Červená", - "gui.appliedenergistics2.RedstoneTunnel": "Rudit", "gui.appliedenergistics2.RequiredPower": "Potřebná energie", "gui.appliedenergistics2.Scheduled": "Naplánováno", "gui.appliedenergistics2.Security": "Bezpečnostní označení", @@ -407,7 +400,9 @@ "item.appliedenergistics2.entropy_manipulator": "Manipulátor entropie", "item.appliedenergistics2.export_bus": "ME exportní sběrnice", "item.appliedenergistics2.facade": "Kabelová fasáda", + "item.appliedenergistics2.fe_p2p_tunnel": "FE P2P tunel", "item.appliedenergistics2.flour": "Mouka", + "item.appliedenergistics2.fluid_p2p_tunnel": "Tekutina P2P tunel", "item.appliedenergistics2.fluix_covered_cable": "Fluix ME krytý kabel", "item.appliedenergistics2.fluix_crystal": "Fluixový krystal", "item.appliedenergistics2.fluix_crystal_seed": "Semínko Fluixu", @@ -428,12 +423,14 @@ "item.appliedenergistics2.green_glass_cable": "Zelená ME skleněný kabel", "item.appliedenergistics2.green_smart_cable": "Zelená ME chytrý kabel", "item.appliedenergistics2.green_smart_dense_cable": "Zelená ME silný kabel", + "item.appliedenergistics2.ic2_p2p_tunnel": "EU P2P tunel", "item.appliedenergistics2.import_bus": "ME importní sběrnice", "item.appliedenergistics2.interface_terminal": "ME terminál rozhraní", "item.appliedenergistics2.invalid_type": "Tento předmět je zakázaný.", "item.appliedenergistics2.inverted_toggle_bus": "ME převrácená přepínaci sběrnice", "item.appliedenergistics2.inverter_card": "Měničová karta", "item.appliedenergistics2.iron_dust": "Železný prach", + "item.appliedenergistics2.item_p2p_tunnel": "Předmět P2P tunel", "item.appliedenergistics2.level_emitter": "ME úrovňový vysílač", "item.appliedenergistics2.light_blue_covered_cable": "Světle modrá ME krytý kabel", "item.appliedenergistics2.light_blue_glass_cable": "Světle modrá ME skleněný kabel", @@ -443,6 +440,7 @@ "item.appliedenergistics2.light_gray_glass_cable": "Světle šedá ME skleněný kabel", "item.appliedenergistics2.light_gray_smart_cable": "Světle šedá ME chytrý kabel", "item.appliedenergistics2.light_gray_smart_dense_cable": "Světle šedá ME silný kabel", + "item.appliedenergistics2.light_p2p_tunnel": "Světlo P2P tunel", "item.appliedenergistics2.lime_covered_cable": "Světle zelená ME krytý kabel", "item.appliedenergistics2.lime_glass_cable": "Světle zelená ME skleněný kabel", "item.appliedenergistics2.lime_smart_cable": "Světle zelená ME chytrý kabel", @@ -458,6 +456,7 @@ "item.appliedenergistics2.magenta_smart_dense_cable": "Purpurová ME silný kabel", "item.appliedenergistics2.matter_ball": "Hmotný míč", "item.appliedenergistics2.matter_cannon": "Hmotový kanón", + "item.appliedenergistics2.me_p2p_tunnel": "ME P2P tunel", "item.appliedenergistics2.memory_card": "Paměťová karta", "item.appliedenergistics2.monitor": "Světlě osvětlený panel", "item.appliedenergistics2.name_press": "Výtisk jmenového zapisovače", @@ -475,7 +474,6 @@ "item.appliedenergistics2.orange_glass_cable": "Oranžová ME skleněný kabel", "item.appliedenergistics2.orange_smart_cable": "Oranžová ME chytrý kabel", "item.appliedenergistics2.orange_smart_dense_cable": "Oranžová ME silný kabel", - "item.appliedenergistics2.p2p_tunnel": "P2P tunel", "item.appliedenergistics2.paint_ball": "Malovací míč", "item.appliedenergistics2.pattern_terminal": "ME terminál schémat", "item.appliedenergistics2.pink_covered_cable": "Růžová ME krytý kabel", @@ -497,6 +495,7 @@ "item.appliedenergistics2.red_smart_cable": "Červená ME chytrý kabel", "item.appliedenergistics2.red_smart_dense_cable": "Červená ME silný kabel", "item.appliedenergistics2.redstone_card": "Ruditová karta", + "item.appliedenergistics2.redstone_p2p_tunnel": "Rudit P2P tunel", "item.appliedenergistics2.semi_dark_monitor": "Osvětlený panel", "item.appliedenergistics2.silicon": "Křemík", "item.appliedenergistics2.silicon_press": "Výtisk křemíkového zapisovače", diff --git a/src/main/resources/assets/appliedenergistics2/lang/de_de.json b/src/main/resources/assets/appliedenergistics2/lang/de_de.json index 0461935c6..8082ee95b 100644 --- a/src/main/resources/assets/appliedenergistics2/lang/de_de.json +++ b/src/main/resources/assets/appliedenergistics2/lang/de_de.json @@ -168,16 +168,13 @@ "gui.appliedenergistics2.Creates": "Kreiert", "gui.appliedenergistics2.Cyan": "Türkis", "gui.appliedenergistics2.Drive": "ME-Laufwerk", - "gui.appliedenergistics2.EUTunnel": "EU", "gui.appliedenergistics2.Efficiency": "Effizienz", "gui.appliedenergistics2.Empty": "Leer", "gui.appliedenergistics2.Encoded": "Verschlüsselt", "gui.appliedenergistics2.EnergyDrain": "Passivverbrauch", "gui.appliedenergistics2.Excluded": "Ausschließlich", "gui.appliedenergistics2.ExportBus": "ME-Exportbus", - "gui.appliedenergistics2.FETunnel": "FE", "gui.appliedenergistics2.FacadeCrafting": "Fassadenfertigung", - "gui.appliedenergistics2.FluidTunnel": "Flüssigkeiten", "gui.appliedenergistics2.Fluix": "Fluix", "gui.appliedenergistics2.FormationPlane": "Formationsfläche", "gui.appliedenergistics2.FromStorage": "Verfügbar", @@ -196,16 +193,13 @@ "gui.appliedenergistics2.InterfaceTerminal": "Schnittstellenkonsole", "gui.appliedenergistics2.InterfaceTerminalHint": "Zeige oder verstecke die Schnittstelle in der Konsole.", "gui.appliedenergistics2.InvalidPattern": "Ungültige Schablone", - "gui.appliedenergistics2.ItemTunnel": "Item", "gui.appliedenergistics2.LargeFontCraft": "+", "gui.appliedenergistics2.LevelEmitter": "ME-Füllstandsemitter", "gui.appliedenergistics2.LightBlue": "Hellblau", "gui.appliedenergistics2.LightGray": "Hellgrau", - "gui.appliedenergistics2.LightTunnel": "Licht", "gui.appliedenergistics2.Lime": "Hellgrün", "gui.appliedenergistics2.Linked": "Verbunden", "gui.appliedenergistics2.Lumen": "Lumen", - "gui.appliedenergistics2.METunnel": "ME", "gui.appliedenergistics2.Magenta": "Magenta", "gui.appliedenergistics2.MaxPower": "Max Energie", "gui.appliedenergistics2.Missing": "Fehlend", @@ -239,7 +233,6 @@ "gui.appliedenergistics2.QuartzCuttingKnife": "Quarzmeißel", "gui.appliedenergistics2.Range": "Reichweite", "gui.appliedenergistics2.Red": "Rot", - "gui.appliedenergistics2.RedstoneTunnel": "Redstone", "gui.appliedenergistics2.RequiredPower": "Benötigte Energie", "gui.appliedenergistics2.Scheduled": "Geplant", "gui.appliedenergistics2.Security": "Sicherheitsterm", @@ -444,7 +437,9 @@ "item.appliedenergistics2.entropy_manipulator": "Entropiemanipulator", "item.appliedenergistics2.export_bus": "ME-Exportbus", "item.appliedenergistics2.facade": "Kabelfassade", + "item.appliedenergistics2.fe_p2p_tunnel": "FE P2P-Tunnel", "item.appliedenergistics2.flour": "Mehl", + "item.appliedenergistics2.fluid_p2p_tunnel": "Flüssigkeiten P2P-Tunnel", "item.appliedenergistics2.fluix_covered_cable": "Fluix Verdecktes ME-Kabel", "item.appliedenergistics2.fluix_crystal": "Fluixkristall", "item.appliedenergistics2.fluix_crystal_seed": "Fluixkeim", @@ -465,6 +460,7 @@ "item.appliedenergistics2.green_glass_cable": "Grün ME-Glaskabel", "item.appliedenergistics2.green_smart_cable": "Grün Schlaues ME-Kabel", "item.appliedenergistics2.green_smart_dense_cable": "Grün Dichtes ME-Kabel", + "item.appliedenergistics2.ic2_p2p_tunnel": "EU P2P-Tunnel", "item.appliedenergistics2.identity_annihilation_plane": "ME-Identitätsannihilationsfelds", "item.appliedenergistics2.import_bus": "ME-Importbus", "item.appliedenergistics2.interface_terminal": "ME-Schnittstellenkonsole", @@ -472,6 +468,7 @@ "item.appliedenergistics2.inverted_toggle_bus": "Invertierter schaltbarer ME-Bus", "item.appliedenergistics2.inverter_card": "Umkehrungskarte", "item.appliedenergistics2.iron_dust": "Eisenstaub", + "item.appliedenergistics2.item_p2p_tunnel": "Item P2P-Tunnel", "item.appliedenergistics2.level_emitter": "ME-Füllstandsemitter", "item.appliedenergistics2.light_blue_covered_cable": "Hellblau Verdecktes ME-Kabel", "item.appliedenergistics2.light_blue_glass_cable": "Hellblau ME-Glaskabel", @@ -481,6 +478,7 @@ "item.appliedenergistics2.light_gray_glass_cable": "Hellgrau ME-Glaskabel", "item.appliedenergistics2.light_gray_smart_cable": "Hellgrau Schlaues ME-Kabel", "item.appliedenergistics2.light_gray_smart_dense_cable": "Hellgrau Dichtes ME-Kabel", + "item.appliedenergistics2.light_p2p_tunnel": "Licht P2P-Tunnel", "item.appliedenergistics2.lime_covered_cable": "Hellgrün Verdecktes ME-Kabel", "item.appliedenergistics2.lime_glass_cable": "Hellgrün ME-Glaskabel", "item.appliedenergistics2.lime_smart_cable": "Hellgrün Schlaues ME-Kabel", @@ -496,6 +494,7 @@ "item.appliedenergistics2.magenta_smart_dense_cable": "Magenta Dichtes ME-Kabel", "item.appliedenergistics2.matter_ball": "Materieball", "item.appliedenergistics2.matter_cannon": "Materiekanone", + "item.appliedenergistics2.me_p2p_tunnel": "ME P2P-Tunnel", "item.appliedenergistics2.memory_card": "Speicherkarte", "item.appliedenergistics2.monitor": "Helles Leuchtfeld", "item.appliedenergistics2.name_press": "Schreiber-Namensdruck", @@ -513,7 +512,6 @@ "item.appliedenergistics2.orange_glass_cable": "Orange ME-Glaskabel", "item.appliedenergistics2.orange_smart_cable": "Orange Schlaues ME-Kabel", "item.appliedenergistics2.orange_smart_dense_cable": "Orange Dichtes ME-Kabel", - "item.appliedenergistics2.p2p_tunnel": "P2P-Tunnel", "item.appliedenergistics2.paint_ball": "Farbball", "item.appliedenergistics2.pattern_terminal": "ME-Schablonenkonsole", "item.appliedenergistics2.pink_covered_cable": "Pink Verdecktes ME-Kabel", @@ -535,6 +533,7 @@ "item.appliedenergistics2.red_smart_cable": "Rot Schlaues ME-Kabel", "item.appliedenergistics2.red_smart_dense_cable": "Rot Dichtes ME-Kabel", "item.appliedenergistics2.redstone_card": "Redstone-Karte", + "item.appliedenergistics2.redstone_p2p_tunnel": "Redstone P2P-Tunnel", "item.appliedenergistics2.semi_dark_monitor": "Leuchtfeld", "item.appliedenergistics2.silicon": "Silizium", "item.appliedenergistics2.silicon_press": "Gravur-Siliziumdruck", diff --git a/src/main/resources/assets/appliedenergistics2/lang/en_us.json b/src/main/resources/assets/appliedenergistics2/lang/en_us.json index 209c421fb..3991a6975 100644 --- a/src/main/resources/assets/appliedenergistics2/lang/en_us.json +++ b/src/main/resources/assets/appliedenergistics2/lang/en_us.json @@ -180,7 +180,6 @@ "gui.appliedenergistics2.Cyan": "Cyan", "gui.appliedenergistics2.Drive": "ME Drive", "gui.appliedenergistics2.ETAFormat": "HH:mm:ss", - "gui.appliedenergistics2.EUTunnel": "EU", "gui.appliedenergistics2.Efficiency": "Efficiency", "gui.appliedenergistics2.Empty": "Empty", "gui.appliedenergistics2.Encoded": "Encoded", @@ -188,12 +187,10 @@ "gui.appliedenergistics2.Excluded": "Excluded", "gui.appliedenergistics2.ExportBus": "ME Export Bus", "gui.appliedenergistics2.ExportBusFluids": "ME Fluid Export Bus", - "gui.appliedenergistics2.FETunnel": "FE", "gui.appliedenergistics2.FacadeCrafting": "Facade Crafting", "gui.appliedenergistics2.FluidFormationPlane": "Fluid Formation Plane", "gui.appliedenergistics2.FluidInterface": "ME Fluid Interface", "gui.appliedenergistics2.FluidLevelEmitter": "ME Fluid Level Emitter", - "gui.appliedenergistics2.FluidTunnel": "Fluid", "gui.appliedenergistics2.Fluix": "Fluix", "gui.appliedenergistics2.FormationPlane": "Formation Plane", "gui.appliedenergistics2.FromStorage": "Available", @@ -214,16 +211,13 @@ "gui.appliedenergistics2.InterfaceTerminal": "Interface Terminal", "gui.appliedenergistics2.InterfaceTerminalHint": "Show Or Hide on Interface Terminal.", "gui.appliedenergistics2.InvalidPattern": "Invalid Pattern", - "gui.appliedenergistics2.ItemTunnel": "Item", "gui.appliedenergistics2.LargeFontCraft": "+", "gui.appliedenergistics2.LevelEmitter": "ME Level Emitter", "gui.appliedenergistics2.LightBlue": "Light Blue", "gui.appliedenergistics2.LightGray": "Light Gray", - "gui.appliedenergistics2.LightTunnel": "Light", "gui.appliedenergistics2.Lime": "Lime", "gui.appliedenergistics2.Linked": "Linked", "gui.appliedenergistics2.Lumen": "Lumen", - "gui.appliedenergistics2.METunnel": "ME", "gui.appliedenergistics2.Magenta": "Magenta", "gui.appliedenergistics2.MaxPower": "Max Power", "gui.appliedenergistics2.Missing": "Missing", @@ -258,7 +252,6 @@ "gui.appliedenergistics2.QuartzCuttingKnife": "Quartz Cutting Knife", "gui.appliedenergistics2.Range": "Range", "gui.appliedenergistics2.Red": "Red", - "gui.appliedenergistics2.RedstoneTunnel": "Redstone", "gui.appliedenergistics2.RequiredPower": "Required Power", "gui.appliedenergistics2.SCSInvalid": "Invalid", "gui.appliedenergistics2.SCSSize": "SCS Size", @@ -475,6 +468,7 @@ "item.appliedenergistics2.debug_card": "Dev.DebugCard", "item.appliedenergistics2.debug_eraser": "Dev.Eraser", "item.appliedenergistics2.debug_meteorite_placer": "Dev.MeteoritePlacer", + "item.appliedenergistics2.debug_part_placer": "Dev.PartPlacer", "item.appliedenergistics2.debug_replicator_card": "Dev.ReplicatorCard", "item.appliedenergistics2.empty_storage_cell": "ME Storage Housing", "item.appliedenergistics2.encoded_pattern": "Encoded Pattern", @@ -485,6 +479,7 @@ "item.appliedenergistics2.entropy_manipulator": "Entropy Manipulator", "item.appliedenergistics2.export_bus": "ME Export Bus", "item.appliedenergistics2.facade": "Cable Facade", + "item.appliedenergistics2.fe_p2p_tunnel": "FE P2P Tunnel", "item.appliedenergistics2.flour": "Flour", "item.appliedenergistics2.fluid_annihilation_plane": "ME Fluid Annihilation Plane", "item.appliedenergistics2.fluid_cell16k_part": "16k ME Fluid Storage Component", @@ -495,6 +490,7 @@ "item.appliedenergistics2.fluid_formation_plane": "ME Fluid Formation Plane", "item.appliedenergistics2.fluid_import_bus": "ME Fluid Import Bus", "item.appliedenergistics2.fluid_level_emitter": "ME Fluid Level Emitter", + "item.appliedenergistics2.fluid_p2p_tunnel": "Fluid P2P Tunnel", "item.appliedenergistics2.fluid_storage_bus": "ME Fluid Storage Bus", "item.appliedenergistics2.fluid_storage_cell_16k": "16k ME Fluid Storage Cell", "item.appliedenergistics2.fluid_storage_cell_1k": "1k ME Fluid Storage Cell", @@ -524,6 +520,7 @@ "item.appliedenergistics2.green_glass_cable": "Green ME Glass Cable", "item.appliedenergistics2.green_smart_cable": "Green ME Smart Cable", "item.appliedenergistics2.green_smart_dense_cable": "Green ME Dense Smart Cable", + "item.appliedenergistics2.ic2_p2p_tunnel": "EU P2P Tunnel", "item.appliedenergistics2.identity_annihilation_plane": "ME Identity Annihilation Plane", "item.appliedenergistics2.import_bus": "ME Import Bus", "item.appliedenergistics2.interface_terminal": "ME Interface Terminal", @@ -531,6 +528,7 @@ "item.appliedenergistics2.inverted_toggle_bus": "ME Inverted Toggle Bus", "item.appliedenergistics2.inverter_card": "Inverter Card", "item.appliedenergistics2.iron_dust": "Iron Dust", + "item.appliedenergistics2.item_p2p_tunnel": "Item P2P Tunnel", "item.appliedenergistics2.level_emitter": "ME Level Emitter", "item.appliedenergistics2.light_blue_covered_cable": "Light Blue ME Covered Cable", "item.appliedenergistics2.light_blue_covered_dense_cable": "Light Blue ME Dense Covered Cable", @@ -542,6 +540,7 @@ "item.appliedenergistics2.light_gray_glass_cable": "Light Gray ME Glass Cable", "item.appliedenergistics2.light_gray_smart_cable": "Light Gray ME Smart Cable", "item.appliedenergistics2.light_gray_smart_dense_cable": "Light Gray ME Dense Smart Cable", + "item.appliedenergistics2.light_p2p_tunnel": "Light P2P Tunnel", "item.appliedenergistics2.lime_covered_cable": "Lime ME Covered Cable", "item.appliedenergistics2.lime_covered_dense_cable": "Lime ME Dense Covered Cable", "item.appliedenergistics2.lime_glass_cable": "Lime ME Glass Cable", @@ -559,6 +558,7 @@ "item.appliedenergistics2.magenta_smart_dense_cable": "Magenta ME Dense Smart Cable", "item.appliedenergistics2.matter_ball": "Matter Ball", "item.appliedenergistics2.matter_cannon": "Matter Cannon", + "item.appliedenergistics2.me_p2p_tunnel": "ME P2P Tunnel", "item.appliedenergistics2.memory_card": "Memory Card", "item.appliedenergistics2.monitor": "Bright Illuminated Panel", "item.appliedenergistics2.name_press": "Inscriber Name Press", @@ -577,7 +577,6 @@ "item.appliedenergistics2.orange_glass_cable": "Orange ME Glass Cable", "item.appliedenergistics2.orange_smart_cable": "Orange ME Smart Cable", "item.appliedenergistics2.orange_smart_dense_cable": "Orange ME Dense Smart Cable", - "item.appliedenergistics2.p2p_tunnel": "P2P Tunnel", "item.appliedenergistics2.paint_ball": "Paint Ball", "item.appliedenergistics2.pattern_terminal": "ME Pattern Terminal", "item.appliedenergistics2.pink_covered_cable": "Pink ME Covered Cable", @@ -602,6 +601,7 @@ "item.appliedenergistics2.red_smart_cable": "Red ME Smart Cable", "item.appliedenergistics2.red_smart_dense_cable": "Red ME Dense Smart Cable", "item.appliedenergistics2.redstone_card": "Redstone Card", + "item.appliedenergistics2.redstone_p2p_tunnel": "Redstone P2P Tunnel", "item.appliedenergistics2.semi_dark_monitor": "Illuminated Panel", "item.appliedenergistics2.silicon": "Silicon", "item.appliedenergistics2.silicon_press": "Inscriber Silicon Press", diff --git a/src/main/resources/assets/appliedenergistics2/lang/es_es.json b/src/main/resources/assets/appliedenergistics2/lang/es_es.json index 4662f3487..d336df903 100644 --- a/src/main/resources/assets/appliedenergistics2/lang/es_es.json +++ b/src/main/resources/assets/appliedenergistics2/lang/es_es.json @@ -92,14 +92,11 @@ "gui.appliedenergistics2.Creates": "Crear", "gui.appliedenergistics2.Cyan": "Celeste", "gui.appliedenergistics2.Drive": "ME Rack Discos", - "gui.appliedenergistics2.EUTunnel": "EU", "gui.appliedenergistics2.Efficiency": "Eficiencia", "gui.appliedenergistics2.Empty": "Vacío", "gui.appliedenergistics2.Encoded": "Codificado", "gui.appliedenergistics2.EnergyDrain": "Drenaje Pasivo", "gui.appliedenergistics2.ExportBus": "ME Exportación Bus", - "gui.appliedenergistics2.FETunnel": "FE", - "gui.appliedenergistics2.FluidTunnel": "Fluidos", "gui.appliedenergistics2.Fluix": "Fluix", "gui.appliedenergistics2.FormationPlane": "Panel de Formación", "gui.appliedenergistics2.FromStorage": "Disponible", @@ -116,15 +113,12 @@ "gui.appliedenergistics2.InterfaceTerminal": "Terminal de Interfaces", "gui.appliedenergistics2.InterfaceTerminalHint": "Mostrar o Ocultar en la Terminal de Interfaces.", "gui.appliedenergistics2.InvalidPattern": "Patrón Invalido", - "gui.appliedenergistics2.ItemTunnel": "Objetos", "gui.appliedenergistics2.LevelEmitter": "ME Emisor", "gui.appliedenergistics2.LightBlue": "Azúl Claro", "gui.appliedenergistics2.LightGray": "Gris Claro", - "gui.appliedenergistics2.LightTunnel": "Luz", "gui.appliedenergistics2.Lime": "Lima", "gui.appliedenergistics2.Linked": "Vinculado", "gui.appliedenergistics2.Lumen": "Lumen", - "gui.appliedenergistics2.METunnel": "ME", "gui.appliedenergistics2.Magenta": "Magenta", "gui.appliedenergistics2.MaxPower": "Poder Máximo", "gui.appliedenergistics2.Missing": "Perdido", @@ -152,7 +146,6 @@ "gui.appliedenergistics2.QuartzCuttingKnife": "Cuchillo de Corte de Cuarzo", "gui.appliedenergistics2.Range": "Alcance", "gui.appliedenergistics2.Red": "Rojo", - "gui.appliedenergistics2.RedstoneTunnel": "Redstone", "gui.appliedenergistics2.RequiredPower": "Poder Requerido", "gui.appliedenergistics2.Scheduled": "Programado", "gui.appliedenergistics2.Security": "Terminal de Seguridad", @@ -335,7 +328,9 @@ "item.appliedenergistics2.entropy_manipulator": "Manipulador de Entropía", "item.appliedenergistics2.export_bus": "ME Bus de Exportación", "item.appliedenergistics2.facade": "Fachada de Cable", + "item.appliedenergistics2.fe_p2p_tunnel": "FE Tunel P2P", "item.appliedenergistics2.flour": "Harina", + "item.appliedenergistics2.fluid_p2p_tunnel": "Fluidos Tunel P2P", "item.appliedenergistics2.fluix_covered_cable": "Fluix ME Cable Cubierto", "item.appliedenergistics2.fluix_crystal": "Cristal de Fluix", "item.appliedenergistics2.fluix_crystal_seed": "Semilla de Fluix", @@ -356,11 +351,13 @@ "item.appliedenergistics2.green_glass_cable": "Verde ME Cable de Cristal", "item.appliedenergistics2.green_smart_cable": "Verde ME Cable Avanzado", "item.appliedenergistics2.green_smart_dense_cable": "Verde ME Cable Denso", + "item.appliedenergistics2.ic2_p2p_tunnel": "EU Tunel P2P", "item.appliedenergistics2.import_bus": "ME Bus de Importación", "item.appliedenergistics2.interface_terminal": "ME Terminal de Interfaces", "item.appliedenergistics2.inverted_toggle_bus": "ME Bus de Cambio Inverso", "item.appliedenergistics2.inverter_card": "Tarjeta Inversora", "item.appliedenergistics2.iron_dust": "Polvo de Hierro", + "item.appliedenergistics2.item_p2p_tunnel": "Objetos Tunel P2P", "item.appliedenergistics2.level_emitter": "ME Emisor", "item.appliedenergistics2.light_blue_covered_cable": "Azúl Claro ME Cable Cubierto", "item.appliedenergistics2.light_blue_glass_cable": "Azúl Claro ME Cable de Cristal", @@ -370,6 +367,7 @@ "item.appliedenergistics2.light_gray_glass_cable": "Gris Claro ME Cable de Cristal", "item.appliedenergistics2.light_gray_smart_cable": "Gris Claro ME Cable Avanzado", "item.appliedenergistics2.light_gray_smart_dense_cable": "Gris Claro ME Cable Denso", + "item.appliedenergistics2.light_p2p_tunnel": "Luz Tunel P2P", "item.appliedenergistics2.lime_covered_cable": "Lima ME Cable Cubierto", "item.appliedenergistics2.lime_glass_cable": "Lima ME Cable de Cristal", "item.appliedenergistics2.lime_smart_cable": "Lima ME Cable Avanzado", @@ -385,6 +383,7 @@ "item.appliedenergistics2.magenta_smart_dense_cable": "Magenta ME Cable Denso", "item.appliedenergistics2.matter_ball": "Bola de Materia", "item.appliedenergistics2.matter_cannon": "Cañon de Materia", + "item.appliedenergistics2.me_p2p_tunnel": "ME Tunel P2P", "item.appliedenergistics2.memory_card": "Tarjeta de Memoria", "item.appliedenergistics2.monitor": "Panel Iluminado Claro", "item.appliedenergistics2.name_press": "Prensa de Nombres", @@ -402,7 +401,6 @@ "item.appliedenergistics2.orange_glass_cable": "Naranja ME Cable de Cristal", "item.appliedenergistics2.orange_smart_cable": "Naranja ME Cable Avanzado", "item.appliedenergistics2.orange_smart_dense_cable": "Naranja ME Cable Denso", - "item.appliedenergistics2.p2p_tunnel": "Tunel P2P", "item.appliedenergistics2.paint_ball": "Bola de Pintura", "item.appliedenergistics2.pattern_terminal": "ME Terminal de Patrones", "item.appliedenergistics2.pink_covered_cable": "Rosa ME Cable Cubierto", @@ -424,6 +422,7 @@ "item.appliedenergistics2.red_smart_cable": "Rojo ME Cable Avanzado", "item.appliedenergistics2.red_smart_dense_cable": "Rojo ME Cable Denso", "item.appliedenergistics2.redstone_card": "Tarjeta de Redstone", + "item.appliedenergistics2.redstone_p2p_tunnel": "Redstone Tunel P2P", "item.appliedenergistics2.semi_dark_monitor": "Panel Iluminado", "item.appliedenergistics2.silicon": "Silicona", "item.appliedenergistics2.silicon_press": "Prensa de Silicona", diff --git a/src/main/resources/assets/appliedenergistics2/lang/fr_fr.json b/src/main/resources/assets/appliedenergistics2/lang/fr_fr.json index caef3d52b..ab1289314 100644 --- a/src/main/resources/assets/appliedenergistics2/lang/fr_fr.json +++ b/src/main/resources/assets/appliedenergistics2/lang/fr_fr.json @@ -169,16 +169,13 @@ "gui.appliedenergistics2.Cyan": "Cyan", "gui.appliedenergistics2.Drive": "Range-disque ME", "gui.appliedenergistics2.ETAFormat": "HH:mm:ss", - "gui.appliedenergistics2.EUTunnel": "EU", "gui.appliedenergistics2.Efficiency": "Efficacité", "gui.appliedenergistics2.Empty": "Vide", "gui.appliedenergistics2.Encoded": "Encodé", "gui.appliedenergistics2.EnergyDrain": "Drain passif", "gui.appliedenergistics2.Excluded": "Exclus", "gui.appliedenergistics2.ExportBus": "Bus d'export ME", - "gui.appliedenergistics2.FETunnel": "FE", "gui.appliedenergistics2.FacadeCrafting": "Fabrication de façade", - "gui.appliedenergistics2.FluidTunnel": "Fluide", "gui.appliedenergistics2.Fluix": "Fluix", "gui.appliedenergistics2.FormationPlane": "Plan de formation", "gui.appliedenergistics2.FromStorage": "Disponible", @@ -197,16 +194,13 @@ "gui.appliedenergistics2.InterfaceTerminal": "Terminal d'interface", "gui.appliedenergistics2.InterfaceTerminalHint": "Montrer ou cacher sur le terminal d'interface.", "gui.appliedenergistics2.InvalidPattern": "Modèle non valide", - "gui.appliedenergistics2.ItemTunnel": "Objet", "gui.appliedenergistics2.LargeFontCraft": "+", "gui.appliedenergistics2.LevelEmitter": "Emetteur de niveau ME", "gui.appliedenergistics2.LightBlue": "Bleu clair", "gui.appliedenergistics2.LightGray": "Gris clair", - "gui.appliedenergistics2.LightTunnel": "Lumière", "gui.appliedenergistics2.Lime": "Vert citron", "gui.appliedenergistics2.Linked": "Lié", "gui.appliedenergistics2.Lumen": "Lumen", - "gui.appliedenergistics2.METunnel": "ME", "gui.appliedenergistics2.Magenta": "Magenta", "gui.appliedenergistics2.MaxPower": "Puissance maxi", "gui.appliedenergistics2.Missing": "Manquant", @@ -239,7 +233,6 @@ "gui.appliedenergistics2.QuartzCuttingKnife": "Couteau en Quartz", "gui.appliedenergistics2.Range": "Portée", "gui.appliedenergistics2.Red": "Rouge", - "gui.appliedenergistics2.RedstoneTunnel": "Redstone", "gui.appliedenergistics2.RequiredPower": "Puissance requise", "gui.appliedenergistics2.Scheduled": "Prévu", "gui.appliedenergistics2.Security": "Terminal de sécurité", @@ -441,7 +434,9 @@ "item.appliedenergistics2.entropy_manipulator": "Manipulateur entropique", "item.appliedenergistics2.export_bus": "Bus d'export ME", "item.appliedenergistics2.facade": "Façade de câble", + "item.appliedenergistics2.fe_p2p_tunnel": "FE Tunnel P2P", "item.appliedenergistics2.flour": "Farine", + "item.appliedenergistics2.fluid_p2p_tunnel": "Fluide Tunnel P2P", "item.appliedenergistics2.fluix_covered_cable": "Fluix Câble couvert ME", "item.appliedenergistics2.fluix_crystal": "Cristal de Fluix", "item.appliedenergistics2.fluix_crystal_seed": "Graine de Fluix", @@ -462,6 +457,7 @@ "item.appliedenergistics2.green_glass_cable": "Vert Câble de verre ME", "item.appliedenergistics2.green_smart_cable": "Vert Câble intelligent ME", "item.appliedenergistics2.green_smart_dense_cable": "Vert Câble dense ME", + "item.appliedenergistics2.ic2_p2p_tunnel": "EU Tunnel P2P", "item.appliedenergistics2.identity_annihilation_plane": "Plan de dématérialisation d'identité ME", "item.appliedenergistics2.import_bus": "Bus d'import ME", "item.appliedenergistics2.interface_terminal": "Terminal d'interface ME", @@ -469,6 +465,7 @@ "item.appliedenergistics2.inverted_toggle_bus": "Bus levier inversé ME", "item.appliedenergistics2.inverter_card": "Carte d'inversion", "item.appliedenergistics2.iron_dust": "Poussière de fer", + "item.appliedenergistics2.item_p2p_tunnel": "Objet Tunnel P2P", "item.appliedenergistics2.level_emitter": "Emetteur de niveau ME", "item.appliedenergistics2.light_blue_covered_cable": "Bleu clair Câble couvert ME", "item.appliedenergistics2.light_blue_glass_cable": "Bleu clair Câble de verre ME", @@ -478,6 +475,7 @@ "item.appliedenergistics2.light_gray_glass_cable": "Gris clair Câble de verre ME", "item.appliedenergistics2.light_gray_smart_cable": "Gris clair Câble intelligent ME", "item.appliedenergistics2.light_gray_smart_dense_cable": "Gris clair Câble dense ME", + "item.appliedenergistics2.light_p2p_tunnel": "Lumière Tunnel P2P", "item.appliedenergistics2.lime_covered_cable": "Vert citron Câble couvert ME", "item.appliedenergistics2.lime_glass_cable": "Vert citron Câble de verre ME", "item.appliedenergistics2.lime_smart_cable": "Vert citron Câble intelligent ME", @@ -493,6 +491,7 @@ "item.appliedenergistics2.magenta_smart_dense_cable": "Magenta Câble dense ME", "item.appliedenergistics2.matter_ball": "Bille de matière", "item.appliedenergistics2.matter_cannon": "Cannon à matière", + "item.appliedenergistics2.me_p2p_tunnel": "ME Tunnel P2P", "item.appliedenergistics2.memory_card": "Carte mémoire", "item.appliedenergistics2.monitor": "Panneau illuminé éclairé", "item.appliedenergistics2.name_press": "Matrice de presse de nommage", @@ -510,7 +509,6 @@ "item.appliedenergistics2.orange_glass_cable": "Orange Câble de verre ME", "item.appliedenergistics2.orange_smart_cable": "Orange Câble intelligent ME", "item.appliedenergistics2.orange_smart_dense_cable": "Orange Câble dense ME", - "item.appliedenergistics2.p2p_tunnel": "Tunnel P2P", "item.appliedenergistics2.paint_ball": "Bille de peinture", "item.appliedenergistics2.pattern_terminal": "Terminal de modèles ME", "item.appliedenergistics2.pink_covered_cable": "Rose Câble couvert ME", @@ -532,6 +530,7 @@ "item.appliedenergistics2.red_smart_cable": "Rouge Câble intelligent ME", "item.appliedenergistics2.red_smart_dense_cable": "Rouge Câble dense ME", "item.appliedenergistics2.redstone_card": "Carte de Redstone", + "item.appliedenergistics2.redstone_p2p_tunnel": "Redstone Tunnel P2P", "item.appliedenergistics2.semi_dark_monitor": "Panneau illuminé", "item.appliedenergistics2.silicon": "Silicone", "item.appliedenergistics2.silicon_press": "Matrice de presse de silicone", diff --git a/src/main/resources/assets/appliedenergistics2/lang/it_it.json b/src/main/resources/assets/appliedenergistics2/lang/it_it.json index a8ea8cc2e..e50be2f73 100644 --- a/src/main/resources/assets/appliedenergistics2/lang/it_it.json +++ b/src/main/resources/assets/appliedenergistics2/lang/it_it.json @@ -160,16 +160,13 @@ "gui.appliedenergistics2.Creates": "Crea", "gui.appliedenergistics2.Cyan": "Ciano", "gui.appliedenergistics2.Drive": "Drive ME", - "gui.appliedenergistics2.EUTunnel": "EU", "gui.appliedenergistics2.Efficiency": "Efficienza", "gui.appliedenergistics2.Empty": "Vuoto", "gui.appliedenergistics2.Encoded": "Codificato", "gui.appliedenergistics2.EnergyDrain": "Uso passivo di energia", "gui.appliedenergistics2.Excluded": "Escluso", "gui.appliedenergistics2.ExportBus": "Bus esportatore ME", - "gui.appliedenergistics2.FETunnel": "FE", "gui.appliedenergistics2.FacadeCrafting": "Fabbricazione di facciate", - "gui.appliedenergistics2.FluidTunnel": "Fluido", "gui.appliedenergistics2.Fluix": "Fluix", "gui.appliedenergistics2.FormationPlane": "Piano di formazione", "gui.appliedenergistics2.FromStorage": "Avviabile", @@ -188,16 +185,13 @@ "gui.appliedenergistics2.InterfaceTerminal": "Terminale con interfaccia", "gui.appliedenergistics2.InterfaceTerminalHint": "Mostra o nascondi Terminale con interfaccia.", "gui.appliedenergistics2.InvalidPattern": "Modello invalido", - "gui.appliedenergistics2.ItemTunnel": "Oggetto", "gui.appliedenergistics2.LargeFontCraft": "+", "gui.appliedenergistics2.LevelEmitter": "Emettitore di pietrarossa ME", "gui.appliedenergistics2.LightBlue": "Azzurro", "gui.appliedenergistics2.LightGray": "Grigio Chiaro", - "gui.appliedenergistics2.LightTunnel": "Luce", "gui.appliedenergistics2.Lime": "Lime", "gui.appliedenergistics2.Linked": "Collegato", "gui.appliedenergistics2.Lumen": "Lumen", - "gui.appliedenergistics2.METunnel": "ME", "gui.appliedenergistics2.Magenta": "Magenta", "gui.appliedenergistics2.MaxPower": "Energia massima", "gui.appliedenergistics2.Missing": "Manca", @@ -228,7 +222,6 @@ "gui.appliedenergistics2.QuartzCuttingKnife": "Coltello di quarzo", "gui.appliedenergistics2.Range": "Raggio", "gui.appliedenergistics2.Red": "Rosso", - "gui.appliedenergistics2.RedstoneTunnel": "Pietrarossa", "gui.appliedenergistics2.RequiredPower": "Energia richiesta", "gui.appliedenergistics2.Scheduled": "Programmato", "gui.appliedenergistics2.Security": "Terminale di sicurezza", @@ -426,7 +419,9 @@ "item.appliedenergistics2.entropy_manipulator": "Manipulatore di entropia", "item.appliedenergistics2.export_bus": "Bus esportatore ME", "item.appliedenergistics2.facade": "Facciata per cavo", + "item.appliedenergistics2.fe_p2p_tunnel": "FE P2P Tunnel", "item.appliedenergistics2.flour": "Farina", + "item.appliedenergistics2.fluid_p2p_tunnel": "Fluido P2P Tunnel", "item.appliedenergistics2.fluix_covered_cable": "Fluix Cavo comperto ME", "item.appliedenergistics2.fluix_crystal": "Cristallo di Fluix", "item.appliedenergistics2.fluix_crystal_seed": "Seme di fluix", @@ -447,12 +442,14 @@ "item.appliedenergistics2.green_glass_cable": "Verde Cavo di vetro ME", "item.appliedenergistics2.green_smart_cable": "Verde Cavo intelligente ME", "item.appliedenergistics2.green_smart_dense_cable": "Verde Cavo denso ME", + "item.appliedenergistics2.ic2_p2p_tunnel": "EU P2P Tunnel", "item.appliedenergistics2.import_bus": "Bus importatore ME", "item.appliedenergistics2.interface_terminal": "Terminale con interfaccia ME", "item.appliedenergistics2.invalid_type": "Quest'oggetto è disabilitato.", "item.appliedenergistics2.inverted_toggle_bus": "Bus alternatore inverso ME", "item.appliedenergistics2.inverter_card": "Scheda invertita", "item.appliedenergistics2.iron_dust": "Polvere di ferro", + "item.appliedenergistics2.item_p2p_tunnel": "Oggetto P2P Tunnel", "item.appliedenergistics2.level_emitter": "Emettitore di pietrarossa ME", "item.appliedenergistics2.light_blue_covered_cable": "Azzurro Cavo comperto ME", "item.appliedenergistics2.light_blue_glass_cable": "Azzurro Cavo di vetro ME", @@ -462,6 +459,7 @@ "item.appliedenergistics2.light_gray_glass_cable": "Grigio Chiaro Cavo di vetro ME", "item.appliedenergistics2.light_gray_smart_cable": "Grigio Chiaro Cavo intelligente ME", "item.appliedenergistics2.light_gray_smart_dense_cable": "Grigio Chiaro Cavo denso ME", + "item.appliedenergistics2.light_p2p_tunnel": "Luce P2P Tunnel", "item.appliedenergistics2.lime_covered_cable": "Lime Cavo comperto ME", "item.appliedenergistics2.lime_glass_cable": "Lime Cavo di vetro ME", "item.appliedenergistics2.lime_smart_cable": "Lime Cavo intelligente ME", @@ -477,6 +475,7 @@ "item.appliedenergistics2.magenta_smart_dense_cable": "Magenta Cavo denso ME", "item.appliedenergistics2.matter_ball": "Sfera di materia", "item.appliedenergistics2.matter_cannon": "Cannone di materia", + "item.appliedenergistics2.me_p2p_tunnel": "ME P2P Tunnel", "item.appliedenergistics2.memory_card": "Scheda per la memoria", "item.appliedenergistics2.monitor": "Pannello illuminato chiaro", "item.appliedenergistics2.name_press": "Stampo di nomi per incisore", @@ -494,7 +493,6 @@ "item.appliedenergistics2.orange_glass_cable": "Arancione Cavo di vetro ME", "item.appliedenergistics2.orange_smart_cable": "Arancione Cavo intelligente ME", "item.appliedenergistics2.orange_smart_dense_cable": "Arancione Cavo denso ME", - "item.appliedenergistics2.p2p_tunnel": "P2P Tunnel", "item.appliedenergistics2.paint_ball": "Sfera di vernice", "item.appliedenergistics2.pattern_terminal": "Terminale per modelli ME", "item.appliedenergistics2.pink_covered_cable": "Rosa Cavo comperto ME", @@ -516,6 +514,7 @@ "item.appliedenergistics2.red_smart_cable": "Rosso Cavo intelligente ME", "item.appliedenergistics2.red_smart_dense_cable": "Rosso Cavo denso ME", "item.appliedenergistics2.redstone_card": "Sceda pietrarossa", + "item.appliedenergistics2.redstone_p2p_tunnel": "Pietrarossa P2P Tunnel", "item.appliedenergistics2.semi_dark_monitor": "Pannello illuminato", "item.appliedenergistics2.silicon": "Silicone", "item.appliedenergistics2.silicon_press": "Stampo di silicone per incisore", diff --git a/src/main/resources/assets/appliedenergistics2/lang/ko_kr.json b/src/main/resources/assets/appliedenergistics2/lang/ko_kr.json index 24315a80d..fda70d946 100644 --- a/src/main/resources/assets/appliedenergistics2/lang/ko_kr.json +++ b/src/main/resources/assets/appliedenergistics2/lang/ko_kr.json @@ -173,7 +173,6 @@ "gui.appliedenergistics2.Cyan": "청록색", "gui.appliedenergistics2.Drive": "ME 드라이브", "gui.appliedenergistics2.ETAFormat": "HH:mm:ss", - "gui.appliedenergistics2.EUTunnel": "EU", "gui.appliedenergistics2.Efficiency": "효율", "gui.appliedenergistics2.Empty": "비어있음", "gui.appliedenergistics2.Encoded": "기록됨", @@ -181,11 +180,9 @@ "gui.appliedenergistics2.Excluded": "제외됨", "gui.appliedenergistics2.ExportBus": "ME 반출 버스", "gui.appliedenergistics2.ExportBusFluids": "ME 액체 반출 버스", - "gui.appliedenergistics2.FETunnel": "FE", "gui.appliedenergistics2.FacadeCrafting": "덮개 제작", "gui.appliedenergistics2.FluidFormationPlane": "액체 생성면", "gui.appliedenergistics2.FluidInterface": "ME 액체 인터페이스", - "gui.appliedenergistics2.FluidTunnel": "액체", "gui.appliedenergistics2.Fluix": "액정", "gui.appliedenergistics2.FormationPlane": "생성면", "gui.appliedenergistics2.FromStorage": "활성화", @@ -206,16 +203,13 @@ "gui.appliedenergistics2.InterfaceTerminal": "인터페이스 터미널", "gui.appliedenergistics2.InterfaceTerminalHint": "인터페이스 터미널에서 보여주거나 숨깁니다.", "gui.appliedenergistics2.InvalidPattern": "알 수 없는 패턴", - "gui.appliedenergistics2.ItemTunnel": "아이템", "gui.appliedenergistics2.LargeFontCraft": "+", "gui.appliedenergistics2.LevelEmitter": "ME 레벨 측정기", "gui.appliedenergistics2.LightBlue": "하늘색", "gui.appliedenergistics2.LightGray": "밝은 회색", - "gui.appliedenergistics2.LightTunnel": "빛", "gui.appliedenergistics2.Lime": "연두색", "gui.appliedenergistics2.Linked": "연결됨", "gui.appliedenergistics2.Lumen": "루멘", - "gui.appliedenergistics2.METunnel": "ME", "gui.appliedenergistics2.Magenta": "자홍색", "gui.appliedenergistics2.MaxPower": "최대 전력량", "gui.appliedenergistics2.Missing": "부족", @@ -250,7 +244,6 @@ "gui.appliedenergistics2.QuartzCuttingKnife": "석영 조각도", "gui.appliedenergistics2.Range": "범위", "gui.appliedenergistics2.Red": "빨강색", - "gui.appliedenergistics2.RedstoneTunnel": "레드스톤", "gui.appliedenergistics2.RequiredPower": "전력 요구량", "gui.appliedenergistics2.SCSInvalid": "무효", "gui.appliedenergistics2.SCSSize": "SCS 규모", @@ -468,6 +461,7 @@ "item.appliedenergistics2.entropy_manipulator": "엔트로피 조종기", "item.appliedenergistics2.export_bus": "ME 유출 버스", "item.appliedenergistics2.facade": "케이블 덮개", + "item.appliedenergistics2.fe_p2p_tunnel": "FE P2P 터널", "item.appliedenergistics2.flour": "가루", "item.appliedenergistics2.fluid_annihilation_plane": "ME 액체 소멸 평면", "item.appliedenergistics2.fluid_cell16k_part": "16k ME 액체 저장 요소", @@ -478,6 +472,7 @@ "item.appliedenergistics2.fluid_formation_plane": "ME 액체 생성면", "item.appliedenergistics2.fluid_import_bus": "ME 액체 유입 버스", "item.appliedenergistics2.fluid_level_emitter": "ME 액체 레벨 측정기", + "item.appliedenergistics2.fluid_p2p_tunnel": "액체 P2P 터널", "item.appliedenergistics2.fluid_storage_bus": "ME 액체 저장 버스", "item.appliedenergistics2.fluid_storage_cell_16k": "16k ME 액체 저장 셀", "item.appliedenergistics2.fluid_storage_cell_1k": "1k ME 액체 저장 셀", @@ -504,6 +499,7 @@ "item.appliedenergistics2.green_glass_cable": "초록색 ME 유리 케이블", "item.appliedenergistics2.green_smart_cable": "초록색 ME 스마트 케이블", "item.appliedenergistics2.green_smart_dense_cable": "초록색 ME 조밀 스마트 케이블", + "item.appliedenergistics2.ic2_p2p_tunnel": "EU P2P 터널", "item.appliedenergistics2.identity_annihilation_plane": "ME 확인 소멸 평면", "item.appliedenergistics2.import_bus": "ME 유입 버스", "item.appliedenergistics2.interface_terminal": "ME 인터페이스 터미널", @@ -511,6 +507,7 @@ "item.appliedenergistics2.inverted_toggle_bus": "ME 반전된 토글 버스", "item.appliedenergistics2.inverter_card": "변환 카드", "item.appliedenergistics2.iron_dust": "철 가루", + "item.appliedenergistics2.item_p2p_tunnel": "아이템 P2P 터널", "item.appliedenergistics2.level_emitter": "ME 레벨 측정기", "item.appliedenergistics2.light_blue_covered_cable": "하늘색 ME 차폐 케이블", "item.appliedenergistics2.light_blue_glass_cable": "하늘색 ME 유리 케이블", @@ -520,6 +517,7 @@ "item.appliedenergistics2.light_gray_glass_cable": "밝은 회색 ME 유리 케이블", "item.appliedenergistics2.light_gray_smart_cable": "밝은 회색 ME 스마트 케이블", "item.appliedenergistics2.light_gray_smart_dense_cable": "밝은 회색 ME 조밀 스마트 케이블", + "item.appliedenergistics2.light_p2p_tunnel": "빛 P2P 터널", "item.appliedenergistics2.lime_covered_cable": "연두색 ME 차폐 케이블", "item.appliedenergistics2.lime_glass_cable": "연두색 ME 유리 케이블", "item.appliedenergistics2.lime_smart_cable": "연두색 ME 스마트 케이블", @@ -535,6 +533,7 @@ "item.appliedenergistics2.magenta_smart_dense_cable": "자홍색 ME 조밀 스마트 케이블", "item.appliedenergistics2.matter_ball": "물질 공", "item.appliedenergistics2.matter_cannon": "물질 대포", + "item.appliedenergistics2.me_p2p_tunnel": "ME P2P 터널", "item.appliedenergistics2.memory_card": "메모리 카드", "item.appliedenergistics2.monitor": "밝은 조명판", "item.appliedenergistics2.name_press": "이름 프레스", @@ -552,7 +551,6 @@ "item.appliedenergistics2.orange_glass_cable": "주황 ME 유리 케이블", "item.appliedenergistics2.orange_smart_cable": "주황 ME 스마트 케이블", "item.appliedenergistics2.orange_smart_dense_cable": "주황 ME 조밀 스마트 케이블", - "item.appliedenergistics2.p2p_tunnel": "P2P 터널", "item.appliedenergistics2.paint_ball": "페인트 공", "item.appliedenergistics2.pattern_terminal": "ME 패턴 터미널", "item.appliedenergistics2.pink_covered_cable": "분홍색 ME 차폐 케이블", @@ -574,6 +572,7 @@ "item.appliedenergistics2.red_smart_cable": "빨강색 ME 스마트 케이블", "item.appliedenergistics2.red_smart_dense_cable": "빨강색 ME 조밀 스마트 케이블", "item.appliedenergistics2.redstone_card": "레드스톤 카드", + "item.appliedenergistics2.redstone_p2p_tunnel": "레드스톤 P2P 터널", "item.appliedenergistics2.semi_dark_monitor": "조명판", "item.appliedenergistics2.silicon": "실리콘", "item.appliedenergistics2.silicon_press": "실리콘 프레스", diff --git a/src/main/resources/assets/appliedenergistics2/lang/pt_br.json b/src/main/resources/assets/appliedenergistics2/lang/pt_br.json index 1ed1e5a1a..971bdca84 100644 --- a/src/main/resources/assets/appliedenergistics2/lang/pt_br.json +++ b/src/main/resources/assets/appliedenergistics2/lang/pt_br.json @@ -174,7 +174,6 @@ "gui.appliedenergistics2.Cyan": "Ciano", "gui.appliedenergistics2.Drive": "Acionador ME", "gui.appliedenergistics2.ETAFormat": "HH:mm:ss", - "gui.appliedenergistics2.EUTunnel": "EU", "gui.appliedenergistics2.Efficiency": "Eficiência", "gui.appliedenergistics2.Empty": "Vazio", "gui.appliedenergistics2.Encoded": "Codificado", @@ -182,12 +181,10 @@ "gui.appliedenergistics2.Excluded": "Excluído", "gui.appliedenergistics2.ExportBus": "Barramento ME de Exportação", "gui.appliedenergistics2.ExportBusFluids": "Barramento ME de Exportação de Fluidos", - "gui.appliedenergistics2.FETunnel": "FE", "gui.appliedenergistics2.FacadeCrafting": "Receita de Fachada", "gui.appliedenergistics2.FluidFormationPlane": "Plano de Formação de Fluido", "gui.appliedenergistics2.FluidInterface": "Interface ME de Fluido", "gui.appliedenergistics2.FluidLevelEmitter": "Emissor ME de Nível de Fluido", - "gui.appliedenergistics2.FluidTunnel": "Fluido", "gui.appliedenergistics2.Fluix": "Fluix", "gui.appliedenergistics2.FormationPlane": "Plano de Formação", "gui.appliedenergistics2.FromStorage": "Disponível", @@ -208,16 +205,13 @@ "gui.appliedenergistics2.InterfaceTerminal": "Terminal de Interface", "gui.appliedenergistics2.InterfaceTerminalHint": "Mostrar ou Esconder no Terminal de Interface", "gui.appliedenergistics2.InvalidPattern": "Padrão Inválido", - "gui.appliedenergistics2.ItemTunnel": "Item", "gui.appliedenergistics2.LargeFontCraft": "+", "gui.appliedenergistics2.LevelEmitter": "Emissor ME de Nível", "gui.appliedenergistics2.LightBlue": "Azul Claro", "gui.appliedenergistics2.LightGray": "Cinza Claro", - "gui.appliedenergistics2.LightTunnel": "Luz", "gui.appliedenergistics2.Lime": "Verde Limão", "gui.appliedenergistics2.Linked": "Conectado", "gui.appliedenergistics2.Lumen": "Lumen", - "gui.appliedenergistics2.METunnel": "ME", "gui.appliedenergistics2.Magenta": "Magenta", "gui.appliedenergistics2.MaxPower": "Energia Máxima", "gui.appliedenergistics2.Missing": "Faltante(s)", @@ -252,7 +246,6 @@ "gui.appliedenergistics2.QuartzCuttingKnife": "Faca de Corte de Quartzo", "gui.appliedenergistics2.Range": "Área", "gui.appliedenergistics2.Red": "Vermelho", - "gui.appliedenergistics2.RedstoneTunnel": "Redstone", "gui.appliedenergistics2.RequiredPower": "Energia Requerida", "gui.appliedenergistics2.SCSInvalid": "Inválido", "gui.appliedenergistics2.SCSSize": "Tamanho SCS", @@ -473,6 +466,7 @@ "item.appliedenergistics2.entropy_manipulator": "Manipulador de Entropia", "item.appliedenergistics2.export_bus": "Barramento ME de Exportação", "item.appliedenergistics2.facade": "Fachada de Cabos", + "item.appliedenergistics2.fe_p2p_tunnel": "FE Tùnel P2P", "item.appliedenergistics2.flour": "Farinha", "item.appliedenergistics2.fluid_annihilation_plane": "Plano de Aniquilação ME para Fluidos", "item.appliedenergistics2.fluid_cell16k_part": "Componente de Armazenamento ME de Fluidos de 16k", @@ -483,6 +477,7 @@ "item.appliedenergistics2.fluid_formation_plane": "Plano de Formação ME para Fluidos", "item.appliedenergistics2.fluid_import_bus": "Barramento ME de Importação de Fluidos", "item.appliedenergistics2.fluid_level_emitter": "Emissor de Nível ME para Fluidos", + "item.appliedenergistics2.fluid_p2p_tunnel": "Fluido Tùnel P2P", "item.appliedenergistics2.fluid_storage_bus": "Barramento ME de Armazenamento de Fluidos", "item.appliedenergistics2.fluid_storage_cell_16k": "Célula de Armazenamento ME de 16k para Fluidos", "item.appliedenergistics2.fluid_storage_cell_1k": "Célula de Armazenamento ME de 1k para Fluidos", @@ -509,6 +504,7 @@ "item.appliedenergistics2.green_glass_cable": "Verde Cabo de Vidro ME", "item.appliedenergistics2.green_smart_cable": "Verde Cabo Inteligente ME", "item.appliedenergistics2.green_smart_dense_cable": "Verde Cabo Denso Coberto Inteligente ME", + "item.appliedenergistics2.ic2_p2p_tunnel": "EU Tùnel P2P", "item.appliedenergistics2.identity_annihilation_plane": "Plano de Aniquilação de identidade ME", "item.appliedenergistics2.import_bus": "Barramento ME de Importação", "item.appliedenergistics2.interface_terminal": "Terminal de Interface ME", @@ -516,6 +512,7 @@ "item.appliedenergistics2.inverted_toggle_bus": "Barramento de Alternância Invertido ME", "item.appliedenergistics2.inverter_card": "Cartão Inversor", "item.appliedenergistics2.iron_dust": "Pó de Ferro", + "item.appliedenergistics2.item_p2p_tunnel": "Item Tùnel P2P", "item.appliedenergistics2.level_emitter": "Emissor de Nível ME", "item.appliedenergistics2.light_blue_covered_cable": "Azul Claro Cabo Coberto ME", "item.appliedenergistics2.light_blue_glass_cable": "Azul Claro Cabo de Vidro ME", @@ -525,6 +522,7 @@ "item.appliedenergistics2.light_gray_glass_cable": "Cinza Claro Cabo de Vidro ME", "item.appliedenergistics2.light_gray_smart_cable": "Cinza Claro Cabo Inteligente ME", "item.appliedenergistics2.light_gray_smart_dense_cable": "Cinza Claro Cabo Denso Coberto Inteligente ME", + "item.appliedenergistics2.light_p2p_tunnel": "Luz Tùnel P2P", "item.appliedenergistics2.lime_covered_cable": "Verde Limão Cabo Coberto ME", "item.appliedenergistics2.lime_glass_cable": "Verde Limão Cabo de Vidro ME", "item.appliedenergistics2.lime_smart_cable": "Verde Limão Cabo Inteligente ME", @@ -540,6 +538,7 @@ "item.appliedenergistics2.magenta_smart_dense_cable": "Magenta Cabo Denso Coberto Inteligente ME", "item.appliedenergistics2.matter_ball": "Bola de Matéria", "item.appliedenergistics2.matter_cannon": "Canhão de Matéria", + "item.appliedenergistics2.me_p2p_tunnel": "ME Tùnel P2P", "item.appliedenergistics2.memory_card": "Cartão de Memória", "item.appliedenergistics2.monitor": "Painel Brilhante Iluminado", "item.appliedenergistics2.name_press": "Prensa Inscritora de Nome", @@ -557,7 +556,6 @@ "item.appliedenergistics2.orange_glass_cable": "Laranja Cabo de Vidro ME", "item.appliedenergistics2.orange_smart_cable": "Laranja Cabo Inteligente ME", "item.appliedenergistics2.orange_smart_dense_cable": "Laranja Cabo Denso Coberto Inteligente ME", - "item.appliedenergistics2.p2p_tunnel": "Tùnel P2P", "item.appliedenergistics2.paint_ball": "Bola de Tinta", "item.appliedenergistics2.pattern_terminal": "Terminal de Padrões ME", "item.appliedenergistics2.pink_covered_cable": "Rosa Cabo Coberto ME", @@ -579,6 +577,7 @@ "item.appliedenergistics2.red_smart_cable": "Vermelho Cabo Inteligente ME", "item.appliedenergistics2.red_smart_dense_cable": "Vermelho Cabo Denso Coberto Inteligente ME", "item.appliedenergistics2.redstone_card": "Cartão de Redstone", + "item.appliedenergistics2.redstone_p2p_tunnel": "Redstone Tùnel P2P", "item.appliedenergistics2.semi_dark_monitor": "Painel Iluminado", "item.appliedenergistics2.silicon": "Silício", "item.appliedenergistics2.silicon_press": "Compressa Inscitora de Silício", diff --git a/src/main/resources/assets/appliedenergistics2/lang/ro_ro.json b/src/main/resources/assets/appliedenergistics2/lang/ro_ro.json index 66a0bd87b..574a1b9e9 100644 --- a/src/main/resources/assets/appliedenergistics2/lang/ro_ro.json +++ b/src/main/resources/assets/appliedenergistics2/lang/ro_ro.json @@ -64,12 +64,10 @@ "gui.appliedenergistics2.CraftingTerminal": "Terminal de Craftare", "gui.appliedenergistics2.Cyan": "Turcoaz", "gui.appliedenergistics2.Drive": "Consolă ME", - "gui.appliedenergistics2.EUTunnel": "EU", "gui.appliedenergistics2.Efficiency": "Eficienţă", "gui.appliedenergistics2.Encoded": "Codat", "gui.appliedenergistics2.EnergyDrain": "Scurgere Pasivă", "gui.appliedenergistics2.ExportBus": "Punct de Export ME", - "gui.appliedenergistics2.FluidTunnel": "de Fluide", "gui.appliedenergistics2.Fluix": "Fluix", "gui.appliedenergistics2.FormationPlane": "Lan de Formaţie", "gui.appliedenergistics2.Gray": "Gri", @@ -81,13 +79,11 @@ "gui.appliedenergistics2.Inscriber": "Inscripţioner", "gui.appliedenergistics2.Installed": "Instalat", "gui.appliedenergistics2.Interface": "Interfaţă ME", - "gui.appliedenergistics2.ItemTunnel": "de Iteme", "gui.appliedenergistics2.LevelEmitter": "Emiţător de Nivel ME", "gui.appliedenergistics2.LightBlue": "Albastru-Deschis", "gui.appliedenergistics2.LightGray": "Gri-Deschis", "gui.appliedenergistics2.Lime": "Verde-Deschis", "gui.appliedenergistics2.Linked": "Legat", - "gui.appliedenergistics2.METunnel": "ME", "gui.appliedenergistics2.Magenta": "Magenta", "gui.appliedenergistics2.MaxPower": "Energie Maximă", "gui.appliedenergistics2.NetworkDetails": "Detalii de Reţea", @@ -105,7 +101,6 @@ "gui.appliedenergistics2.QuantumLinkChamber": "Cameră de Legătură Quantică", "gui.appliedenergistics2.QuartzCuttingKnife": "Cuţit de Tăiat de Cuarţ", "gui.appliedenergistics2.Red": "Roşu", - "gui.appliedenergistics2.RedstoneTunnel": "de Piatră-roşie", "gui.appliedenergistics2.RequiredPower": "Energie de care este nevoie", "gui.appliedenergistics2.Security": "Termen de Securitate", "gui.appliedenergistics2.SecurityCardEditor": "Editor de Cartelă Biometrică", @@ -260,6 +255,7 @@ "item.appliedenergistics2.export_bus": "Punct de Export ME", "item.appliedenergistics2.facade": "Faţadă de Cablu", "item.appliedenergistics2.flour": "Făina", + "item.appliedenergistics2.fluid_p2p_tunnel": "de Fluide Tunel P2P", "item.appliedenergistics2.fluix_covered_cable": "Fluix Cablu Acoperit ME", "item.appliedenergistics2.fluix_crystal": "Cristal Fluix", "item.appliedenergistics2.fluix_crystal_seed": "Sămânţă de Fluix", @@ -280,10 +276,12 @@ "item.appliedenergistics2.green_glass_cable": "Verde Cablu de Sticlă ME", "item.appliedenergistics2.green_smart_cable": "Verde Cablu Deştept ME", "item.appliedenergistics2.green_smart_dense_cable": "Verde Cablu Dens ME", + "item.appliedenergistics2.ic2_p2p_tunnel": "EU Tunel P2P", "item.appliedenergistics2.import_bus": "Punct de Import ME", "item.appliedenergistics2.inverted_toggle_bus": "Punct Invertat de Activare ME", "item.appliedenergistics2.inverter_card": "Cartelă Invertoare", "item.appliedenergistics2.iron_dust": "Praf de Fier", + "item.appliedenergistics2.item_p2p_tunnel": "de Iteme Tunel P2P", "item.appliedenergistics2.level_emitter": "Emiţător Nivel ME", "item.appliedenergistics2.light_blue_covered_cable": "Albastru-Deschis Cablu Acoperit ME", "item.appliedenergistics2.light_blue_glass_cable": "Albastru-Deschis Cablu de Sticlă ME", @@ -307,6 +305,7 @@ "item.appliedenergistics2.magenta_smart_dense_cable": "Magenta Cablu Dens ME", "item.appliedenergistics2.matter_ball": "Minge de Materie", "item.appliedenergistics2.matter_cannon": "Tun de Materie", + "item.appliedenergistics2.me_p2p_tunnel": "ME Tunel P2P", "item.appliedenergistics2.memory_card": "Cartelă de Memorie", "item.appliedenergistics2.monitor": "Panou Iluminat Deschis", "item.appliedenergistics2.name_press": "Presă de Nume de Inscripţioner", @@ -324,7 +323,6 @@ "item.appliedenergistics2.orange_glass_cable": "Portocaliu Cablu de Sticlă ME", "item.appliedenergistics2.orange_smart_cable": "Portocaliu Cablu Deştept ME", "item.appliedenergistics2.orange_smart_dense_cable": "Portocaliu Cablu Dens ME", - "item.appliedenergistics2.p2p_tunnel": "Tunel P2P", "item.appliedenergistics2.pattern_terminal": "Terminal de Model ME", "item.appliedenergistics2.pink_covered_cable": "Roz Cablu Acoperit ME", "item.appliedenergistics2.pink_glass_cable": "Roz Cablu de Sticlă ME", @@ -345,6 +343,7 @@ "item.appliedenergistics2.red_smart_cable": "Roşu Cablu Deştept ME", "item.appliedenergistics2.red_smart_dense_cable": "Roşu Cablu Dens ME", "item.appliedenergistics2.redstone_card": "Cartelă de Piatră-Roşie", + "item.appliedenergistics2.redstone_p2p_tunnel": "de Piatră-roşie Tunel P2P", "item.appliedenergistics2.semi_dark_monitor": "Panou Iluminat", "item.appliedenergistics2.silicon": "Silicon", "item.appliedenergistics2.silicon_press": "Presă de Silicon de Inscripţioner", diff --git a/src/main/resources/assets/appliedenergistics2/lang/ru_ru.json b/src/main/resources/assets/appliedenergistics2/lang/ru_ru.json index b73f37800..4d7c47cbd 100644 --- a/src/main/resources/assets/appliedenergistics2/lang/ru_ru.json +++ b/src/main/resources/assets/appliedenergistics2/lang/ru_ru.json @@ -172,16 +172,13 @@ "gui.appliedenergistics2.Cyan": "Бирюзовый", "gui.appliedenergistics2.Drive": "МЭ накопитель", "gui.appliedenergistics2.ETAFormat": "HH:mm:ss", - "gui.appliedenergistics2.EUTunnel": "EU", "gui.appliedenergistics2.Efficiency": "Эффективность", "gui.appliedenergistics2.Empty": "Пустой", "gui.appliedenergistics2.Encoded": "Зашифрованный", "gui.appliedenergistics2.EnergyDrain": "Пассивное потребление", "gui.appliedenergistics2.Excluded": "Не принимать", "gui.appliedenergistics2.ExportBus": "МЭ шина экспорта", - "gui.appliedenergistics2.FETunnel": "FE", "gui.appliedenergistics2.FacadeCrafting": "Создание фасадов", - "gui.appliedenergistics2.FluidTunnel": "Жидкость", "gui.appliedenergistics2.Fluix": "Изменчивый", "gui.appliedenergistics2.FormationPlane": "Плоскость формирования", "gui.appliedenergistics2.FromStorage": "Доступно", @@ -200,16 +197,13 @@ "gui.appliedenergistics2.InterfaceTerminal": "Терминал интерфейсов", "gui.appliedenergistics2.InterfaceTerminalHint": "Показать или спрятать в терминале интерфейсов.", "gui.appliedenergistics2.InvalidPattern": "Неправильный шаблон", - "gui.appliedenergistics2.ItemTunnel": "Предмет", "gui.appliedenergistics2.LargeFontCraft": "+", "gui.appliedenergistics2.LevelEmitter": "МЭ излучатель уровня", "gui.appliedenergistics2.LightBlue": "Светло-синий", "gui.appliedenergistics2.LightGray": "Светло-серый", - "gui.appliedenergistics2.LightTunnel": "Свет", "gui.appliedenergistics2.Lime": "Лаймовый", "gui.appliedenergistics2.Linked": "Связанный", "gui.appliedenergistics2.Lumen": "Люмен", - "gui.appliedenergistics2.METunnel": "МЭ", "gui.appliedenergistics2.Magenta": "Сиреневый", "gui.appliedenergistics2.MaxPower": "Макс. энергия", "gui.appliedenergistics2.Missing": "Не хватает", @@ -244,7 +238,6 @@ "gui.appliedenergistics2.QuartzCuttingKnife": "Кварцевый нож", "gui.appliedenergistics2.Range": "Дальность", "gui.appliedenergistics2.Red": "Красный", - "gui.appliedenergistics2.RedstoneTunnel": "Красный камень", "gui.appliedenergistics2.RequiredPower": "Требуется энергии", "gui.appliedenergistics2.SCSInvalid": "SCS неправльный", "gui.appliedenergistics2.SCSSize": "SCS размер", @@ -462,7 +455,9 @@ "item.appliedenergistics2.entropy_manipulator": "Манипулятор энтропией", "item.appliedenergistics2.export_bus": "МЭ шина экспорта", "item.appliedenergistics2.facade": "Кабельный фасад", + "item.appliedenergistics2.fe_p2p_tunnel": "FE Туннель точка-точка", "item.appliedenergistics2.flour": "Мука", + "item.appliedenergistics2.fluid_p2p_tunnel": "Жидкость Туннель точка-точка", "item.appliedenergistics2.fluix_covered_cable": "Изменчивый МЭ закрытый кабель", "item.appliedenergistics2.fluix_covered_dense_cable": "Изменчивый МЭ плотный закрытый кабель", "item.appliedenergistics2.fluix_crystal": "Изменчивый кристалл", @@ -486,6 +481,7 @@ "item.appliedenergistics2.green_glass_cable": "Зелёный МЭ стеклянный кабель", "item.appliedenergistics2.green_smart_cable": "Зелёный МЭ умный кабель", "item.appliedenergistics2.green_smart_dense_cable": "Зелёный МЭ плотный умный кабель", + "item.appliedenergistics2.ic2_p2p_tunnel": "EU Туннель точка-точка", "item.appliedenergistics2.identity_annihilation_plane": "МЭ id плоскость истребления", "item.appliedenergistics2.import_bus": "МЭ шина импорта", "item.appliedenergistics2.interface_terminal": "МЭ терминал интерфейсов", @@ -493,6 +489,7 @@ "item.appliedenergistics2.inverted_toggle_bus": "МЭ инвертированная шина переключения", "item.appliedenergistics2.inverter_card": "Карта инвертирования", "item.appliedenergistics2.iron_dust": "Железная пыль", + "item.appliedenergistics2.item_p2p_tunnel": "Предмет Туннель точка-точка", "item.appliedenergistics2.level_emitter": "МЭ излучатель уровня", "item.appliedenergistics2.light_blue_covered_cable": "Светло-синий МЭ закрытый кабель", "item.appliedenergistics2.light_blue_covered_dense_cable": "Светло-синий МЭ плотный закрытый кабель", @@ -504,6 +501,7 @@ "item.appliedenergistics2.light_gray_glass_cable": "Светло-серый МЭ стеклянный кабель", "item.appliedenergistics2.light_gray_smart_cable": "Светло-серый МЭ умный кабель", "item.appliedenergistics2.light_gray_smart_dense_cable": "Светло-серый МЭ плотный умный кабель", + "item.appliedenergistics2.light_p2p_tunnel": "Свет Туннель точка-точка", "item.appliedenergistics2.lime_covered_cable": "Лаймовый МЭ закрытый кабель", "item.appliedenergistics2.lime_covered_dense_cable": "Лаймовый МЭ плотный закрытый кабель", "item.appliedenergistics2.lime_glass_cable": "Лаймовый МЭ стеклянный кабель", @@ -521,6 +519,7 @@ "item.appliedenergistics2.magenta_smart_dense_cable": "Сиреневый МЭ плотный умный кабель", "item.appliedenergistics2.matter_ball": "Шарик материи", "item.appliedenergistics2.matter_cannon": "Материальная пушка", + "item.appliedenergistics2.me_p2p_tunnel": "МЭ Туннель точка-точка", "item.appliedenergistics2.memory_card": "Карта памяти", "item.appliedenergistics2.monitor": "Яркая осветительная панель", "item.appliedenergistics2.name_press": "Именующий пресс для высекателя", @@ -539,7 +538,6 @@ "item.appliedenergistics2.orange_glass_cable": "Оранжевый МЭ стеклянный кабель", "item.appliedenergistics2.orange_smart_cable": "Оранжевый МЭ умный кабель", "item.appliedenergistics2.orange_smart_dense_cable": "Оранжевый МЭ плотный умный кабель", - "item.appliedenergistics2.p2p_tunnel": "Туннель точка-точка", "item.appliedenergistics2.paint_ball": "Шар с краской", "item.appliedenergistics2.pattern_terminal": "МЭ терминал шаблонов", "item.appliedenergistics2.pink_covered_cable": "Розовый МЭ закрытый кабель", @@ -564,6 +562,7 @@ "item.appliedenergistics2.red_smart_cable": "Красный МЭ умный кабель", "item.appliedenergistics2.red_smart_dense_cable": "Красный МЭ плотный умный кабель", "item.appliedenergistics2.redstone_card": "Карта красного камня", + "item.appliedenergistics2.redstone_p2p_tunnel": "Красный камень Туннель точка-точка", "item.appliedenergistics2.semi_dark_monitor": "Осветительная панель", "item.appliedenergistics2.silicon": "Кремний", "item.appliedenergistics2.silicon_press": "Кремниевый пресс для высекателя", diff --git a/src/main/resources/assets/appliedenergistics2/lang/zh_cn.json b/src/main/resources/assets/appliedenergistics2/lang/zh_cn.json index 4a83783bb..be604c61b 100644 --- a/src/main/resources/assets/appliedenergistics2/lang/zh_cn.json +++ b/src/main/resources/assets/appliedenergistics2/lang/zh_cn.json @@ -174,7 +174,6 @@ "gui.appliedenergistics2.Cyan": "青色", "gui.appliedenergistics2.Drive": "ME驱动器", "gui.appliedenergistics2.ETAFormat": "HH:mm:ss", - "gui.appliedenergistics2.EUTunnel": "EU", "gui.appliedenergistics2.Efficiency": "效率", "gui.appliedenergistics2.Empty": "空", "gui.appliedenergistics2.Encoded": "已编码", @@ -182,12 +181,10 @@ "gui.appliedenergistics2.Excluded": "排除匹配", "gui.appliedenergistics2.ExportBus": "ME输出总线", "gui.appliedenergistics2.ExportBusFluids": "ME流体输出总线", - "gui.appliedenergistics2.FETunnel": "FE", "gui.appliedenergistics2.FacadeCrafting": "伪装板合成", "gui.appliedenergistics2.FluidFormationPlane": "流体成型面板", "gui.appliedenergistics2.FluidInterface": "ME流体接口", "gui.appliedenergistics2.FluidLevelEmitter": "ME流体标准发信器", - "gui.appliedenergistics2.FluidTunnel": "流体", "gui.appliedenergistics2.Fluix": "Fluix默认色", "gui.appliedenergistics2.FormationPlane": "成型面板", "gui.appliedenergistics2.FromStorage": "可用数量", @@ -208,16 +205,13 @@ "gui.appliedenergistics2.InterfaceTerminal": "接口终端", "gui.appliedenergistics2.InterfaceTerminalHint": "在接口终端显示或隐藏.", "gui.appliedenergistics2.InvalidPattern": "无效样板", - "gui.appliedenergistics2.ItemTunnel": "物品", "gui.appliedenergistics2.LargeFontCraft": "+", "gui.appliedenergistics2.LevelEmitter": "ME标准发信器", "gui.appliedenergistics2.LightBlue": "浅蓝色", "gui.appliedenergistics2.LightGray": "浅灰色", - "gui.appliedenergistics2.LightTunnel": "光", "gui.appliedenergistics2.Lime": "柠檬色", "gui.appliedenergistics2.Linked": "已链接", "gui.appliedenergistics2.Lumen": "光通", - "gui.appliedenergistics2.METunnel": "ME", "gui.appliedenergistics2.Magenta": "品红色", "gui.appliedenergistics2.MaxPower": "最大能源", "gui.appliedenergistics2.Missing": "缺失", @@ -252,7 +246,6 @@ "gui.appliedenergistics2.QuartzCuttingKnife": "石英切割刀", "gui.appliedenergistics2.Range": "范围", "gui.appliedenergistics2.Red": "红色", - "gui.appliedenergistics2.RedstoneTunnel": "红石", "gui.appliedenergistics2.RequiredPower": "所需能源", "gui.appliedenergistics2.SCSInvalid": "SCS无效", "gui.appliedenergistics2.SCSSize": "SCS规模", @@ -477,6 +470,7 @@ "item.appliedenergistics2.entropy_manipulator": "熵变机械臂", "item.appliedenergistics2.export_bus": "ME输出总线", "item.appliedenergistics2.facade": "线缆伪装板", + "item.appliedenergistics2.fe_p2p_tunnel": "FE P2P通道", "item.appliedenergistics2.flour": "面粉", "item.appliedenergistics2.fluid_annihilation_plane": "ME流体破坏面板", "item.appliedenergistics2.fluid_cell16k_part": "16k-ME流体存储组件", @@ -487,6 +481,7 @@ "item.appliedenergistics2.fluid_formation_plane": "ME流体成型面板", "item.appliedenergistics2.fluid_import_bus": "ME流体输入总线", "item.appliedenergistics2.fluid_level_emitter": "ME流体标准发信器", + "item.appliedenergistics2.fluid_p2p_tunnel": "流体 P2P通道", "item.appliedenergistics2.fluid_storage_bus": "ME流体储存总线", "item.appliedenergistics2.fluid_storage_cell_16k": "16k-ME流体储存元件", "item.appliedenergistics2.fluid_storage_cell_1k": "1k-ME流体储存元件", @@ -516,6 +511,7 @@ "item.appliedenergistics2.green_glass_cable": "绿色 ME玻璃线缆", "item.appliedenergistics2.green_smart_cable": "绿色 ME智能线缆", "item.appliedenergistics2.green_smart_dense_cable": "绿色 ME致密线缆", + "item.appliedenergistics2.ic2_p2p_tunnel": "EU P2P通道", "item.appliedenergistics2.identity_annihilation_plane": "ME精准破坏面板", "item.appliedenergistics2.import_bus": "ME输入总线", "item.appliedenergistics2.interface_terminal": "ME接口终端", @@ -523,6 +519,7 @@ "item.appliedenergistics2.inverted_toggle_bus": "ME反相触发总线", "item.appliedenergistics2.inverter_card": "反相卡", "item.appliedenergistics2.iron_dust": "铁粉", + "item.appliedenergistics2.item_p2p_tunnel": "物品 P2P通道", "item.appliedenergistics2.level_emitter": "ME标准发信器", "item.appliedenergistics2.light_blue_covered_cable": "浅蓝色 ME包层线缆", "item.appliedenergistics2.light_blue_covered_dense_cable": "浅蓝色 ME致密包层线缆", @@ -534,6 +531,7 @@ "item.appliedenergistics2.light_gray_glass_cable": "浅灰色 ME玻璃线缆", "item.appliedenergistics2.light_gray_smart_cable": "浅灰色 ME智能线缆", "item.appliedenergistics2.light_gray_smart_dense_cable": "浅灰色 ME致密线缆", + "item.appliedenergistics2.light_p2p_tunnel": "光 P2P通道", "item.appliedenergistics2.lime_covered_cable": "柠檬色 ME包层线缆", "item.appliedenergistics2.lime_covered_dense_cable": "柠檬色 ME致密包层线缆", "item.appliedenergistics2.lime_glass_cable": "柠檬色 ME玻璃线缆", @@ -551,6 +549,7 @@ "item.appliedenergistics2.magenta_smart_dense_cable": "品红色 ME致密线缆", "item.appliedenergistics2.matter_ball": "物质球", "item.appliedenergistics2.matter_cannon": "物质炮", + "item.appliedenergistics2.me_p2p_tunnel": "ME P2P通道", "item.appliedenergistics2.memory_card": "内存卡", "item.appliedenergistics2.monitor": "亮色照明面板", "item.appliedenergistics2.name_press": "名称压印模板", @@ -569,7 +568,6 @@ "item.appliedenergistics2.orange_glass_cable": "橙色 ME玻璃线缆", "item.appliedenergistics2.orange_smart_cable": "橙色 ME智能线缆", "item.appliedenergistics2.orange_smart_dense_cable": "橙色 ME致密线缆", - "item.appliedenergistics2.p2p_tunnel": "P2P通道", "item.appliedenergistics2.paint_ball": "染色球", "item.appliedenergistics2.pattern_terminal": "ME样板终端", "item.appliedenergistics2.pink_covered_cable": "粉色 ME包层线缆", @@ -594,6 +592,7 @@ "item.appliedenergistics2.red_smart_cable": "红色 ME智能线缆", "item.appliedenergistics2.red_smart_dense_cable": "红色 ME致密线缆", "item.appliedenergistics2.redstone_card": "红石卡", + "item.appliedenergistics2.redstone_p2p_tunnel": "红石 P2P通道", "item.appliedenergistics2.semi_dark_monitor": "照明面板", "item.appliedenergistics2.silicon": "硅", "item.appliedenergistics2.silicon_press": "硅压印模板", diff --git a/src/main/resources/assets/appliedenergistics2/lang/zh_tw.json b/src/main/resources/assets/appliedenergistics2/lang/zh_tw.json index 30d00f98f..3aa20e9bc 100644 --- a/src/main/resources/assets/appliedenergistics2/lang/zh_tw.json +++ b/src/main/resources/assets/appliedenergistics2/lang/zh_tw.json @@ -172,16 +172,13 @@ "gui.appliedenergistics2.Cyan": "青色", "gui.appliedenergistics2.Drive": "ME驅動器", "gui.appliedenergistics2.ETAFormat": "小時:分鐘:秒", - "gui.appliedenergistics2.EUTunnel": "EU", "gui.appliedenergistics2.Efficiency": "效率", "gui.appliedenergistics2.Empty": "空", "gui.appliedenergistics2.Encoded": "已編碼", "gui.appliedenergistics2.EnergyDrain": "被動流失", "gui.appliedenergistics2.Excluded": "排除", "gui.appliedenergistics2.ExportBus": "ME輸出總線", - "gui.appliedenergistics2.FETunnel": "FE", "gui.appliedenergistics2.FacadeCrafting": "門面製作", - "gui.appliedenergistics2.FluidTunnel": "流體", "gui.appliedenergistics2.Fluix": "Fluix默認色", "gui.appliedenergistics2.FormationPlane": "輸出面板", "gui.appliedenergistics2.FromStorage": "可用數量", @@ -200,16 +197,13 @@ "gui.appliedenergistics2.InterfaceTerminal": "接口終端", "gui.appliedenergistics2.InterfaceTerminalHint": "在接口終端上顯示或隱藏。", "gui.appliedenergistics2.InvalidPattern": "無效樣板", - "gui.appliedenergistics2.ItemTunnel": "物品", "gui.appliedenergistics2.LargeFontCraft": "+", "gui.appliedenergistics2.LevelEmitter": "ME標準發信器", "gui.appliedenergistics2.LightBlue": "淺藍色", "gui.appliedenergistics2.LightGray": "淺灰色", - "gui.appliedenergistics2.LightTunnel": "光", "gui.appliedenergistics2.Lime": "檸檬色", "gui.appliedenergistics2.Linked": "已鏈接", "gui.appliedenergistics2.Lumen": "光通", - "gui.appliedenergistics2.METunnel": "ME", "gui.appliedenergistics2.Magenta": "品紅色", "gui.appliedenergistics2.MaxPower": "最大能源", "gui.appliedenergistics2.Missing": "缺失", @@ -244,7 +238,6 @@ "gui.appliedenergistics2.QuartzCuttingKnife": "石英切割刀", "gui.appliedenergistics2.Range": "範圍", "gui.appliedenergistics2.Red": "紅色", - "gui.appliedenergistics2.RedstoneTunnel": "紅石", "gui.appliedenergistics2.RequiredPower": "所需能源", "gui.appliedenergistics2.SCSInvalid": "無效", "gui.appliedenergistics2.SCSSize": "SCS大小", @@ -462,7 +455,9 @@ "item.appliedenergistics2.entropy_manipulator": "熵變機械臂", "item.appliedenergistics2.export_bus": "ME輸出總線", "item.appliedenergistics2.facade": "線纜偽裝板", + "item.appliedenergistics2.fe_p2p_tunnel": "FE p2p通道", "item.appliedenergistics2.flour": "麵粉", + "item.appliedenergistics2.fluid_p2p_tunnel": "流體 p2p通道", "item.appliedenergistics2.fluix_covered_cable": "Fluix默認色 ME包層線纜", "item.appliedenergistics2.fluix_covered_dense_cable": "Fluix默認色 ME緻密包層線纜", "item.appliedenergistics2.fluix_crystal": "福魯伊克斯水晶", @@ -486,6 +481,7 @@ "item.appliedenergistics2.green_glass_cable": "綠色 ME玻璃線纜", "item.appliedenergistics2.green_smart_cable": "綠色 ME智能線纜", "item.appliedenergistics2.green_smart_dense_cable": "綠色 ME緻密智能線纜", + "item.appliedenergistics2.ic2_p2p_tunnel": "EU p2p通道", "item.appliedenergistics2.identity_annihilation_plane": "ME身分破壞面板", "item.appliedenergistics2.import_bus": "ME輸入總線", "item.appliedenergistics2.interface_terminal": "ME接口終端", @@ -493,6 +489,7 @@ "item.appliedenergistics2.inverted_toggle_bus": "ME反相觸發總線", "item.appliedenergistics2.inverter_card": "反相卡", "item.appliedenergistics2.iron_dust": "鐵粉", + "item.appliedenergistics2.item_p2p_tunnel": "物品 p2p通道", "item.appliedenergistics2.level_emitter": "ME標準發信器", "item.appliedenergistics2.light_blue_covered_cable": "淺藍色 ME包層線纜", "item.appliedenergistics2.light_blue_covered_dense_cable": "淺藍色 ME緻密包層線纜", @@ -504,6 +501,7 @@ "item.appliedenergistics2.light_gray_glass_cable": "淺灰色 ME玻璃線纜", "item.appliedenergistics2.light_gray_smart_cable": "淺灰色 ME智能線纜", "item.appliedenergistics2.light_gray_smart_dense_cable": "淺灰色 ME緻密智能線纜", + "item.appliedenergistics2.light_p2p_tunnel": "光 p2p通道", "item.appliedenergistics2.lime_covered_cable": "檸檬色 ME包層線纜", "item.appliedenergistics2.lime_covered_dense_cable": "檸檬色 ME緻密包層線纜", "item.appliedenergistics2.lime_glass_cable": "檸檬色 ME玻璃線纜", @@ -521,6 +519,7 @@ "item.appliedenergistics2.magenta_smart_dense_cable": "品紅色 ME緻密智能線纜", "item.appliedenergistics2.matter_ball": "物質球", "item.appliedenergistics2.matter_cannon": "物質炮", + "item.appliedenergistics2.me_p2p_tunnel": "ME p2p通道", "item.appliedenergistics2.memory_card": "內存卡", "item.appliedenergistics2.monitor": "亮色照明面板", "item.appliedenergistics2.name_press": "名稱壓印模板", @@ -539,7 +538,6 @@ "item.appliedenergistics2.orange_glass_cable": "橙色 ME玻璃線纜", "item.appliedenergistics2.orange_smart_cable": "橙色 ME智能線纜", "item.appliedenergistics2.orange_smart_dense_cable": "橙色 ME緻密智能線纜", - "item.appliedenergistics2.p2p_tunnel": "p2p通道", "item.appliedenergistics2.paint_ball": "染色球", "item.appliedenergistics2.pattern_terminal": "ME樣板終端", "item.appliedenergistics2.pink_covered_cable": "粉色 ME包層線纜", @@ -564,6 +562,7 @@ "item.appliedenergistics2.red_smart_cable": "紅色 ME智能線纜", "item.appliedenergistics2.red_smart_dense_cable": "紅色 ME緻密智能線纜", "item.appliedenergistics2.redstone_card": "紅石卡", + "item.appliedenergistics2.redstone_p2p_tunnel": "紅石 p2p通道", "item.appliedenergistics2.semi_dark_monitor": "照明面板", "item.appliedenergistics2.silicon": "矽", "item.appliedenergistics2.silicon_press": "矽壓印模板", diff --git a/src/main/resources/assets/appliedenergistics2/models/item/debug_part_placer.json b/src/main/resources/assets/appliedenergistics2/models/item/debug_part_placer.json new file mode 100644 index 000000000..8349e16e5 --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/item/debug_part_placer.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "appliedenergistics2:item/debug/part_placer" + } +} diff --git a/src/main/resources/assets/appliedenergistics2/models/part/annihilation_plane.json b/src/main/resources/assets/appliedenergistics2/models/part/annihilation_plane.json new file mode 100644 index 000000000..9236ced97 --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/part/annihilation_plane.json @@ -0,0 +1,6 @@ +{ + "loader": "appliedenergistics2:part_plane", + "front": "appliedenergistics2:item/part/annihilation_plane", + "sides": "appliedenergistics2:parts/plane_sides", + "back": "appliedenergistics2:parts/transition_plane_back" +} \ No newline at end of file diff --git a/src/main/resources/assets/appliedenergistics2/models/part/annihilation_plane_on.json b/src/main/resources/assets/appliedenergistics2/models/part/annihilation_plane_on.json new file mode 100644 index 000000000..60ee29674 --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/part/annihilation_plane_on.json @@ -0,0 +1,6 @@ +{ + "loader": "appliedenergistics2:part_plane", + "front": "appliedenergistics2:parts/annihilation_plane_on", + "sides": "appliedenergistics2:parts/plane_sides", + "back": "appliedenergistics2:parts/transition_plane_back" +} \ No newline at end of file diff --git a/src/main/resources/assets/appliedenergistics2/models/part/fluid_annihilation_plane.json b/src/main/resources/assets/appliedenergistics2/models/part/fluid_annihilation_plane.json new file mode 100644 index 000000000..556e10f95 --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/part/fluid_annihilation_plane.json @@ -0,0 +1,6 @@ +{ + "loader": "appliedenergistics2:part_plane", + "front": "appliedenergistics2:item/part/fluid_annihilation_plane", + "sides": "appliedenergistics2:parts/plane_sides", + "back": "appliedenergistics2:parts/transition_plane_back" +} \ No newline at end of file diff --git a/src/main/resources/assets/appliedenergistics2/models/part/fluid_annihilation_plane_on.json b/src/main/resources/assets/appliedenergistics2/models/part/fluid_annihilation_plane_on.json new file mode 100644 index 000000000..7d03bc75d --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/part/fluid_annihilation_plane_on.json @@ -0,0 +1,6 @@ +{ + "loader": "appliedenergistics2:part_plane", + "front": "appliedenergistics2:parts/fluid_annihilation_plane_on", + "sides": "appliedenergistics2:parts/plane_sides", + "back": "appliedenergistics2:parts/transition_plane_back" +} \ No newline at end of file diff --git a/src/main/resources/assets/appliedenergistics2/models/part/fluid_formation_plane.json b/src/main/resources/assets/appliedenergistics2/models/part/fluid_formation_plane.json new file mode 100644 index 000000000..df09bada0 --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/part/fluid_formation_plane.json @@ -0,0 +1,6 @@ +{ + "loader": "appliedenergistics2:part_plane", + "front": "appliedenergistics2:item/part/fluid_formation_plane", + "sides": "appliedenergistics2:parts/plane_sides", + "back": "appliedenergistics2:parts/transition_plane_back" +} \ No newline at end of file diff --git a/src/main/resources/assets/appliedenergistics2/models/part/fluid_formation_plane_on.json b/src/main/resources/assets/appliedenergistics2/models/part/fluid_formation_plane_on.json new file mode 100644 index 000000000..c604f759a --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/part/fluid_formation_plane_on.json @@ -0,0 +1,6 @@ +{ + "loader": "appliedenergistics2:part_plane", + "front": "appliedenergistics2:parts/fluid_formation_plane_on", + "sides": "appliedenergistics2:parts/plane_sides", + "back": "appliedenergistics2:parts/transition_plane_back" +} \ No newline at end of file diff --git a/src/main/resources/assets/appliedenergistics2/models/part/formation_plane.json b/src/main/resources/assets/appliedenergistics2/models/part/formation_plane.json new file mode 100644 index 000000000..6054449d0 --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/part/formation_plane.json @@ -0,0 +1,6 @@ +{ + "loader": "appliedenergistics2:part_plane", + "front": "appliedenergistics2:item/part/formation_plane", + "sides": "appliedenergistics2:parts/plane_sides", + "back": "appliedenergistics2:parts/transition_plane_back" +} \ No newline at end of file diff --git a/src/main/resources/assets/appliedenergistics2/models/part/formation_plane_on.json b/src/main/resources/assets/appliedenergistics2/models/part/formation_plane_on.json new file mode 100644 index 000000000..7d2821745 --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/part/formation_plane_on.json @@ -0,0 +1,6 @@ +{ + "loader": "appliedenergistics2:part_plane", + "front": "appliedenergistics2:parts/formation_plane_on", + "sides": "appliedenergistics2:parts/plane_sides", + "back": "appliedenergistics2:parts/transition_plane_back" +} \ No newline at end of file diff --git a/src/main/resources/assets/appliedenergistics2/models/part/identity_annihilation_plane.json b/src/main/resources/assets/appliedenergistics2/models/part/identity_annihilation_plane.json new file mode 100644 index 000000000..f18fb6138 --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/part/identity_annihilation_plane.json @@ -0,0 +1,6 @@ +{ + "loader": "appliedenergistics2:part_plane", + "front": "appliedenergistics2:item/part/identity_annihilation_plane", + "sides": "appliedenergistics2:parts/plane_sides", + "back": "appliedenergistics2:parts/transition_plane_back" +} \ No newline at end of file diff --git a/src/main/resources/assets/appliedenergistics2/models/part/identity_annihilation_plane_on.json b/src/main/resources/assets/appliedenergistics2/models/part/identity_annihilation_plane_on.json new file mode 100644 index 000000000..e3a07b689 --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/part/identity_annihilation_plane_on.json @@ -0,0 +1,6 @@ +{ + "loader": "appliedenergistics2:part_plane", + "front": "appliedenergistics2:parts/identity_annihilation_plane_on", + "sides": "appliedenergistics2:parts/plane_sides", + "back": "appliedenergistics2:parts/transition_plane_back" +} \ No newline at end of file diff --git a/src/main/resources/assets/appliedenergistics2/models/part/p2p/p2p_tunnel_frequency.json b/src/main/resources/assets/appliedenergistics2/models/part/p2p/p2p_tunnel_frequency.json new file mode 100644 index 000000000..8dd0de3aa --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/part/p2p/p2p_tunnel_frequency.json @@ -0,0 +1,3 @@ +{ + "loader": "appliedenergistics2:p2p_tunnel_frequency" +} \ No newline at end of file diff --git a/src/main/resources/assets/appliedenergistics2/textures/item/debug/part_placer.png b/src/main/resources/assets/appliedenergistics2/textures/item/debug/part_placer.png new file mode 100644 index 000000000..ef338305a Binary files /dev/null and b/src/main/resources/assets/appliedenergistics2/textures/item/debug/part_placer.png differ