From 5f2b31cf5a2b5bd696e34b058d1b2fba25edd5c1 Mon Sep 17 00:00:00 2001 From: NightOwl Date: Tue, 14 Jul 2020 13:41:36 +0800 Subject: [PATCH 01/51] Update MDK and build.gradle --- .gitignore | 2 - build.gradle | 107 +++++++++++++++-------- gradle.properties | 5 ++ gradle/wrapper/gradle-wrapper.jar | Bin 53319 -> 54708 bytes gradle/wrapper/gradle-wrapper.properties | 3 +- gradlew | 26 ++++-- gradlew.bat | 6 -- 7 files changed, 92 insertions(+), 57 deletions(-) create mode 100644 gradle.properties diff --git a/.gitignore b/.gitignore index c967a25..b8289a5 100644 --- a/.gitignore +++ b/.gitignore @@ -16,8 +16,6 @@ mods/ saves/ logs/ -/gradle.properties - CREDITS-fml.txt LICENSE-fml.txt MinecraftForge-Credits.txt diff --git a/build.gradle b/build.gradle index 0812d70..c6ea102 100644 --- a/build.gradle +++ b/build.gradle @@ -1,35 +1,64 @@ buildscript { repositories { - jcenter() maven { name = "forge" - url = "http://files.minecraftforge.net/maven" + url = "https://files.minecraftforge.net/maven" } + jcenter() + mavenCentral() + /* maven { name = "sponge" url = "http://repo.spongepowered.org/maven" } + */ } dependencies { - classpath 'net.minecraftforge.gradle:ForgeGradle:2.2-SNAPSHOT' - classpath 'org.spongepowered:mixingradle:0.4-SNAPSHOT' + classpath 'net.minecraftforge.gradle:ForgeGradle:3.+' + //classpath 'org.spongepowered:mixingradle:0.4-SNAPSHOT' } } -apply plugin: 'net.minecraftforge.gradle.forge' -apply plugin: 'org.spongepowered.mixin' +apply plugin: 'net.minecraftforge.gradle' +//apply plugin: 'org.spongepowered.mixin' +apply plugin: 'eclipse' +apply plugin: 'maven-publish' -version = "dev.0.5" + getBuildNumber() +version = "dev.0.6" + getBuildNumber() group= "com.mcgoodtime.productionline" archivesBaseName = "ProductionLine" -sourceCompatibility = 1.8 -targetCompatibility = 1.8 +sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. minecraft { - version = "1.10.2-12.18.3.2221" - runDir = "run" - mappings = "stable_29" + // The mappings can be changed at any time, and must be in the following format. + // snapshot_YYYYMMDD Snapshot are built nightly. + // stable_# Stables are built at the discretion of the MCP team. + // Use non-default mappings at your own risk. they may not always work. + // Simply re-run your setup task after changing the mappings to update your workspace. + mappings channel: 'snapshot', version: '20171003-1.12' + + // Default run configurations. + runs { + client { + workingDirectory project.file('run') + + // Recommended logging data for a userdev environment + property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' + + // Recommended logging level for the console + property 'forge.logging.console.level', 'debug' + } + + server { + + // Recommended logging data for a userdev environment + property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' + + // Recommended logging level for the console + property 'forge.logging.console.level', 'debug' + } + } } repositories { @@ -48,55 +77,57 @@ repositories { } dependencies { - compile ('org.spongepowered:mixin:0.6.+') { - exclude module: 'launchwrapper' - } - deobfCompile 'net.industrial-craft:industrialcraft-2:2.6.161-ex110' //adds ic2 to the dev env - compile 'mezz.jei:jei_1.10.2:3.14.4.404' + minecraft 'net.minecraftforge:forge:1.12.2-14.23.5.2854' + //compile ('org.spongepowered:mixin:0.6.+') { + // exclude module: 'launchwrapper' + //} } jar { manifest { attributes ( - 'FMLCorePlugin': 'com.mcgoodtime.productionline.core.coremod.PLCore', - 'TweakClass': 'org.spongepowered.asm.launch.MixinTweaker', - 'TweakOrder': 0, - 'MixinConfigs': 'mixins.productionline.core.json', - 'FMLCorePluginContainsFMLMod': true, - 'FMLAT': 'productionline_at.cfg', - 'ForceLoadAsMod': true + "Specification-Title": "Production Line", + "Specification-Vendor": "GoodTime Studio", + "Specification-Version": "1", // We are version 1 of ourselves + "Implementation-Title": project.name, + "Implementation-Version": "${version}", + "Implementation-Vendor" :"GoodTime Studio", + "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") ) } } +// Example configuration to allow publishing using the maven-publish task +// This is the preferred method to reobfuscate your jar file +jar.finalizedBy('reobfJar') +// However if you are in a multi-project build, dev time needs unobfed jar files, so you can delay the obfuscation until publishing by doing +//publish.dependsOn('reobfJar') + +/* mixin { // Specify "notch" or "searge" here defaultObfuscationEnv searge add sourceSets.main, "mixins.forge.refmap.json" } +*/ compileJava { options.encoding = 'UTF-8' } -idea.module.inheritOutputDirs = true - -processResources { - inputs.property "version", project.version - inputs.property "mcversion", project.minecraft.version - - from (sourceSets.main.resources.srcDirs) { - include 'mcmod.info' - expand 'version' : project.version, 'mcversion' : project.minecraft.version +publishing { + publications { + mavenJava(MavenPublication) { + artifact jar + } } - - from (sourceSets.main.resources.srcDirs) { - exclude 'mcmod.info' + repositories { + maven { + url "file:///${project.projectDir}/mcmodsrepo" + } } } static def getBuildNumber() { return "$System.env.BUILD_NUMBER" != "null" ? "." + Integer.parseInt("$System.env.BUILD_NUMBER") : "" } - -tasks.jar.dependsOn "check" diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..da5e071 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,5 @@ +# Sets default memory used for gradle commands. Can be overridden by user or command line properties. +# This is required to provide enough memory for the Minecraft decompilation process. +org.gradle.jvmargs=-Xmx3G +org.gradle.daemon=false + \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index d3b83982b9b1bccad955349d702be9b884c6e049..7a3265ee94c0ab25cf079ac8ccdf87f41d455d42 100644 GIT binary patch delta 25563 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 delta 24167 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 K`jG<&(EkDPr&!Mb diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 3860365..949819d 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Tue Oct 04 20:07:23 PDT 2016 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-bin.zip diff --git a/gradlew b/gradlew index 27309d9..cccdd3d 100644 --- a/gradlew +++ b/gradlew @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh ############################################################################## ## @@ -33,11 +33,11 @@ DEFAULT_JVM_OPTS="" # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" -warn ( ) { +warn () { echo "$*" } -die ( ) { +die () { echo echo "$*" echo @@ -154,11 +154,19 @@ if $cygwin ; then esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " } -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +APP_ARGS=$(save "$@") -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 832fdb6..f955316 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -49,7 +49,6 @@ goto fail @rem Get command-line arguments, handling Windows variants if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args :win9xME_args @rem Slurp the command line arguments. @@ -60,11 +59,6 @@ set _SKIP=2 if "x%~1" == "x" goto execute set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ :execute @rem Setup the command line From af6916dfd742e548b84e214512fc883c043f46c1 Mon Sep 17 00:00:00 2001 From: NightOwl Date: Tue, 14 Jul 2020 15:38:20 +0800 Subject: [PATCH 02/51] Fix build --- build.gradle | 3 +- .../blocks/BlockContainerPL.java | 2 +- .../productionline/blocks/BlockMachine.java | 10 +++---- .../productionline/blocks/BlockMisc.java | 3 +- .../productionline/blocks/BlockPL.java | 11 +++---- .../blocks/BlockWaterHyacinth.java | 3 +- .../generator/BlockFluidKineticGenerator.java | 6 ++-- .../client/RenderEntityThrownItem.java | 3 +- .../client/gui/GuiEUStorage.java | 15 +++++----- .../client/gui/GuiFluidKineticGenerator.java | 4 +-- .../productionline/client/gui/GuiPL.java | 10 +++---- .../client/gui/GuiParallelSpaceSU.java | 8 ++--- .../productionline/core/ProductionLine.java | 19 ++++++------ .../productionline/core/coremod/PLSetup.java | 8 ++--- .../entity/EntityThrownItem.java | 19 ++++++------ .../productionline/entity/PLEntity.java | 4 ++- .../productionline/event/PLEvent.java | 4 +-- .../event/ThrowableUranium238Handler.java | 2 +- .../productionline/init/PLAchievement.java | 19 +++++------- .../productionline/init/PLItems.java | 25 +++++++--------- .../productionline/init/PLRecipes.java | 8 ++--- .../inventory/ContainerAdvSolar.java | 8 ++--- .../inventory/ContainerCarbonizeFurnace.java | 12 ++++---- .../inventory/ContainerEUStorage.java | 8 ++--- .../ContainerFluidKineticGenerator.java | 14 +++++---- .../inventory/ContainerHeatDryer.java | 16 ++++++---- .../inventory/ContainerPackager.java | 8 ++--- .../inventory/ContainerParallelSpaceSU.java | 8 ++--- .../productionline/inventory/Inventories.java | 10 +++---- .../inventory/slot/SlotUpgrade.java | 4 +-- .../items/ItemBlockEUStorage.java | 29 ++++++++++--------- .../productionline/items/ItemBlockPL.java | 9 ++---- .../items/ItemDiamondApple.java | 16 ++++++---- .../productionline/items/ItemElectricPL.java | 8 ++--- .../productionline/items/ItemMulti.java | 20 ++++++------- .../productionline/items/ItemPL.java | 12 +++++--- .../productionline/items/ItemPLFood.java | 2 +- .../productionline/items/ItemPLRecord.java | 22 +++++++------- .../productionline/items/ItemStacks.java | 2 +- .../items/ItemWaterHyacinth.java | 4 +-- .../items/tools/ItemGravityRay.java | 10 +++---- .../items/tools/ItemPLTreetap.java | 10 +++---- .../productionline/items/tools/ToolPL.java | 3 +- .../productionline/mixin/MixinItemMulti.java | 7 +++-- .../mixin/MixinTileEntityFurnace.java | 7 +++-- .../network/message/MessageEUStorage.java | 4 +-- .../recipes/FluidKineticGeneratorRecipes.java | 17 +++++++++-- .../productionline/recipes/RecipeBase.java | 19 +++++------- .../productionline/tiles/TileAdvSolar.java | 2 +- .../tiles/TileCarbonizeFurnace.java | 16 +++++----- .../productionline/tiles/TileContainer.java | 13 ++++++--- .../productionline/tiles/TileHeatDryer.java | 12 ++++---- .../productionline/tiles/TileMachine.java | 4 +-- .../productionline/tiles/TilePackager.java | 16 +++++----- .../tiles/eustorage/TileEUStorage.java | 2 +- .../tiles/tileslots/TileSlot.java | 2 +- .../tiles/tileslots/TileSlotDischarge.java | 4 +-- .../tiles/tileslots/TileSlotFluidInput.java | 4 +-- .../tiles/tileslots/TileSlotUpgrade.java | 4 +-- .../productionline/worldgen/PLWorldGen.java | 4 +-- 60 files changed, 291 insertions(+), 267 deletions(-) diff --git a/build.gradle b/build.gradle index c6ea102..5df4c0a 100644 --- a/build.gradle +++ b/build.gradle @@ -64,7 +64,7 @@ minecraft { repositories { maven { name = "ic2" - url = "http://maven.ic2.player.to" + url = "https://maven.ic2.player.to" } maven { name = "sponge" @@ -78,6 +78,7 @@ repositories { dependencies { minecraft 'net.minecraftforge:forge:1.12.2-14.23.5.2854' + compile 'net.industrial-craft:industrialcraft-2:2.8.209-ex112:dev' //adds ic2 to the dev env //compile ('org.spongepowered:mixin:0.6.+') { // exclude module: 'launchwrapper' //} diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/BlockContainerPL.java b/src/main/java/com/mcgoodtime/productionline/blocks/BlockContainerPL.java index 88b637a..8b7bbfc 100644 --- a/src/main/java/com/mcgoodtime/productionline/blocks/BlockContainerPL.java +++ b/src/main/java/com/mcgoodtime/productionline/blocks/BlockContainerPL.java @@ -46,7 +46,7 @@ public abstract class BlockContainerPL extends BlockPL implements ITileEntityPro public BlockContainerPL(Material material, String name) { super(material, name); - this.isBlockContainer = true; + //this.isBlockContainer = true; } @Override diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/BlockMachine.java b/src/main/java/com/mcgoodtime/productionline/blocks/BlockMachine.java index 09ded17..9c9fbc3 100644 --- a/src/main/java/com/mcgoodtime/productionline/blocks/BlockMachine.java +++ b/src/main/java/com/mcgoodtime/productionline/blocks/BlockMachine.java @@ -29,6 +29,7 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraft.world.chunk.Chunk; +import net.minecraftforge.fml.common.registry.ForgeRegistries; import net.minecraftforge.fml.common.registry.GameRegistry; import java.util.Random; @@ -143,10 +144,9 @@ public PropertyEnum getBlockTypeContainer() { * Called upon block activation (right click on the block.) */ @Override - public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, @Nullable ItemStack heldItem, - EnumFacing side, float hitX, float hitY, float hitZ) { - if (!world.isRemote) { - player.openGui(ProductionLine.getInstance(), state.getValue(PROPERTY_TYPE).gui.ordinal(), world, pos.getX(), pos.getY(), pos.getZ()); + public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { + if (!worldIn.isRemote) { + playerIn.openGui(ProductionLine.getInstance(), state.getValue(PROPERTY_TYPE).gui.ordinal(), worldIn, pos.getX(), pos.getY(), pos.getZ()); } return true; } @@ -234,7 +234,7 @@ public IBlockState getStateFromMeta(int meta) { @Override protected void registerItemBlock() { - GameRegistry.register(new ItemBlockPL(this), this.getRegistryName()); + ForgeRegistries.ITEMS.register(new ItemBlockPL(this)); } @Override diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/BlockMisc.java b/src/main/java/com/mcgoodtime/productionline/blocks/BlockMisc.java index 3d34f0a..40de73a 100644 --- a/src/main/java/com/mcgoodtime/productionline/blocks/BlockMisc.java +++ b/src/main/java/com/mcgoodtime/productionline/blocks/BlockMisc.java @@ -40,6 +40,7 @@ import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraftforge.fml.common.registry.ForgeRegistries; import net.minecraftforge.fml.common.registry.GameRegistry; import javax.annotation.Nonnull; @@ -98,7 +99,7 @@ public PropertyEnum getBlockTypeContainer() { @Override protected void registerItemBlock() { - GameRegistry.register(new ItemBlockPL(this), this.getRegistryName()); + ForgeRegistries.ITEMS.register(new ItemBlockPL(this)); } /** diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/BlockPL.java b/src/main/java/com/mcgoodtime/productionline/blocks/BlockPL.java index e0fc14c..9ca0445 100644 --- a/src/main/java/com/mcgoodtime/productionline/blocks/BlockPL.java +++ b/src/main/java/com/mcgoodtime/productionline/blocks/BlockPL.java @@ -35,6 +35,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.RayTraceResult; import net.minecraft.world.IBlockAccess; +import net.minecraftforge.fml.common.registry.ForgeRegistries; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraft.block.Block; import net.minecraft.block.material.Material; @@ -43,7 +44,8 @@ import net.minecraft.item.ItemStack; //import net.minecraft.util.MovingObjectPositionsition; import net.minecraft.world.World; -import net.minecraftforge.fml.common.registry.IForgeRegistryEntry; +//import net.minecraftforge.fml.common.registry.IForgeRegistryEntry; +import net.minecraftforge.registries.ForgeRegistry; import org.apache.logging.log4j.Level; import javax.annotation.Nonnull; @@ -77,7 +79,7 @@ public BlockPL(Material material, String name) { this.setCreativeTab(creativeTabPL); this.internalName = name; // TODO register after construction - GameRegistry.register(this, new ResourceLocation(MOD_ID, name)); + ForgeRegistries.BLOCKS.register(this); this.registerItemBlock(); if (this instanceof IOrientableBlock) { this.setDefaultState(this.blockState.getBaseState().withProperty(PROPERTY_FACING, EnumFacing.NORTH)); @@ -144,10 +146,9 @@ public Item getItemDropped(IBlockState state, Random rand, int fortune) { /** * Register item block. * Forge recommend register item block separately. - * {@link GameRegistry#register(IForgeRegistryEntry, ResourceLocation)} - */ + */ protected void registerItemBlock() { - GameRegistry.register(new ItemBlock(this), new ResourceLocation(MOD_ID, this.internalName)); + ForgeRegistries.ITEMS.register(new ItemBlock(this)); } @Override diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/BlockWaterHyacinth.java b/src/main/java/com/mcgoodtime/productionline/blocks/BlockWaterHyacinth.java index eb8b15f..3133f25 100644 --- a/src/main/java/com/mcgoodtime/productionline/blocks/BlockWaterHyacinth.java +++ b/src/main/java/com/mcgoodtime/productionline/blocks/BlockWaterHyacinth.java @@ -90,8 +90,7 @@ protected boolean canSustainBush(IBlockState state) { } @Override - @SuppressWarnings("deprecation") - public void addCollisionBoxToList(IBlockState state, @Nonnull World worldIn, @Nonnull BlockPos pos, @Nonnull AxisAlignedBB entityBox, @Nonnull List collidingBoxes, @Nullable Entity entityIn) { + public void addCollisionBoxToList(IBlockState state, World worldIn, BlockPos pos, AxisAlignedBB entityBox, List collidingBoxes, @Nullable Entity entityIn, boolean isActualState) { if (!(entityIn instanceof EntityBoat)) { addCollisionBoxToList(pos, entityBox, collidingBoxes, box); } diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/generator/BlockFluidKineticGenerator.java b/src/main/java/com/mcgoodtime/productionline/blocks/generator/BlockFluidKineticGenerator.java index 823942d..ed8be96 100644 --- a/src/main/java/com/mcgoodtime/productionline/blocks/generator/BlockFluidKineticGenerator.java +++ b/src/main/java/com/mcgoodtime/productionline/blocks/generator/BlockFluidKineticGenerator.java @@ -48,9 +48,9 @@ public BlockFluidKineticGenerator() { } @Override - public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, @Nullable ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) { - if (!world.isRemote) { - player.openGui(ProductionLine.getInstance(), GuiHandler.EnumGui.FluidKineticGenerator.ordinal(), world, pos.getX(), pos.getY(), pos.getZ()); + public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { + if (!worldIn.isRemote) { + playerIn.openGui(ProductionLine.getInstance(), GuiHandler.EnumGui.FluidKineticGenerator.ordinal(), worldIn, pos.getX(), pos.getY(), pos.getZ()); } return true; } diff --git a/src/main/java/com/mcgoodtime/productionline/client/RenderEntityThrownItem.java b/src/main/java/com/mcgoodtime/productionline/client/RenderEntityThrownItem.java index 798501a..08c90b9 100644 --- a/src/main/java/com/mcgoodtime/productionline/client/RenderEntityThrownItem.java +++ b/src/main/java/com/mcgoodtime/productionline/client/RenderEntityThrownItem.java @@ -82,7 +82,8 @@ public void doRender(T entity, double x, double y, double z, float entityYaw, fl } protected ItemStack getStackToRender(T entity) { - return entity.getThrowItem().orNull(); + //return entity.getThrowItem().orNull(); + return null; } /** diff --git a/src/main/java/com/mcgoodtime/productionline/client/gui/GuiEUStorage.java b/src/main/java/com/mcgoodtime/productionline/client/gui/GuiEUStorage.java index 0a94fac..de3308a 100644 --- a/src/main/java/com/mcgoodtime/productionline/client/gui/GuiEUStorage.java +++ b/src/main/java/com/mcgoodtime/productionline/client/gui/GuiEUStorage.java @@ -4,7 +4,6 @@ import com.mcgoodtime.productionline.inventory.ContainerEUStorage; import com.mcgoodtime.productionline.network.PLNetwork; import com.mcgoodtime.productionline.tiles.eustorage.TileEUStorage; -import ic2.core.GuiIconButton; import net.minecraft.client.gui.GuiButton; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -35,18 +34,18 @@ public GuiEUStorage(ContainerEUStorage container) { @Override public void initGui() { super.initGui(); - this.buttonList.add(new GuiIconButton(0, (this.width - this.xSize) / 2 + - 152, (this.height - this.ySize) / 2 + 4, 20, 20, new ItemStack(Items.REDSTONE), true)); + /*this.buttonList.add(new GuiIconButton(0, (this.width - this.xSize) / 2 + + 152, (this.height - this.ySize) / 2 + 4, 20, 20, new ItemStack(Items.REDSTONE), true));*/ } @Override protected void drawGuiContainerForegroundLayer(int x, int y) { super.drawGuiContainerForegroundLayer(x, y); - this.fontRendererObj.drawString(format("ic2.EUStorage.gui.info.armor"), 8, this.ySize - 126 + 3, 4210752); - this.fontRendererObj.drawString(format("ic2.EUStorage.gui.info.level"), 79, 25, 4210752); - this.fontRendererObj.drawString(" " + ((int) ((TileEUStorage) this.container.tile).energy), 110, 35, 4210752); - this.fontRendererObj.drawString("/" + ((TileEUStorage) this.container.tile).maxEnergy, 110, 45, 4210752); - this.fontRendererObj.drawString(format("ic2.EUStorage.gui.info.output", + this.fontRenderer.drawString(format("ic2.EUStorage.gui.info.armor"), 8, this.ySize - 126 + 3, 4210752); + this.fontRenderer.drawString(format("ic2.EUStorage.gui.info.level"), 79, 25, 4210752); + this.fontRenderer.drawString(" " + ((int) ((TileEUStorage) this.container.tile).energy), 110, 35, 4210752); + this.fontRenderer.drawString("/" + ((TileEUStorage) this.container.tile).maxEnergy, 110, 45, 4210752); + this.fontRenderer.drawString(format("ic2.EUStorage.gui.info.output", ((TileEUStorage) this.container.tile).energyTick), 85, 60, 4210752); drawTooltip(x - this.guiLeft, y - this.guiTop, Collections.singletonList(format("ic2.EUStorage.gui.mod.redstone" + ((TileEUStorage) this.container.tile).redstoneMode.ordinal()))); diff --git a/src/main/java/com/mcgoodtime/productionline/client/gui/GuiFluidKineticGenerator.java b/src/main/java/com/mcgoodtime/productionline/client/gui/GuiFluidKineticGenerator.java index 5645a09..a3e3ead 100644 --- a/src/main/java/com/mcgoodtime/productionline/client/gui/GuiFluidKineticGenerator.java +++ b/src/main/java/com/mcgoodtime/productionline/client/gui/GuiFluidKineticGenerator.java @@ -87,11 +87,11 @@ protected void drawGuiContainerForegroundLayer(int x, int y) { String output = I18n.format(GUI_PREFIX + "FluidKineticGenerator.output", this.container.getTileEntity().maxrequestkineticenergyTick( this.container.getTileEntity().facing)); - this.drawString(this.fontRendererObj, output, 96, 33, 2157374); + this.drawString(this.fontRenderer, output, 96, 33, 2157374); String max_output = I18n.format(GUI_PREFIX + "FluidKineticGenerator.max-output", this.container.getTileEntity().kuOutput); - this.drawString(this.fontRendererObj, max_output, 96, 52, 2157374); + this.drawString(this.fontRenderer, max_output, 96, 52, 2157374); } @Override diff --git a/src/main/java/com/mcgoodtime/productionline/client/gui/GuiPL.java b/src/main/java/com/mcgoodtime/productionline/client/gui/GuiPL.java index 49b4fb3..5ca49d9 100644 --- a/src/main/java/com/mcgoodtime/productionline/client/gui/GuiPL.java +++ b/src/main/java/com/mcgoodtime/productionline/client/gui/GuiPL.java @@ -26,11 +26,11 @@ import com.mcgoodtime.productionline.core.ProductionLine; import com.mcgoodtime.productionline.inventory.ContainerPL; +import ic2.api.upgrade.IUpgradableBlock; +import ic2.api.upgrade.IUpgradeItem; +import ic2.api.upgrade.UpgradableProperty; +import ic2.api.upgrade.UpgradeRegistry; import ic2.core.IC2; -import ic2.core.upgrade.IUpgradableBlock; -import ic2.core.upgrade.IUpgradeItem; -import ic2.core.upgrade.UpgradableProperty; -import ic2.core.upgrade.UpgradeRegistry; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.resources.I18n; @@ -70,7 +70,7 @@ public GuiPL(T container) { @Override protected void drawGuiContainerForegroundLayer(int x, int y) { String displayName = I18n.format(ProductionLine.GUI_PREFIX + this.name); - this.fontRendererObj.drawString(displayName, (this.xSize - this.fontRendererObj.getStringWidth(displayName)) / 2, 6, 4210752); + this.fontRenderer.drawString(displayName, (this.xSize - this.fontRenderer.getStringWidth(displayName)) / 2, 6, 4210752); if (this.container.tile instanceof IUpgradableBlock) { handleUpgradeTooltip(x, y); } diff --git a/src/main/java/com/mcgoodtime/productionline/client/gui/GuiParallelSpaceSU.java b/src/main/java/com/mcgoodtime/productionline/client/gui/GuiParallelSpaceSU.java index e42f780..e3a36d5 100644 --- a/src/main/java/com/mcgoodtime/productionline/client/gui/GuiParallelSpaceSU.java +++ b/src/main/java/com/mcgoodtime/productionline/client/gui/GuiParallelSpaceSU.java @@ -3,7 +3,6 @@ import com.mcgoodtime.productionline.PLUtil; import com.mcgoodtime.productionline.inventory.ContainerParallelSpaceSU; import com.mcgoodtime.productionline.network.PLNetwork; -import ic2.core.GuiIconButton; import net.minecraft.client.gui.GuiButton; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -33,17 +32,18 @@ public GuiParallelSpaceSU(ContainerParallelSpaceSU container) { @Override public void initGui() { super.initGui(); + /* this.buttonList.add(new GuiIconButton(0, (this.width - this.xSize) / 2 + - 152, (this.height - this.ySize) / 2 + 4, 20, 20, new ItemStack(Items.REDSTONE), true)); + 152, (this.height - this.ySize) / 2 + 4, 20, 20, new ItemStack(Items.REDSTONE), true));*/ } @Override protected void drawGuiContainerForegroundLayer(int x, int y) { super.drawGuiContainerForegroundLayer(x, y); - this.fontRendererObj.drawString("§l" + format("ic2.EUStorage.gui.info.level"), 60, 25, 0x9A00FF); + this.fontRenderer.drawString("§l" + format("ic2.EUStorage.gui.info.level"), 60, 25, 0x9A00FF); drawTooltip(x - this.guiLeft, y - this.guiTop, Collections.singletonList("§l§5" + ((int) this.container.tile.energy) + "/" + this.container.tile.maxEnergy)); - this.fontRendererObj.drawString(format("ic2.EUStorage.gui.info.output", + this.fontRenderer.drawString(format("ic2.EUStorage.gui.info.output", this.container.tile.energyTick), 60, 51, 0x9A00FF); drawTooltip(x - this.guiLeft, y - this.guiTop, Collections.singletonList(format("ic2.EUStorage.gui.mod.redstone" + this.container.tile.redstoneMode.ordinal()))); diff --git a/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java b/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java index 1eeaa6c..be1373f 100644 --- a/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java +++ b/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java @@ -38,9 +38,10 @@ import net.minecraft.client.Minecraft; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.util.ResourceLocation; -import net.minecraftforge.common.AchievementPage; +//import net.minecraftforge.common.AchievementPage; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.fml.client.registry.RenderingRegistry; @@ -65,10 +66,10 @@ modid = ProductionLine.MOD_ID, name = ProductionLine.MOD_NAME, version = ProductionLine.VERSION, - dependencies = "required-after:" - + "Forge@[12.17.0.1976,);" + /*dependencies = "required-after:" + + "Forge@[14.23.5.2854,);" + "after:" - + "IC2@[2.5.52,);", + + "IC2@[2.8.209,);",*/ useMetadata = true ) public final class ProductionLine { @@ -81,8 +82,8 @@ public final class ProductionLine { @SideOnly(Side.CLIENT) @Override @Nonnull - public Item getTabIconItem() { - return PLItems.gravityRay; + public ItemStack getTabIconItem() { + return new ItemStack(PLItems.gravityRay); } }; /** @@ -137,7 +138,7 @@ public void init(FMLInitializationEvent event) { //register achievement PLAchievement.init(); //register achievement page - AchievementPage.registerAchievementPage(PLAchievement.pagePL); + //AchievementPage.registerAchievementPage(PLAchievement.pagePL); //register ore gen bus. 注册矿石生成总线 PLWorldGen.init(); proxy.init(); @@ -186,12 +187,12 @@ void init() { public static class ClientProxy extends CommonProxy { @Override void preInit() { - PLModelRegistry.loadBlockModels(); - PLModelRegistry.loadItemModels(); } @Override void init() { + PLModelRegistry.loadBlockModels(); + PLModelRegistry.loadItemModels(); RenderingRegistry.registerEntityRenderingHandler(EntityThrownItem.class, manager -> new RenderEntityThrownItem<>(manager, Minecraft.getMinecraft().getRenderItem())); RenderingRegistry.registerEntityRenderingHandler(EntityRay.class, RenderEntityRay::new); } diff --git a/src/main/java/com/mcgoodtime/productionline/core/coremod/PLSetup.java b/src/main/java/com/mcgoodtime/productionline/core/coremod/PLSetup.java index 0a8d94d..e8e77b1 100644 --- a/src/main/java/com/mcgoodtime/productionline/core/coremod/PLSetup.java +++ b/src/main/java/com/mcgoodtime/productionline/core/coremod/PLSetup.java @@ -25,8 +25,8 @@ package com.mcgoodtime.productionline.core.coremod; import net.minecraftforge.fml.relauncher.IFMLCallHook; -import org.spongepowered.asm.launch.MixinBootstrap; -import org.spongepowered.asm.mixin.Mixins; +//import org.spongepowered.asm.launch.MixinBootstrap; +//import org.spongepowered.asm.mixin.Mixins; import java.util.Map; @@ -41,8 +41,8 @@ public void injectData(Map data) {} @Override public Void call() throws Exception { - MixinBootstrap.init(); - Mixins.addConfiguration("mixins.productionline.core.json"); + //MixinBootstrap.init(); + //Mixins.addConfiguration("mixins.productionline.core.json"); return null; } } diff --git a/src/main/java/com/mcgoodtime/productionline/entity/EntityThrownItem.java b/src/main/java/com/mcgoodtime/productionline/entity/EntityThrownItem.java index f18d786..9051cf6 100644 --- a/src/main/java/com/mcgoodtime/productionline/entity/EntityThrownItem.java +++ b/src/main/java/com/mcgoodtime/productionline/entity/EntityThrownItem.java @@ -42,9 +42,9 @@ * @author BwstOwl */ public class EntityThrownItem extends net.minecraft.entity.projectile.EntityThrowable { - +/* public static final DataParameter> PARAMETER = EntityDataManager - .createKey(EntityThrownItem.class, DataSerializers.OPTIONAL_ITEM_STACK); + .createKey(EntityThrownItem.class, DataSerializers.OPTIONAL_ITEM_STACK);*/ public EntityThrownItem(World world) { super(world); @@ -56,13 +56,13 @@ public EntityThrownItem(World world, double x, double y, double z) { public EntityThrownItem(World world, EntityLivingBase entityLivingBase, ItemStack itemStack) { super(world, entityLivingBase); - this.setThrowItem(itemStack); + //this.setThrowItem(itemStack); } @Override protected void entityInit() { super.entityInit(); - this.dataManager.register(PARAMETER, Optional.absent()); + //this.dataManager.register(PARAMETER, Optional.absent()); } /** @@ -70,12 +70,11 @@ protected void entityInit() { */ @Override public void writeEntityToNBT(NBTTagCompound nbt) { - super.writeEntityToNBT(nbt); + super.writeEntityToNBT(nbt);/* Optional item = getThrowItem(); if (item.isPresent()) { nbt.setTag("throwItem", item.get().serializeNBT()); - } - + }*/ } /** @@ -84,9 +83,9 @@ public void writeEntityToNBT(NBTTagCompound nbt) { @Override public void readEntityFromNBT(NBTTagCompound nbt) { super.readEntityFromNBT(nbt); - this.setThrowItem(ItemStack.loadItemStackFromNBT(nbt.getCompoundTag("throwItem"))); + //this.setThrowItem(ItemStack.loadItemStackFromNBT(nbt.getCompoundTag("throwItem"))); } - +/* public Optional getThrowItem() { return this.dataManager.get(PARAMETER); } @@ -94,7 +93,7 @@ public Optional getThrowItem() { public void setThrowItem(ItemStack itemStack) { this.dataManager.set(PARAMETER, Optional.of(itemStack)); } - +*/ /** * Called when this EntityThrownItem hits a block or entity. */ diff --git a/src/main/java/com/mcgoodtime/productionline/entity/PLEntity.java b/src/main/java/com/mcgoodtime/productionline/entity/PLEntity.java index 8833f0f..bd62b71 100644 --- a/src/main/java/com/mcgoodtime/productionline/entity/PLEntity.java +++ b/src/main/java/com/mcgoodtime/productionline/entity/PLEntity.java @@ -25,6 +25,7 @@ package com.mcgoodtime.productionline.entity; import com.mcgoodtime.productionline.core.ProductionLine; +import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.common.registry.EntityRegistry; import net.minecraft.entity.Entity; @@ -37,7 +38,8 @@ public class PLEntity { private static int id = 0; public static void registerEntities(Class entity, String name) { - EntityRegistry.registerModEntity(entity, name, id++, ProductionLine.getInstance(), 64, 1, true); + //EntityRegistry.registerModEntity(entity, name, id++, ProductionLine.getInstance(), 64, 1, true); + EntityRegistry.registerModEntity(new ResourceLocation(ProductionLine.RESOURCE_DOMAIN, name), entity, name, id, ProductionLine.getInstance(), 64, 1, true); } public static void init() { diff --git a/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java b/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java index c7515fa..dd42bb8 100644 --- a/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java +++ b/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java @@ -57,7 +57,7 @@ * @author BestOwl, liach */ @Mod.EventBusSubscriber -public class PLEvent { +public class PLEvent {/* @SubscribeEvent public void onPlayerCrafting(PlayerEvent.ItemCraftedEvent event) { if (event.crafting.getItem().equals(PLBlocks.carbonizeFurnace.getItem())) { @@ -129,5 +129,5 @@ private void onImpact(EntityThrownItem entity, RayTraceResult movingObjectPositi entity.world.spawnEntity(new EntityItem(entity.world, entity.posX, entity.posY, entity.posZ, entity.getThrowItem().get())); } - } + }*/ } diff --git a/src/main/java/com/mcgoodtime/productionline/event/ThrowableUranium238Handler.java b/src/main/java/com/mcgoodtime/productionline/event/ThrowableUranium238Handler.java index 19e58cd..15a0c4e 100644 --- a/src/main/java/com/mcgoodtime/productionline/event/ThrowableUranium238Handler.java +++ b/src/main/java/com/mcgoodtime/productionline/event/ThrowableUranium238Handler.java @@ -32,7 +32,7 @@ public ActionResult onRightClick(ItemStack itemStack, EntityPlayer en if (itemStack.isItemEqual(target)) { if (PLConfig.instance.throwableUran238) { if (!entityPlayer.capabilities.isCreativeMode) { - --itemStack.stackSize; + itemStack.shrink(1); } entityPlayer.world.playSound(entityPlayer, entityPlayer.getPosition(), diff --git a/src/main/java/com/mcgoodtime/productionline/init/PLAchievement.java b/src/main/java/com/mcgoodtime/productionline/init/PLAchievement.java index 2760701..c057e65 100644 --- a/src/main/java/com/mcgoodtime/productionline/init/PLAchievement.java +++ b/src/main/java/com/mcgoodtime/productionline/init/PLAchievement.java @@ -25,34 +25,31 @@ package com.mcgoodtime.productionline.init; import com.mcgoodtime.productionline.core.ProductionLine; -import net.minecraft.stats.Achievement; -import net.minecraft.stats.AchievementList; -import net.minecraftforge.common.AchievementPage; /* * Created by suhao on 2015/5/17. */ public class PLAchievement { - /** Is the 'ir ore' achievement. */ + /** Is the 'ir ore' achievement. *//* public static Achievement getIrOre = new Achievement("achievement.getIrOre", "getIrOre", 0, 0, - PLBlocks.oreIridium, AchievementList.ACQUIRE_IRON).registerStat(); - /** Just for fun, :) */ + PLBlocks.oreIridium, AchievementList.ACQUIRE_IRON).registerStat();*/ + /** Just for fun, :) *//* public static Achievement yourHouseBombed = new Achievement("achievement.yourHouseBombed", "yourHouseBombed", 0, 3, - PLItems.yourHouseBombed, null).setSpecial().registerStat().initIndependentStat(); + PLItems.yourHouseBombed, null).setSpecial().registerStat().initIndependentStat();*/ - /** Is the 'getting CarbonizeFurnace' achievement. */ + /** Is the 'getting CarbonizeFurnace' achievement. *//* public static Achievement getCarbonizeFurnace = new Achievement( "achievement.getCarbonizeFurnace", "getCarbonizeFurnace", 0, 1, PLBlocks.carbonizeFurnace, AchievementList.BUILD_FURNACE - ).registerStat(); + ).registerStat();*/ - /** Is the AchievementPage for ProductionLine */ + /** Is the AchievementPage for ProductionLine *//* public static AchievementPage pagePL = new AchievementPage( ProductionLine.MOD_NAME, getIrOre, getCarbonizeFurnace, - yourHouseBombed); + yourHouseBombed);*/ /** * A stub functions called to make the static initializer for this class run. diff --git a/src/main/java/com/mcgoodtime/productionline/init/PLItems.java b/src/main/java/com/mcgoodtime/productionline/init/PLItems.java index 3dba74f..96b1ab3 100644 --- a/src/main/java/com/mcgoodtime/productionline/init/PLItems.java +++ b/src/main/java/com/mcgoodtime/productionline/init/PLItems.java @@ -48,6 +48,7 @@ import net.minecraft.util.SoundCategory; import net.minecraft.world.World; import net.minecraftforge.fml.common.IFuelHandler; +import net.minecraftforge.fml.common.registry.ForgeRegistries; import net.minecraftforge.fml.common.registry.GameRegistry; import static com.mcgoodtime.productionline.core.ProductionLine.MOD_ID; @@ -131,24 +132,20 @@ public static void init() { // special registry TODO: Better registry system packagedSalt = new ItemPL("packaged_salt") { - /** - * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer - */ @Override - public ActionResult onItemRightClick(ItemStack itemStack, World world, EntityPlayer player, EnumHand hand) { + public ActionResult onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn) { + ItemStack itemStack = playerIn.getHeldItem(handIn); if (PLConfig.instance.throwablePackagedSalt) { - if (!player.capabilities.isCreativeMode) { - --itemStack.stackSize; + if (!playerIn.capabilities.isCreativeMode) { + itemStack.shrink(1); } - world.playSound(null, player.posX, player.posY, player.posZ, SoundEvents.ENTITY_SNOWBALL_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); - if (!world.isRemote) { - world.spawnEntity(new EntityThrownItem(world, player, itemStack)); + worldIn.playSound(null, playerIn.posX, playerIn.posY, playerIn.posZ, SoundEvents.ENTITY_SNOWBALL_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); + if (!worldIn.isRemote) { + worldIn.spawnEntity(new EntityThrownItem(worldIn, playerIn, itemStack)); } } - - return new ActionResult<>(EnumActionResult.SUCCESS, itemStack); + return new ActionResult(EnumActionResult.SUCCESS, itemStack); } - }; saltWaterBucket = new ItemBucket(Blocks.WATER); @@ -161,7 +158,7 @@ public ActionResult onItemRightClick(ItemStack itemStack, World world // iridiumSword = ToolPL.registerSword(PLToolMaterial.iridium, "iridium_sword"); // TODO: Better registry system - GameRegistry.register(saltWaterBucket, new ResourceLocation(MOD_ID, "saltwater_bucket")); + ForgeRegistries.ITEMS.register(saltWaterBucket); GameRegistry.registerFuelHandler(new PLItems()); } @@ -188,7 +185,7 @@ public int getBurnTime(ItemStack fuel) { public static ItemStack getItems(ItemStack itemStack, int count) { ItemStack ret = itemStack.copy(); - ret.stackSize = count; + ret.setCount(count); return ret; } } diff --git a/src/main/java/com/mcgoodtime/productionline/init/PLRecipes.java b/src/main/java/com/mcgoodtime/productionline/init/PLRecipes.java index 4c6cf36..8ee4afb 100644 --- a/src/main/java/com/mcgoodtime/productionline/init/PLRecipes.java +++ b/src/main/java/com/mcgoodtime/productionline/init/PLRecipes.java @@ -55,7 +55,7 @@ public static void init() { //disable(); //vanilla recipe registry; - +/* GameRegistry.addRecipe( ItemStacks.copyStack(PLBlocks.opticalGlass, 5), "ABA", @@ -104,7 +104,7 @@ public static void init() { "DDD", 'D', PLItems.diamondApple, 'A', Blocks.DIAMOND_BLOCK - ); + );*/ //smelting registry GameRegistry.addSmelting(PLBlocks.oreIridium, PLItems.ingotIridium, XP); @@ -204,7 +204,7 @@ private static void disable() { * @param itemStack Disable all recipes of this item. */ @SuppressWarnings("unchecked") - public static void disableRecipes(ItemStack itemStack) { + public static void disableRecipes(ItemStack itemStack) {/* List recipeList = CraftingManager.getInstance().getRecipeList(); for (int i = 0; i < recipeList.size(); i++) { IRecipe iRecipe = recipeList.get(i); @@ -212,7 +212,7 @@ public static void disableRecipes(ItemStack itemStack) { if (ItemStack.areItemStacksEqual(itemStack, recipesResult)) { recipeList.remove(i--); } - } + }*/ } @SuppressWarnings({"unchecked", "SuspiciousMethodCalls"}) diff --git a/src/main/java/com/mcgoodtime/productionline/inventory/ContainerAdvSolar.java b/src/main/java/com/mcgoodtime/productionline/inventory/ContainerAdvSolar.java index ad4480e..0f10b5a 100644 --- a/src/main/java/com/mcgoodtime/productionline/inventory/ContainerAdvSolar.java +++ b/src/main/java/com/mcgoodtime/productionline/inventory/ContainerAdvSolar.java @@ -26,8 +26,8 @@ public ContainerAdvSolar(EntityPlayer player, TileAdvSolar tile) { @Override public void addListener(IContainerListener listener) { super.addListener(listener); - listener.sendProgressBarUpdate(this, 0, this.sunIsVisible ? 1 : 0); - listener.sendProgressBarUpdate(this, 1, this.hasLens ? 1 : 0); + //listener.sendProgressBarUpdate(this, 0, this.sunIsVisible ? 1 : 0); + //listener.sendProgressBarUpdate(this, 1, this.hasLens ? 1 : 0); } /** @@ -39,10 +39,10 @@ public void detectAndSendChanges() { for (IContainerListener listener : this.listeners) { if (this.sunIsVisible != this.tile.underSun) { - listener.sendProgressBarUpdate(this, 0, this.tile.underSun ? 1 : 0); + //listener.sendProgressBarUpdate(this, 0, this.tile.underSun ? 1 : 0); } if (this.hasLens != this.tile.hasLens) { - listener.sendProgressBarUpdate(this, 1, this.tile.hasLens ? 1 : 0); + //listener.sendProgressBarUpdate(this, 1, this.tile.hasLens ? 1 : 0); } } diff --git a/src/main/java/com/mcgoodtime/productionline/inventory/ContainerCarbonizeFurnace.java b/src/main/java/com/mcgoodtime/productionline/inventory/ContainerCarbonizeFurnace.java index 9f3e7a8..4ca5331 100644 --- a/src/main/java/com/mcgoodtime/productionline/inventory/ContainerCarbonizeFurnace.java +++ b/src/main/java/com/mcgoodtime/productionline/inventory/ContainerCarbonizeFurnace.java @@ -57,9 +57,9 @@ public ContainerCarbonizeFurnace(EntityPlayer player, TileCarbonizeFurnace tile) @Override public void addListener(IContainerListener listener) { super.addListener(listener); - listener.sendProgressBarUpdate(this, 0, this.tile.progress); - listener.sendProgressBarUpdate(this, 1, (int) this.tile.requireEnergy); - listener.sendProgressBarUpdate(this, 2, (int) this.tile.energy); + //listener.sendProgressBarUpdate(this, 0, this.tile.progress); + //listener.sendProgressBarUpdate(this, 1, (int) this.tile.requireEnergy); + //listener.sendProgressBarUpdate(this, 2, (int) this.tile.energy); } /** @@ -71,15 +71,15 @@ public void detectAndSendChanges() { for (IContainerListener listener : this.listeners) { if (this.lastProgress != this.tile.progress) { - listener.sendProgressBarUpdate(this, 0, this.tile.progress); + //listener.sendProgressBarUpdate(this, 0, this.tile.progress); } if (this.lastRequireEnergy != this.tile.requireEnergy) { - listener.sendProgressBarUpdate(this, 1, (int) this.tile.requireEnergy); + //listener.sendProgressBarUpdate(this, 1, (int) this.tile.requireEnergy); } if (this.lastEnergy != this.tile.energy) { - listener.sendProgressBarUpdate(this, 2, (int) this.tile.energy); + //listener.sendProgressBarUpdate(this, 2, (int) this.tile.energy); } } diff --git a/src/main/java/com/mcgoodtime/productionline/inventory/ContainerEUStorage.java b/src/main/java/com/mcgoodtime/productionline/inventory/ContainerEUStorage.java index f33cbe3..e43a87b 100644 --- a/src/main/java/com/mcgoodtime/productionline/inventory/ContainerEUStorage.java +++ b/src/main/java/com/mcgoodtime/productionline/inventory/ContainerEUStorage.java @@ -32,8 +32,8 @@ public ContainerEUStorage(EntityPlayer player, T tile) { @Override public void addListener(IContainerListener listener) { super.addListener(listener); - listener.sendProgressBarUpdate(this, 0, (int) this.tile.energy); - listener.sendProgressBarUpdate(this, 1, this.tile.redstoneMode.ordinal()); + //listener.sendProgressBarUpdate(this, 0, (int) this.tile.energy); + //listener.sendProgressBarUpdate(this, 1, this.tile.redstoneMode.ordinal()); } /** @@ -45,10 +45,10 @@ public void detectAndSendChanges() { for (IContainerListener listener : this.listeners) { if (this.lastEnergy != this.tile.energy) { - listener.sendProgressBarUpdate(this, 0, (int) this.tile.energy); + //listener.sendProgressBarUpdate(this, 0, (int) this.tile.energy); } if (this.lastMode != this.tile.redstoneMode.ordinal()) { - listener.sendProgressBarUpdate(this, 1, this.tile.redstoneMode.ordinal()); + //listener.sendProgressBarUpdate(this, 1, this.tile.redstoneMode.ordinal()); } } diff --git a/src/main/java/com/mcgoodtime/productionline/inventory/ContainerFluidKineticGenerator.java b/src/main/java/com/mcgoodtime/productionline/inventory/ContainerFluidKineticGenerator.java index fe2d791..87ef7ae 100644 --- a/src/main/java/com/mcgoodtime/productionline/inventory/ContainerFluidKineticGenerator.java +++ b/src/main/java/com/mcgoodtime/productionline/inventory/ContainerFluidKineticGenerator.java @@ -51,10 +51,10 @@ public ContainerFluidKineticGenerator(EntityPlayer player, TileFluidKineticGener @Override public void addListener(IContainerListener listener) { super.addListener(listener); - listener.sendProgressBarUpdate(this, 0, this.tile.fluidTank.getFluidAmount()); + //listener.sendProgressBarUpdate(this, 0, this.tile.fluidTank.getFluidAmount()); if (this.tile.fluidTank.getFluid() != null) { // TODO Improve - listener.sendProgressBarUpdate(this, 1, FluidRegistry.getFluidID(this.tile.fluidTank.getFluid().getFluid())); + //listener.sendProgressBarUpdate(this, 1, FluidRegistry.getFluidID(this.tile.fluidTank.getFluid().getFluid())); } } @@ -68,10 +68,10 @@ public void detectAndSendChanges() { for (IContainerListener listener : this.listeners) { if (this.fluidAmount != this.tile.fluidTank.getFluidAmount()) { - listener.sendProgressBarUpdate(this, 0, this.tile.fluidTank.getFluidAmount()); + //listener.sendProgressBarUpdate(this, 0, this.tile.fluidTank.getFluidAmount()); } if (this.tile.fluidTank.getFluid() != null && this.fluid != this.tile.fluidTank.getFluid().getFluid()) { - listener.sendProgressBarUpdate(this, 1, FluidRegistry.getFluidID(this.tile.fluidTank.getFluid().getFluid())); + //listener.sendProgressBarUpdate(this, 1, FluidRegistry.getFluidID(this.tile.fluidTank.getFluid().getFluid())); } } @@ -90,10 +90,12 @@ public void updateProgressBar(int id, int var) { if (this.tile.fluidTank.getFluid() != null) { this.tile.fluidTank.getFluid().amount = var; } - case 1: + break; + case 1:/* if (FluidRegistry.getFluid(var) != null) { this.tile.fluidTank.setFluid(new FluidStack(FluidRegistry.getFluid(var), this.tile.fluidTank.getFluidAmount())); - } + }*/ + break; } } } diff --git a/src/main/java/com/mcgoodtime/productionline/inventory/ContainerHeatDryer.java b/src/main/java/com/mcgoodtime/productionline/inventory/ContainerHeatDryer.java index ace52a3..4df3d6f 100644 --- a/src/main/java/com/mcgoodtime/productionline/inventory/ContainerHeatDryer.java +++ b/src/main/java/com/mcgoodtime/productionline/inventory/ContainerHeatDryer.java @@ -57,8 +57,8 @@ public ContainerHeatDryer(EntityPlayer player, TileHeatDryer tile) { @Override public void addListener(IContainerListener listener) { super.addListener(listener); - listener.sendProgressBarUpdate(this, 1, lastProgress); - listener.sendProgressBarUpdate(this, 2, (int) lastEnergy); + //listener.sendProgressBarUpdate(this, 1, lastProgress); + //listener.sendProgressBarUpdate(this, 2, (int) lastEnergy); } /** @@ -70,10 +70,10 @@ public void detectAndSendChanges() { for (IContainerListener listener : this.listeners) { if (this.lastProgress != this.tile.progress) { - listener.sendProgressBarUpdate(this, 1, this.tile.progress); + //listener.sendProgressBarUpdate(this, 1, this.tile.progress); } if (this.lastEnergy != this.tile.energy) { - listener.sendProgressBarUpdate(this, 2, (int) this.tile.energy); + //listener.sendProgressBarUpdate(this, 2, (int) this.tile.energy); } } @@ -86,8 +86,12 @@ public void detectAndSendChanges() { public void updateProgressBar(int id, int i) { super.updateProgressBar(id, i); switch (id) { - case 1: this.tile.progress = i; - case 2: this.tile.energy = i; + case 1: + this.tile.progress = i; + break; + case 2: + this.tile.energy = i; + break; } } } diff --git a/src/main/java/com/mcgoodtime/productionline/inventory/ContainerPackager.java b/src/main/java/com/mcgoodtime/productionline/inventory/ContainerPackager.java index d0796dc..f8828ce 100644 --- a/src/main/java/com/mcgoodtime/productionline/inventory/ContainerPackager.java +++ b/src/main/java/com/mcgoodtime/productionline/inventory/ContainerPackager.java @@ -61,8 +61,8 @@ public ContainerPackager(EntityPlayer player, TilePackager tile) { @Override public void addListener(IContainerListener listener) { super.addListener(listener); - listener.sendProgressBarUpdate(this, 1, lastProgress); - listener.sendProgressBarUpdate(this, 2, (int) lastEnergy); + //listener.sendProgressBarUpdate(this, 1, lastProgress); + //listener.sendProgressBarUpdate(this, 2, (int) lastEnergy); } /** @@ -74,10 +74,10 @@ public void detectAndSendChanges() { for (IContainerListener listener : this.listeners) { if (this.lastProgress != this.tile.progress) { - listener.sendProgressBarUpdate(this, 1, this.tile.progress); + //listener.sendProgressBarUpdate(this, 1, this.tile.progress); } if (this.lastEnergy != this.tile.energy) { - listener.sendProgressBarUpdate(this, 2, (int) this.tile.energy); + //listener.sendProgressBarUpdate(this, 2, (int) this.tile.energy); } } diff --git a/src/main/java/com/mcgoodtime/productionline/inventory/ContainerParallelSpaceSU.java b/src/main/java/com/mcgoodtime/productionline/inventory/ContainerParallelSpaceSU.java index 981227d..78f8062 100644 --- a/src/main/java/com/mcgoodtime/productionline/inventory/ContainerParallelSpaceSU.java +++ b/src/main/java/com/mcgoodtime/productionline/inventory/ContainerParallelSpaceSU.java @@ -24,8 +24,8 @@ public ContainerParallelSpaceSU(EntityPlayer player, TileParallelSpaceSU tile) { @Override public void addListener(IContainerListener listener) { super.addListener(listener); - listener.sendProgressBarUpdate(this, 0, (int) this.tile.energy); - listener.sendProgressBarUpdate(this, 1, this.tile.redstoneMode.ordinal()); + //listener.sendProgressBarUpdate(this, 0, (int) this.tile.energy); + //listener.sendProgressBarUpdate(this, 1, this.tile.redstoneMode.ordinal()); } /** @@ -37,10 +37,10 @@ public void detectAndSendChanges() { for (IContainerListener object : this.listeners) { if (this.lastEnergy != this.tile.energy) { - object.sendProgressBarUpdate(this, 0, (int) this.tile.energy); + //object.sendProgressBarUpdate(this, 0, (int) this.tile.energy); } if (this.lastMode != this.tile.redstoneMode.ordinal()) { - object.sendProgressBarUpdate(this, 1, this.tile.redstoneMode.ordinal()); + //object.sendProgressBarUpdate(this, 1, this.tile.redstoneMode.ordinal()); } } diff --git a/src/main/java/com/mcgoodtime/productionline/inventory/Inventories.java b/src/main/java/com/mcgoodtime/productionline/inventory/Inventories.java index 522e18e..1a048be 100644 --- a/src/main/java/com/mcgoodtime/productionline/inventory/Inventories.java +++ b/src/main/java/com/mcgoodtime/productionline/inventory/Inventories.java @@ -61,18 +61,18 @@ public static void spill(World world, double x, double y, double z, @Nullable It float f1 = RANDOM.nextFloat() * 0.8F + 0.1F; float f2 = RANDOM.nextFloat() * 0.8F + 0.1F; - while (stack.stackSize > 0) { + while (stack.getCount() > 0) { int j1 = RANDOM.nextInt(21) + 10; - if (j1 > stack.stackSize) { - j1 = stack.stackSize; + if (j1 > stack.getCount()) { + j1 = stack.getCount(); } - stack.stackSize -= j1; + stack.setCount(stack.getCount() - j1); EntityItem entityitem = new EntityItem(world, x + f, y + f1, z + f2, new ItemStack(stack.getItem(), j1, stack.getItemDamage())); if (stack.hasTagCompound()) { - entityitem.getEntityItem().setTagCompound(stack.getTagCompound().copy()); + entityitem.getItem().setTagCompound(stack.getTagCompound().copy()); } float f3 = 0.05F; diff --git a/src/main/java/com/mcgoodtime/productionline/inventory/slot/SlotUpgrade.java b/src/main/java/com/mcgoodtime/productionline/inventory/slot/SlotUpgrade.java index 487226c..b7be4b0 100644 --- a/src/main/java/com/mcgoodtime/productionline/inventory/slot/SlotUpgrade.java +++ b/src/main/java/com/mcgoodtime/productionline/inventory/slot/SlotUpgrade.java @@ -24,8 +24,8 @@ */ package com.mcgoodtime.productionline.inventory.slot; -import ic2.core.upgrade.IUpgradableBlock; -import ic2.core.upgrade.IUpgradeItem; +import ic2.api.upgrade.IUpgradableBlock; +import ic2.api.upgrade.IUpgradeItem; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemBlockEUStorage.java b/src/main/java/com/mcgoodtime/productionline/items/ItemBlockEUStorage.java index f96f6e6..52185a4 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemBlockEUStorage.java +++ b/src/main/java/com/mcgoodtime/productionline/items/ItemBlockEUStorage.java @@ -4,15 +4,19 @@ import ic2.core.util.StackUtil; import net.minecraft.block.Block; import net.minecraft.client.resources.I18n; +import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.NonNullList; +import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nonnull; +import javax.annotation.Nullable; import java.util.List; /** @@ -31,9 +35,9 @@ public ItemBlockEUStorage(Block block) { */ @SideOnly(Side.CLIENT) @Override - public void addInformation(@Nonnull ItemStack itemStack, @Nonnull EntityPlayer player, @Nonnull List list, boolean bool) { - super.addInformation(itemStack, player, list, bool); - int meta = itemStack.getItemDamage(); + public void addInformation(ItemStack stack, @Nullable World worldIn, List tooltip, ITooltipFlag flagIn) { + super.addInformation(stack, worldIn, tooltip, flagIn); + int meta = stack.getItemDamage(); String info = I18n.format("ic2.item.tooltip.Output") + " "; switch (meta) { case 0: @@ -44,35 +48,32 @@ public void addInformation(@Nonnull ItemStack itemStack, @Nonnull EntityPlayer p case 0: info += "100m EU"; } - list.add(info); - NBTTagCompound nbt = StackUtil.getOrCreateNbtData(itemStack); + tooltip.add(info); + NBTTagCompound nbt = StackUtil.getOrCreateNbtData(stack); String internalEnergy = I18n.format("ic2.item.tooltip.Store") + " " + nbt.getInteger("energy") + " EU"; - list.add(internalEnergy); + tooltip.add(internalEnergy); } - /** - * returns a list of items with the same ID, but different meta (eg: dye returns 16 items) - */ @SideOnly(Side.CLIENT) @Override - public void getSubItems(@Nonnull Item item, @Nonnull CreativeTabs creativeTabs, @Nonnull List list) { - super.getSubItems(item, creativeTabs, list); + public void getSubItems(CreativeTabs tab, NonNullList items) { + super.getSubItems(tab, items); ItemStack itemStack; NBTTagCompound nbt; itemStack = PLBlocks.evsu.copy(); nbt = StackUtil.getOrCreateNbtData(itemStack); nbt.setInteger("energy", (int) 1E8); - list.add(itemStack); + items.add(itemStack); itemStack = PLBlocks.cseu.copy(); nbt = StackUtil.getOrCreateNbtData(itemStack); nbt.setInteger("energy", (int) 720E3); - list.add(itemStack); + items.add(itemStack); itemStack = PLBlocks.parallelSpaceSU.copy(); nbt = StackUtil.getOrCreateNbtData(itemStack); nbt.setInteger("energy", (int) 2E8); - list.add(itemStack); + items.add(itemStack); } } diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemBlockPL.java b/src/main/java/com/mcgoodtime/productionline/items/ItemBlockPL.java index df686f3..da135a3 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemBlockPL.java +++ b/src/main/java/com/mcgoodtime/productionline/items/ItemBlockPL.java @@ -31,6 +31,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; +import net.minecraft.util.NonNullList; import java.util.List; @@ -85,16 +86,12 @@ public int getMetadata(int meta) return meta; } - /** - * returns a list of blocks with the same ID, but different meta (eg: wood returns 4 blocks) - */ @Override - public void getSubItems(Item itemIn, CreativeTabs tab, List list) { + public void getSubItems(CreativeTabs tab, NonNullList items) { if (this.block instanceof IMultiIDBlock) { for (int i = 0; i < ((IMultiIDBlock) this.block).getBlockTypeContainer().getAllowedValues().size(); i++) { - list.add(new ItemStack(this, 1, i)); + items.add(new ItemStack(this, 1, i)); } } } - } diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemDiamondApple.java b/src/main/java/com/mcgoodtime/productionline/items/ItemDiamondApple.java index 797f92a..04534ac 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemDiamondApple.java +++ b/src/main/java/com/mcgoodtime/productionline/items/ItemDiamondApple.java @@ -3,6 +3,7 @@ import com.mcgoodtime.productionline.client.IItemModelProvider; import com.mcgoodtime.productionline.core.ProductionLine; import net.minecraft.client.resources.I18n; +import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.MobEffects; @@ -11,13 +12,16 @@ import net.minecraft.item.ItemFood; import net.minecraft.item.ItemStack; import net.minecraft.potion.PotionEffect; +import net.minecraft.util.NonNullList; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; +import net.minecraftforge.fml.common.registry.ForgeRegistries; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nonnull; +import javax.annotation.Nullable; import java.util.List; /** @@ -33,7 +37,7 @@ public ItemDiamondApple() { this.setCreativeTab(ProductionLine.creativeTabPL); this.setHasSubtypes(true); this.setAlwaysEdible(); - GameRegistry.register(this, new ResourceLocation(ProductionLine.MOD_ID, "diamond_apple")); + ForgeRegistries.ITEMS.register(this); } @Override @@ -51,17 +55,17 @@ protected void onFoodEaten(ItemStack itemStack, World world, @Nonnull EntityPlay super.onFoodEaten(itemStack, world, player); } - @Override @SideOnly(Side.CLIENT) - public void addInformation(ItemStack itemStack, EntityPlayer player, List list, boolean bool) { - list.add(I18n.format(this.getUnlocalizedName() + ".desc1")); + @Override + public void addInformation(ItemStack stack, @Nullable World worldIn, List tooltip, ITooltipFlag flagIn) { + tooltip.add(I18n.format(this.getUnlocalizedName() + ".desc1")); } @SideOnly(Side.CLIENT) @Override - public void getSubItems(@Nonnull Item item, CreativeTabs creativeTabs, List list) { + public void getSubItems(CreativeTabs tab, NonNullList items) { for (int i = 0; i < 2; i++) { - list.add(new ItemStack(this, 1, i)); + items.add(new ItemStack(this, 1, i)); } } diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemElectricPL.java b/src/main/java/com/mcgoodtime/productionline/items/ItemElectricPL.java index 6f2074e..eaab267 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemElectricPL.java +++ b/src/main/java/com/mcgoodtime/productionline/items/ItemElectricPL.java @@ -6,6 +6,7 @@ import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.util.NonNullList; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @@ -56,17 +57,16 @@ else if (meta > 3) { }); } - @SuppressWarnings({"NumericOverflow", "unchecked"}) @Override @SideOnly(Side.CLIENT) - public void getSubItems(Item item, CreativeTabs par2CreativeTabs, List itemList) { + public void getSubItems(CreativeTabs tab, NonNullList items) { ItemStack itemStack = new ItemStack(this, 1); ElectricItem.manager.charge(itemStack, 0.0D, Integer.MAX_VALUE, true, false); - itemList.add(itemStack); + items.add(itemStack); ItemStack charged = new ItemStack(this, 1); ElectricItem.manager.charge(charged, Double.POSITIVE_INFINITY, Integer.MAX_VALUE, true, false); - itemList.add(charged); + items.add(charged); } /** diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemMulti.java b/src/main/java/com/mcgoodtime/productionline/items/ItemMulti.java index d54e3b8..f4840ba 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemMulti.java +++ b/src/main/java/com/mcgoodtime/productionline/items/ItemMulti.java @@ -2,13 +2,17 @@ import com.mcgoodtime.productionline.client.IItemModelProvider; import net.minecraft.client.resources.I18n; +import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.util.NonNullList; +import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; +import javax.annotation.Nullable; import java.util.List; import static com.mcgoodtime.productionline.core.ProductionLine.MOD_ID; @@ -52,26 +56,22 @@ public int getInternalNameSize() { protected abstract List getInternalNameList(); - /** - * returns a list of items with the same ID, but different meta (eg: dye returns 16 items) - */ @Override - @SuppressWarnings("unchecked") - public void getSubItems(Item item, CreativeTabs creativeTabs, List list) { + public void getSubItems(CreativeTabs tab, NonNullList items) { for(int meta = 0; meta < this.internalNameList.size(); ++meta) { ItemStack stack = new ItemStack(this, 1, meta); - list.add(stack); + items.add(stack); } } - @Override @SideOnly(Side.CLIENT) - public void addInformation(ItemStack itemStack, EntityPlayer player, List list, boolean bool) { + @Override + public void addInformation(ItemStack stack, @Nullable World worldIn, List tooltip, ITooltipFlag flagIn) { int i = 1; - String unLocal = this.getUnlocalizedName(itemStack) + ".desc" + i; + String unLocal = this.getUnlocalizedName(stack) + ".desc" + i; while (I18n.hasKey(unLocal)) { - list.add(I18n.format(unLocal)); + tooltip.add(I18n.format(unLocal)); i++; unLocal = this.getUnlocalizedName() + ".desc" + i; } diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemPL.java b/src/main/java/com/mcgoodtime/productionline/items/ItemPL.java index 0b357b2..183d7ea 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemPL.java +++ b/src/main/java/com/mcgoodtime/productionline/items/ItemPL.java @@ -25,14 +25,18 @@ package com.mcgoodtime.productionline.items; import net.minecraft.client.resources.I18n; +import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; +import net.minecraftforge.fml.common.registry.ForgeRegistries; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; +import javax.annotation.Nullable; import java.util.List; import static com.mcgoodtime.productionline.core.ProductionLine.MOD_ID; @@ -51,17 +55,17 @@ public ItemPL(String name) { this.setUnlocalizedName(MOD_ID + "." + name); this.itemName = name; this.setCreativeTab(creativeTabPL); - GameRegistry.register(this, new ResourceLocation(MOD_ID, name)); + ForgeRegistries.ITEMS.register(this); } - @Override @SideOnly(Side.CLIENT) - public void addInformation(ItemStack itemStack, EntityPlayer player, List list, boolean bool) { + @Override + public void addInformation(ItemStack stack, @Nullable World worldIn, List tooltip, ITooltipFlag flagIn) { int i = 1; String unLocal = this.getUnlocalizedName() + ".desc" + i; while (I18n.hasKey(unLocal)) { - list.add(I18n.format(unLocal)); + tooltip.add(I18n.format(unLocal)); i++; unLocal = this.getUnlocalizedName() + ".desc" + i; } diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemPLFood.java b/src/main/java/com/mcgoodtime/productionline/items/ItemPLFood.java index 6272283..bf5a11b 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemPLFood.java +++ b/src/main/java/com/mcgoodtime/productionline/items/ItemPLFood.java @@ -73,7 +73,7 @@ public ItemPLFood(String name, int healAmount, float saturationModifier, boolean @Nullable @Override public ItemStack onItemUseFinish(@Nonnull ItemStack stack, World worldIn, EntityLivingBase entityLiving) { - --stack.stackSize; + stack.shrink(1); if (entityLiving instanceof EntityPlayer) { EntityPlayer entityplayer = (EntityPlayer) entityLiving; diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemPLRecord.java b/src/main/java/com/mcgoodtime/productionline/items/ItemPLRecord.java index 60e074e..9fd1d98 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemPLRecord.java +++ b/src/main/java/com/mcgoodtime/productionline/items/ItemPLRecord.java @@ -26,16 +26,20 @@ import com.mcgoodtime.productionline.core.ProductionLine; import net.minecraft.client.resources.I18n; +import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemRecord; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.util.SoundEvent; +import net.minecraft.world.World; +import net.minecraftforge.fml.common.registry.ForgeRegistries; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; +import javax.annotation.Nullable; import java.util.List; import static com.mcgoodtime.productionline.core.ProductionLine.MOD_ID; @@ -53,7 +57,7 @@ public ItemPLRecord(String name, SoundEvent soundEvent) { this.name = name; this.setCreativeTab(ProductionLine.creativeTabPL); this.setUnlocalizedName(MOD_ID + "." + name); - GameRegistry.register(this, new ResourceLocation(MOD_ID, name)); + ForgeRegistries.ITEMS.register(this); } @Override @@ -61,22 +65,16 @@ public String getRecordNameLocal() { return net.minecraft.util.text.translation.I18n.translateToLocal(this.getUnlocalizedName() + ".desc"); } - /** - * Retrieves the resource location of the sound to play for this record. - * - * @param name The name of the record to play - * @return The resource location for the audio, null to use default. - */ + /* @Override public ResourceLocation getRecordResource(String name) { return new ResourceLocation(ProductionLine.RESOURCE_DOMAIN, this.name); - } + }*/ @SideOnly(Side.CLIENT) @Override - public void addInformation(ItemStack stack, EntityPlayer player, List tooltipList, boolean boo) { - tooltipList.add(I18n.format(this.getUnlocalizedName() + "." + "desc1")); - tooltipList.add(I18n.format(this.getUnlocalizedName() + "." + "desc2")); + public void addInformation(ItemStack stack, @Nullable World worldIn, List tooltip, ITooltipFlag flagIn) { + tooltip.add(I18n.format(this.getUnlocalizedName() + "." + "desc1")); + tooltip.add(I18n.format(this.getUnlocalizedName() + "." + "desc2")); } - } diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemStacks.java b/src/main/java/com/mcgoodtime/productionline/items/ItemStacks.java index cecbb1f..30baf5a 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemStacks.java +++ b/src/main/java/com/mcgoodtime/productionline/items/ItemStacks.java @@ -18,7 +18,7 @@ public static ItemComparableItemStack typeOf(ItemStack stack) { public static ItemStack copyStack(ItemStack in, int amount) { ItemStack ret = in.copy(); - ret.stackSize = amount; + //ret.stackSize = amount; return ret; } diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemWaterHyacinth.java b/src/main/java/com/mcgoodtime/productionline/items/ItemWaterHyacinth.java index 0696eb3..79e573b 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemWaterHyacinth.java +++ b/src/main/java/com/mcgoodtime/productionline/items/ItemWaterHyacinth.java @@ -76,7 +76,7 @@ public ActionResult onItemRightClick(@Nonnull ItemStack itemStackIn, // special case for handling block placement with water lilies net.minecraftforge.common.util.BlockSnapshot blocksnapshot = net.minecraftforge.common.util.BlockSnapshot.getBlockSnapshot(worldIn, blockpos1); worldIn.setBlockState(blockpos1, PLBlocks.waterHyacinth.getDefaultState()); - if (net.minecraftforge.event.ForgeEventFactory.onPlayerBlockPlace(playerIn, blocksnapshot, net.minecraft.util.EnumFacing.UP).isCanceled()) { + if (net.minecraftforge.event.ForgeEventFactory.onPlayerBlockPlace(playerIn, blocksnapshot, net.minecraft.util.EnumFacing.UP, playerIn.getActiveHand()).isCanceled()) { blocksnapshot.restore(true, false); return new ActionResult<>(EnumActionResult.FAIL, itemStackIn); } @@ -84,7 +84,7 @@ public ActionResult onItemRightClick(@Nonnull ItemStack itemStackIn, worldIn.setBlockState(blockpos1, PLBlocks.waterHyacinth.getDefaultState(), 11); if (!playerIn.capabilities.isCreativeMode) { - --itemStackIn.stackSize; + itemStackIn.shrink(1); } playerIn.addStat(StatList.getObjectUseStats(this)); diff --git a/src/main/java/com/mcgoodtime/productionline/items/tools/ItemGravityRay.java b/src/main/java/com/mcgoodtime/productionline/items/tools/ItemGravityRay.java index b9f6738..e03417b 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/tools/ItemGravityRay.java +++ b/src/main/java/com/mcgoodtime/productionline/items/tools/ItemGravityRay.java @@ -74,16 +74,16 @@ public void onPlayerStoppedUsing(ItemStack itemStack, World world, EntityLivingB /** * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer - */ + *//* @Override @Nonnull - public ActionResult onItemRightClick(@Nonnull ItemStack stack, World world, EntityPlayer player, EnumHand hand) { - if (player.capabilities.isCreativeMode || ElectricItem.manager.getCharge(stack) >= 100) { - player.setActiveHand(hand); + public ActionResult onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn) { + if (playerIn.capabilities.isCreativeMode || ElectricItem.manager.getCharge(stack) >= 100) { + playerIn.setActiveHand(handIn); return new ActionResult<>(EnumActionResult.SUCCESS, stack); } return new ActionResult<>(EnumActionResult.PASS, stack); - } + }*/ /** * returns the action that specifies what animation to play when the items is being used diff --git a/src/main/java/com/mcgoodtime/productionline/items/tools/ItemPLTreetap.java b/src/main/java/com/mcgoodtime/productionline/items/tools/ItemPLTreetap.java index 295feac..e692ae4 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/tools/ItemPLTreetap.java +++ b/src/main/java/com/mcgoodtime/productionline/items/tools/ItemPLTreetap.java @@ -59,13 +59,13 @@ public ItemPLTreetap(String name, int damage) { } @Override - public EnumActionResult onItemUse(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing side, float xOffset, float yOffset, float zOffset) { - IBlockState state = world.getBlockState(pos); + public EnumActionResult onItemUse(EntityPlayer player, World worldIn, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { + IBlockState state = worldIn.getBlockState(pos); Block block = state.getBlock(); if (block == BlockName.rubber_wood.getInstance()) { - attemptExtract(player, world, pos, side, state, null); - if (!world.isRemote) { - stack.damageItem(1, player); + attemptExtract(player, worldIn, pos, facing, state, null); + if (!worldIn.isRemote) { + //stack.damageItem(1, player); } return EnumActionResult.SUCCESS; diff --git a/src/main/java/com/mcgoodtime/productionline/items/tools/ToolPL.java b/src/main/java/com/mcgoodtime/productionline/items/tools/ToolPL.java index 7583d2e..6bb5e68 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/tools/ToolPL.java +++ b/src/main/java/com/mcgoodtime/productionline/items/tools/ToolPL.java @@ -32,6 +32,7 @@ import net.minecraft.item.ItemSpade; import net.minecraft.item.ItemSword; import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.common.registry.ForgeRegistries; import net.minecraftforge.fml.common.registry.GameRegistry; import static com.mcgoodtime.productionline.core.ProductionLine.*; @@ -63,7 +64,7 @@ private static void registerItem(String name, Item item) { item.setUnlocalizedName(MOD_NAME + "." + name); // item.setTextureName(RESOURCE_DOMAIN + ":" + "item" + name); item.setCreativeTab(creativeTabPL); - GameRegistry.register(item, new ResourceLocation(MOD_ID, name)); + ForgeRegistries.ITEMS.register(item); } private static class Pickaxe extends ItemPickaxe { diff --git a/src/main/java/com/mcgoodtime/productionline/mixin/MixinItemMulti.java b/src/main/java/com/mcgoodtime/productionline/mixin/MixinItemMulti.java index 7be20e2..b15a0a7 100644 --- a/src/main/java/com/mcgoodtime/productionline/mixin/MixinItemMulti.java +++ b/src/main/java/com/mcgoodtime/productionline/mixin/MixinItemMulti.java @@ -5,17 +5,17 @@ import ic2.core.block.state.IIdProvider; import ic2.core.item.ItemIC2; import ic2.core.item.ItemMulti; -import ic2.core.item.type.NuclearResourceType; +import ic2.core.item.type.NuclearResourceType;/* import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;*/ /** * ThrowableUranium238Handler registry. * Created by BestOwl on 2016-06-01. - */ + *//* @Mixin(ItemMulti.class) public abstract class MixinItemMulti & IIdProvider> extends ItemIC2 { @@ -37,3 +37,4 @@ private void onInstantiation(CallbackInfo callbackInfo) { @Shadow public abstract void setRightClickHandler(T type, ItemMulti.IItemRightClickHandler handler); } +*/ \ No newline at end of file diff --git a/src/main/java/com/mcgoodtime/productionline/mixin/MixinTileEntityFurnace.java b/src/main/java/com/mcgoodtime/productionline/mixin/MixinTileEntityFurnace.java index 81d8283..d507052 100644 --- a/src/main/java/com/mcgoodtime/productionline/mixin/MixinTileEntityFurnace.java +++ b/src/main/java/com/mcgoodtime/productionline/mixin/MixinTileEntityFurnace.java @@ -8,18 +8,18 @@ import net.minecraft.item.ItemFireworkCharge; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityFurnace; +import net.minecraft.tileentity.TileEntityFurnace;/* import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - +*/ /** * Created by BestOwl on 2015.12.5.0005. * * @author BestOwl - */ + *//* @Mixin(TileEntityFurnace.class) public abstract class MixinTileEntityFurnace extends TileEntity { @@ -57,3 +57,4 @@ private void doExplosion() { this.invalidate(); } } +*/ \ No newline at end of file diff --git a/src/main/java/com/mcgoodtime/productionline/network/message/MessageEUStorage.java b/src/main/java/com/mcgoodtime/productionline/network/message/MessageEUStorage.java index 22ea18f..69b0146 100644 --- a/src/main/java/com/mcgoodtime/productionline/network/message/MessageEUStorage.java +++ b/src/main/java/com/mcgoodtime/productionline/network/message/MessageEUStorage.java @@ -33,9 +33,9 @@ protected IMessage handlerMessage(MessageBase message, MessageContext ctx) { long pos = message.nbt.getLong("pos"); short modeID = message.nbt.getShort("redstoneMode"); RedstoneMode mode = RedstoneMode.values()[modeID]; - TileEUStorage tile = (TileEUStorage) ctx.getServerHandler().playerEntity.world.getTileEntity(BlockPos.fromLong(pos)); + TileEUStorage tile = (TileEUStorage) ctx.getServerHandler().player.world.getTileEntity(BlockPos.fromLong(pos)); tile.redstoneMode = mode; - PLUtil.messageToPlayer(ctx.getServerHandler().playerEntity, I18n.translateToLocal("ic2.EUStorage.gui.mod.redstone" + modeID)); + PLUtil.messageToPlayer(ctx.getServerHandler().player, I18n.translateToLocal("ic2.EUStorage.gui.mod.redstone" + modeID)); return null; } diff --git a/src/main/java/com/mcgoodtime/productionline/recipes/FluidKineticGeneratorRecipes.java b/src/main/java/com/mcgoodtime/productionline/recipes/FluidKineticGeneratorRecipes.java index 47277e9..9e03cf9 100644 --- a/src/main/java/com/mcgoodtime/productionline/recipes/FluidKineticGeneratorRecipes.java +++ b/src/main/java/com/mcgoodtime/productionline/recipes/FluidKineticGeneratorRecipes.java @@ -24,8 +24,9 @@ */ package com.mcgoodtime.productionline.recipes; +import ic2.api.recipe.MachineRecipe; +import ic2.api.recipe.MachineRecipeResult; import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; @@ -67,7 +68,7 @@ public ItemStack getProcessResult(ItemStack itemStack) { * @return Whether this item can process */ @Override - public boolean canProcess(ItemStack itemStack) { + public boolean canProcess(ItemStack itemStack) {/* FluidStack fluidStack = FluidContainerRegistry.getFluidForFilledItem(itemStack); if (fluidStack != null) { for (RecipePart recipePart : this.processList) { @@ -76,7 +77,7 @@ public boolean canProcess(ItemStack itemStack) { } } } - + */ return false; } @@ -104,6 +105,16 @@ public RecipePart getRecipePart(ItemStack itemStack) { return null; } + @Override + public MachineRecipeResult apply(Object o, boolean b) { + return null; + } + + @Override + public Iterable getRecipes() { + return null; + } + public class RecipePartFluidKineticGenerator extends RecipePart { public FluidStack fluidStack; diff --git a/src/main/java/com/mcgoodtime/productionline/recipes/RecipeBase.java b/src/main/java/com/mcgoodtime/productionline/recipes/RecipeBase.java index e471a93..3a7412e 100644 --- a/src/main/java/com/mcgoodtime/productionline/recipes/RecipeBase.java +++ b/src/main/java/com/mcgoodtime/productionline/recipes/RecipeBase.java @@ -24,9 +24,7 @@ */ package com.mcgoodtime.productionline.recipes; -import ic2.api.recipe.IMachineRecipeManager; -import ic2.api.recipe.IRecipeInput; -import ic2.api.recipe.RecipeOutput; +import ic2.api.recipe.*; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -79,7 +77,7 @@ public boolean canProcess(ItemStack itemStack) { public int getRequiredProcessAmount(ItemStack itemStack) { for (RecipePart recipes : this.processList) { if (recipes.input.isItemEqual(itemStack)) { - return recipes.input.stackSize; + return recipes.input.getMaxStackSize(); } } return 1; @@ -104,19 +102,18 @@ public RecipePart getRecipePart(ItemStack itemStack) { } @Override - public boolean addRecipe(IRecipeInput iRecipeInput, NBTTagCompound nbtTagCompound, boolean b, ItemStack... itemStacks) { - processList.add(new RecipePart(iRecipeInput.getInputs().get(0), itemStacks[0])); //TODO Implement this - return true; + public boolean addRecipe(Object o, Object o2, NBTTagCompound nbtTagCompound, boolean b) { + return false; } @Override - public RecipeOutput getOutputFor(ItemStack itemStack, boolean b) { - return new RecipeOutput(new NBTTagCompound(), getRecipePart(itemStack).output); + public MachineRecipeResult apply(Object o, boolean b) { + return null; } @Override - public Iterable getRecipes() { - throw new UnsupportedOperationException("not supported"); + public Iterable getRecipes() { + return null; } @Override diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/TileAdvSolar.java b/src/main/java/com/mcgoodtime/productionline/tiles/TileAdvSolar.java index e049755..a415d04 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/TileAdvSolar.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/TileAdvSolar.java @@ -89,7 +89,7 @@ else if (stack.isItemEqual(PLItems.advSolarLensCluster)) { public void updateSunVisible() { int skylight = this.world.getBlockLightOpacity(new BlockPos(pos.getX(), 255, pos.getZ())); - boolean hasSky = !this.world.provider.hasNoSky(); + boolean hasSky = this.world.provider.hasSkyLight(); boolean canSeeSky = this.world.canSeeSky(pos.up()); boolean dry = !this.world.getBiomeForCoordsBody(pos).canRain(); this.underSun = skylight > 4 && hasSky && canSeeSky && (dry || !this.world.isRaining() && !this.world.isThundering()); diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/TileCarbonizeFurnace.java b/src/main/java/com/mcgoodtime/productionline/tiles/TileCarbonizeFurnace.java index f44e635..0f16711 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/TileCarbonizeFurnace.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/TileCarbonizeFurnace.java @@ -29,7 +29,7 @@ import com.mcgoodtime.productionline.recipes.RecipePart; import com.mcgoodtime.productionline.tiles.tileslots.*; import ic2.api.energy.tile.IEnergyEmitter; -import ic2.core.upgrade.IUpgradeItem; +import ic2.api.upgrade.IUpgradeItem; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumFacing; @@ -125,7 +125,7 @@ private boolean canProcess() { ItemStack stack = this.getStackInSlot(0); ItemStack outputItemStack = CarbonizeFurnaceRecipes.instance.getProcessResult(stack); if (outputItemStack != null) { - if (!(stack.stackSize >= CarbonizeFurnaceRecipes.instance.getRequiredProcessAmount(stack))) { + if (!(stack.getCount() >= CarbonizeFurnaceRecipes.instance.getRequiredProcessAmount(stack))) { return false; } @@ -134,14 +134,14 @@ private boolean canProcess() { } else { if (this.getStackInSlot(2).isItemEqual(outputItemStack)) { - int result = this.getStackInSlot(2).stackSize + outputItemStack.stackSize; + int result = this.getStackInSlot(2).getCount() + outputItemStack.getCount(); if (result <= getInventoryStackLimit() && result <= this.getStackInSlot(2).getMaxStackSize()) { return true; } } if (this.getStackInSlot(3).isItemEqual(outputItemStack)) { - int result = this.getStackInSlot(3).stackSize + outputItemStack.stackSize; + int result = this.getStackInSlot(3).getCount() + outputItemStack.getCount(); if (result <= getInventoryStackLimit() && result <= this.getStackInSlot(3).getMaxStackSize()) { return true; } @@ -162,18 +162,18 @@ public void processItem() { this.setInventorySlotContents(2, outputItem.copy()); } else if (this.getStackInSlot(2).isItemEqual(outputItem)) { - this.getStackInSlot(2).stackSize += outputItem.stackSize; + this.getStackInSlot(2).grow(outputItem.getCount()); } else if (this.getStackInSlot(3) == null) { this.setInventorySlotContents(3, outputItem.copy()); } else if (this.getStackInSlot(3).isItemEqual(outputItem)) { - this.getStackInSlot(3).stackSize += outputItem.stackSize; + this.getStackInSlot(3).grow(outputItem.getCount()); } - this.getStackInSlot(0).stackSize -= CarbonizeFurnaceRecipes.instance.getRequiredProcessAmount(this.getStackInSlot(0)); + this.getStackInSlot(0).shrink(CarbonizeFurnaceRecipes.instance.getRequiredProcessAmount(this.getStackInSlot(0))); - if (this.getStackInSlot(0).stackSize <= 0) { + if (this.getStackInSlot(0).getCount() <= 0) { this.setInventorySlotContents(0, null); } } diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/TileContainer.java b/src/main/java/com/mcgoodtime/productionline/tiles/TileContainer.java index 1026116..e714dcf 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/TileContainer.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/TileContainer.java @@ -74,6 +74,11 @@ public ItemStack removeStackFromSlot(int index) { return null; } + @Override + public boolean isEmpty() { + return false; + } + @Override public int getField(int id) { return 0; @@ -190,13 +195,13 @@ public ItemStack decrStackSize(int slot, int num) { slotItem = this.tileSlots.get(slot).getStack(); - if (slotItem.stackSize <= num) { + if (slotItem.getCount() <= num) { this.tileSlots.get(slot).putStack(null); return slotItem; } else { itemstack = slotItem.splitStack(num); - if (slotItem.stackSize == 0) { + if (slotItem.getCount() == 0) { this.tileSlots.get(slot).putStack(null); } @@ -214,8 +219,8 @@ public ItemStack decrStackSize(int slot, int num) { @Override public void setInventorySlotContents(int index, ItemStack itemStack) { TileSlot slot = this.tileSlots.get(index); - if (itemStack != null && itemStack.stackSize > this.getInventoryStackLimit()) { - itemStack.stackSize = this.getInventoryStackLimit(); + if (itemStack != null && itemStack.getCount() > this.getInventoryStackLimit()) { + itemStack.setCount(this.getInventoryStackLimit()); } slot.putStack(itemStack); } diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/TileHeatDryer.java b/src/main/java/com/mcgoodtime/productionline/tiles/TileHeatDryer.java index 596e9e3..eb865cf 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/TileHeatDryer.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/TileHeatDryer.java @@ -27,7 +27,7 @@ import com.mcgoodtime.productionline.recipes.HeatDryerRecipes; import com.mcgoodtime.productionline.tiles.tileslots.*; -import ic2.core.upgrade.IUpgradeItem; +import ic2.api.upgrade.IUpgradeItem; import net.minecraft.item.ItemStack; /** @@ -95,14 +95,14 @@ private boolean canProcess() { } else { ItemStack itemStack = HeatDryerRecipes.instance.getProcessResult(this.getStackInSlot(0)); if (itemStack != null) { - if (!(itemStack.stackSize >= HeatDryerRecipes.instance.getRequiredProcessAmount(itemStack))) { + if (!(itemStack.getCount() >= HeatDryerRecipes.instance.getRequiredProcessAmount(itemStack))) { return false; } if (this.getStackInSlot(2) == null) { return true; } else { if (this.getStackInSlot(2).isItemEqual(itemStack)) { - int result = this.getStackInSlot(2).stackSize + itemStack.stackSize; + int result = this.getStackInSlot(2).getCount() + itemStack.getCount(); if (result <= getInventoryStackLimit() && result <= this.getStackInSlot(2).getMaxStackSize()) { return true; } @@ -122,12 +122,12 @@ public void processItem() { this.setInventorySlotContents(2, outputItem.copy()); } else if (this.getStackInSlot(2).isItemEqual(outputItem)) { - this.getStackInSlot(2).stackSize += outputItem.stackSize; + this.getStackInSlot(2).grow(outputItem.getCount()); } - this.getStackInSlot(0).stackSize -= HeatDryerRecipes.instance.getRequiredProcessAmount(this.getStackInSlot(0)); + this.getStackInSlot(0).shrink(HeatDryerRecipes.instance.getRequiredProcessAmount(this.getStackInSlot(0))); - if (this.getStackInSlot(0).stackSize <= 0) { + if (this.getStackInSlot(0).getCount() <= 0) { this.setInventorySlotContents(0, null); } } diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/TileMachine.java b/src/main/java/com/mcgoodtime/productionline/tiles/TileMachine.java index a423f93..e6b9f72 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/TileMachine.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/TileMachine.java @@ -27,8 +27,8 @@ package com.mcgoodtime.productionline.tiles; import ic2.api.tile.IWrenchable; -import ic2.core.upgrade.IUpgradableBlock; -import ic2.core.upgrade.UpgradableProperty; +import ic2.api.upgrade.IUpgradableBlock; +import ic2.api.upgrade.UpgradableProperty; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/TilePackager.java b/src/main/java/com/mcgoodtime/productionline/tiles/TilePackager.java index 22e973d..c4a9ba9 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/TilePackager.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/TilePackager.java @@ -26,7 +26,7 @@ import com.mcgoodtime.productionline.recipes.PackagerRecipes; import com.mcgoodtime.productionline.tiles.tileslots.*; -import ic2.core.upgrade.IUpgradeItem; +import ic2.api.upgrade.IUpgradeItem; import net.minecraft.item.ItemStack; import javax.annotation.Nonnull; @@ -101,7 +101,7 @@ private boolean canProcess() { ItemStack input = this.getStackInSlot(0); ItemStack outputStack = PackagerRecipes.instance.getProcessResult(input); if (outputStack != null) { - if (!(input.stackSize >= PackagerRecipes.instance.getRequiredProcessAmount(input))) { + if (!(input.getCount() >= PackagerRecipes.instance.getRequiredProcessAmount(input))) { return false; } @@ -110,7 +110,7 @@ private boolean canProcess() { return true; } else { if (this.getStackInSlot(3).isItemEqual(outputStack)) { - int result = this.getStackInSlot(3).stackSize + outputStack.stackSize; + int result = this.getStackInSlot(3).getCount() + outputStack.getCount(); if (result <= getInventoryStackLimit() && result <= this.getStackInSlot(3).getMaxStackSize()) { return true; } @@ -130,18 +130,18 @@ public void processItem() { this.setInventorySlotContents(3, outputItem.copy()); } else if (this.getStackInSlot(3).isItemEqual(outputItem)) { - this.getStackInSlot(3).stackSize += outputItem.stackSize; + this.getStackInSlot(3).grow(outputItem.getCount()); } - this.getStackInSlot(0).stackSize -= PackagerRecipes.instance.getRequiredProcessAmount(this.getStackInSlot(0)); + this.getStackInSlot(0).shrink(PackagerRecipes.instance.getRequiredProcessAmount(this.getStackInSlot(0))); - if (this.getStackInSlot(0).stackSize <= 0) { + if (this.getStackInSlot(0).getCount() <= 0) { this.setInventorySlotContents(0, null); } - this.getStackInSlot(1).stackSize--; + this.getStackInSlot(1).shrink(1); - if (this.getStackInSlot(1).stackSize <= 0) { + if (this.getStackInSlot(1).getCount() <= 0) { this.setInventorySlotContents(1, null); } } diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/eustorage/TileEUStorage.java b/src/main/java/com/mcgoodtime/productionline/tiles/eustorage/TileEUStorage.java index a827d77..5fbe711 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/eustorage/TileEUStorage.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/eustorage/TileEUStorage.java @@ -66,7 +66,7 @@ public void update() { } if (this.shouldEmitRedstonePower()) { - this.world.notifyBlockOfStateChange(this.pos, this.world.getBlockState(this.pos).getBlock()); + //this.world.notifyBlockOfStateChange(this.pos, this.world.getBlockState(this.pos).getBlock()); } } diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/tileslots/TileSlot.java b/src/main/java/com/mcgoodtime/productionline/tiles/tileslots/TileSlot.java index 2706b32..0388a5a 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/tileslots/TileSlot.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/tileslots/TileSlot.java @@ -63,7 +63,7 @@ public NBTTagCompound writeToNBT(NBTTagCompound nbt) { } public void readFromNBT(NBTTagCompound nbt) { - this.item = ItemStack.loadItemStackFromNBT(nbt.getCompoundTag("TileSlot")); + //this.item = ItemStack.loadItemStackFromNBT(nbt.getCompoundTag("TileSlot")); } /** diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/tileslots/TileSlotDischarge.java b/src/main/java/com/mcgoodtime/productionline/tiles/tileslots/TileSlotDischarge.java index 870fa7b..1ac5b18 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/tileslots/TileSlotDischarge.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/tileslots/TileSlotDischarge.java @@ -68,8 +68,8 @@ public double discharge(double amount, boolean ignoreLimit) { return 0.0D; } - --stack.stackSize; - if(stack.stackSize <= 0) { + stack.shrink(1); + if(stack.getCount() <= 0) { this.putStack(null); } } diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/tileslots/TileSlotFluidInput.java b/src/main/java/com/mcgoodtime/productionline/tiles/tileslots/TileSlotFluidInput.java index e8dd13a..3b2d8d6 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/tileslots/TileSlotFluidInput.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/tileslots/TileSlotFluidInput.java @@ -83,7 +83,7 @@ public void drainToTank() { } } - private FluidStack drain(Fluid fluid, int amount) { + private FluidStack drain(Fluid fluid, int amount) {/* if (FluidContainerRegistry.isFilledContainer(this.item)) { FluidStack container = FluidContainerRegistry.getFluidForFilledItem(this.item); @@ -112,7 +112,7 @@ private FluidStack drain(Fluid fluid, int amount) { } } - } + }*/ return null; } diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/tileslots/TileSlotUpgrade.java b/src/main/java/com/mcgoodtime/productionline/tiles/tileslots/TileSlotUpgrade.java index eb9ea5e..d497e9d 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/tileslots/TileSlotUpgrade.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/tileslots/TileSlotUpgrade.java @@ -25,8 +25,8 @@ package com.mcgoodtime.productionline.tiles.tileslots; import com.mcgoodtime.productionline.tiles.TileContainer; -import ic2.core.upgrade.IUpgradableBlock; -import ic2.core.upgrade.IUpgradeItem; +import ic2.api.upgrade.IUpgradableBlock; +import ic2.api.upgrade.IUpgradeItem; import net.minecraft.item.ItemStack; /** diff --git a/src/main/java/com/mcgoodtime/productionline/worldgen/PLWorldGen.java b/src/main/java/com/mcgoodtime/productionline/worldgen/PLWorldGen.java index aa7caf4..4313c8b 100644 --- a/src/main/java/com/mcgoodtime/productionline/worldgen/PLWorldGen.java +++ b/src/main/java/com/mcgoodtime/productionline/worldgen/PLWorldGen.java @@ -29,8 +29,8 @@ import net.minecraft.block.state.IBlockState; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -import net.minecraft.world.chunk.IChunkGenerator; import net.minecraft.world.chunk.IChunkProvider; +import net.minecraft.world.gen.IChunkGenerator; import net.minecraft.world.gen.feature.WorldGenMinable; import net.minecraftforge.fml.common.IWorldGenerator; import net.minecraftforge.fml.common.registry.GameRegistry; @@ -94,7 +94,7 @@ private void generateOre(World world, Random rand, int chunkX, int chunkZ) { @Override public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider) { //doesWaterVaporize() return isHellWorld - if ((!world.provider.doesWaterVaporize()) && (!world.provider.hasNoSky())) { + if ((!world.provider.doesWaterVaporize()) && (world.provider.hasSkyLight())) { generateOre(world, random, chunkX, chunkZ); } } From 4ee40a0f6d5c45c5fcbc878372dd478163c2ebf8 Mon Sep 17 00:00:00 2001 From: NightOwl Date: Tue, 14 Jul 2020 16:17:14 +0800 Subject: [PATCH 03/51] Now this mod can run on 1.12.2, but still missing many features Fix registration Temporarily disable ore generation --- .../java/com/mcgoodtime/productionline/blocks/BlockPL.java | 6 +++++- .../java/com/mcgoodtime/productionline/init/PLItems.java | 1 + .../com/mcgoodtime/productionline/init/PLOreDictionary.java | 6 +++--- .../com/mcgoodtime/productionline/items/ItemBlockPL.java | 1 + .../mcgoodtime/productionline/items/ItemDiamondApple.java | 1 + .../java/com/mcgoodtime/productionline/items/ItemPL.java | 1 + .../com/mcgoodtime/productionline/items/ItemPLRecord.java | 1 + .../com/mcgoodtime/productionline/items/tools/ToolPL.java | 1 + 8 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/BlockPL.java b/src/main/java/com/mcgoodtime/productionline/blocks/BlockPL.java index 9ca0445..24f3905 100644 --- a/src/main/java/com/mcgoodtime/productionline/blocks/BlockPL.java +++ b/src/main/java/com/mcgoodtime/productionline/blocks/BlockPL.java @@ -25,6 +25,7 @@ package com.mcgoodtime.productionline.blocks; import com.mcgoodtime.productionline.core.PLConfig; +import com.mcgoodtime.productionline.items.ItemBlockPL; import net.minecraft.block.properties.PropertyDirection; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; @@ -78,6 +79,7 @@ public BlockPL(Material material, String name) { this.setUnlocalizedName(MOD_ID + ".block." + name); this.setCreativeTab(creativeTabPL); this.internalName = name; + this.setRegistryName(new ResourceLocation(MOD_ID, this.internalName)); // TODO register after construction ForgeRegistries.BLOCKS.register(this); this.registerItemBlock(); @@ -148,7 +150,9 @@ public Item getItemDropped(IBlockState state, Random rand, int fortune) { * Forge recommend register item block separately. */ protected void registerItemBlock() { - ForgeRegistries.ITEMS.register(new ItemBlock(this)); + ItemBlock item = new ItemBlock(this); + item.setRegistryName(new ResourceLocation(MOD_ID, this.internalName)); + ForgeRegistries.ITEMS.register(item); } @Override diff --git a/src/main/java/com/mcgoodtime/productionline/init/PLItems.java b/src/main/java/com/mcgoodtime/productionline/init/PLItems.java index 96b1ab3..564b57b 100644 --- a/src/main/java/com/mcgoodtime/productionline/init/PLItems.java +++ b/src/main/java/com/mcgoodtime/productionline/init/PLItems.java @@ -151,6 +151,7 @@ public ActionResult onItemRightClick(World worldIn, EntityPlayer play saltWaterBucket = new ItemBucket(Blocks.WATER); saltWaterBucket.setCreativeTab(ProductionLine.creativeTabPL) .setUnlocalizedName(MOD_ID + ".saltwater_bucket"); + saltWaterBucket.setRegistryName(MOD_ID, "saltwater_bucket"); // iridiumPickaxe = ToolPL.registerPickaxe(PLToolMaterial.iridium, "iridium_pickaxe"); // iridiumAxe = ToolPL.registerAxe(PLToolMaterial.iridium, "iridium_axe"); diff --git a/src/main/java/com/mcgoodtime/productionline/init/PLOreDictionary.java b/src/main/java/com/mcgoodtime/productionline/init/PLOreDictionary.java index ae5cdec..d85c0f6 100644 --- a/src/main/java/com/mcgoodtime/productionline/init/PLOreDictionary.java +++ b/src/main/java/com/mcgoodtime/productionline/init/PLOreDictionary.java @@ -38,8 +38,8 @@ public static void init() { OreDictionary.registerOre("paper", Items.PAPER); - OreDictionary.registerOre("advSolarLens", PLItems.advSolarLensUnit); - OreDictionary.registerOre("advSolarLens", PLItems.advSolarLensGroup); - OreDictionary.registerOre("advSolarLens", PLItems.advSolarLensCluster); + //OreDictionary.registerOre("advSolarLens", PLItems.advSolarLensUnit); + //OreDictionary.registerOre("advSolarLens", PLItems.advSolarLensGroup); + //OreDictionary.registerOre("advSolarLens", PLItems.advSolarLensCluster); } } diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemBlockPL.java b/src/main/java/com/mcgoodtime/productionline/items/ItemBlockPL.java index da135a3..c37c2b6 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemBlockPL.java +++ b/src/main/java/com/mcgoodtime/productionline/items/ItemBlockPL.java @@ -49,6 +49,7 @@ public ItemBlockPL(Block block) { super(block); this.setMaxDamage(0); this.hasSubtypes = true; + this.setRegistryName(block.getRegistryName()); } /** diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemDiamondApple.java b/src/main/java/com/mcgoodtime/productionline/items/ItemDiamondApple.java index 04534ac..96f318f 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemDiamondApple.java +++ b/src/main/java/com/mcgoodtime/productionline/items/ItemDiamondApple.java @@ -37,6 +37,7 @@ public ItemDiamondApple() { this.setCreativeTab(ProductionLine.creativeTabPL); this.setHasSubtypes(true); this.setAlwaysEdible(); + this.setRegistryName(new ResourceLocation(ProductionLine.MOD_ID, "diamond_apple")); ForgeRegistries.ITEMS.register(this); } diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemPL.java b/src/main/java/com/mcgoodtime/productionline/items/ItemPL.java index 183d7ea..5331667 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemPL.java +++ b/src/main/java/com/mcgoodtime/productionline/items/ItemPL.java @@ -55,6 +55,7 @@ public ItemPL(String name) { this.setUnlocalizedName(MOD_ID + "." + name); this.itemName = name; this.setCreativeTab(creativeTabPL); + this.setRegistryName(new ResourceLocation(MOD_ID, name)); ForgeRegistries.ITEMS.register(this); } diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemPLRecord.java b/src/main/java/com/mcgoodtime/productionline/items/ItemPLRecord.java index 9fd1d98..9278b73 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemPLRecord.java +++ b/src/main/java/com/mcgoodtime/productionline/items/ItemPLRecord.java @@ -57,6 +57,7 @@ public ItemPLRecord(String name, SoundEvent soundEvent) { this.name = name; this.setCreativeTab(ProductionLine.creativeTabPL); this.setUnlocalizedName(MOD_ID + "." + name); + this.setRegistryName(new ResourceLocation(MOD_ID, name)); ForgeRegistries.ITEMS.register(this); } diff --git a/src/main/java/com/mcgoodtime/productionline/items/tools/ToolPL.java b/src/main/java/com/mcgoodtime/productionline/items/tools/ToolPL.java index 6bb5e68..122308e 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/tools/ToolPL.java +++ b/src/main/java/com/mcgoodtime/productionline/items/tools/ToolPL.java @@ -64,6 +64,7 @@ private static void registerItem(String name, Item item) { item.setUnlocalizedName(MOD_NAME + "." + name); // item.setTextureName(RESOURCE_DOMAIN + ":" + "item" + name); item.setCreativeTab(creativeTabPL); + item.setRegistryName(new ResourceLocation(MOD_ID, name)); ForgeRegistries.ITEMS.register(item); } From 1e5c7f9fc1241d88302574e830ff69badc6176c2 Mon Sep 17 00:00:00 2001 From: NightOwl Date: Tue, 14 Jul 2020 21:35:52 +0800 Subject: [PATCH 04/51] Removed legecy items and blocks We are going to rewrite and redefine this mod Add pack.mcmeta Move diamond_apple resources --- .../productionline/blocks/BlockMachine.java | 61 +---- .../productionline/blocks/BlockMisc.java | 9 +- .../blocks/BlockWaterHyacinth.java | 116 ---------- .../generator/BlockFluidKineticGenerator.java | 62 ----- .../client/PLModelRegistry.java | 21 -- .../client/gui/GuiAdvSolar.java | 49 ---- .../client/gui/GuiCarbonizeFurnace.java | 56 ----- .../client/gui/GuiEUStorage.java | 76 ------- .../client/gui/GuiFluidKineticGenerator.java | 101 --------- .../client/gui/GuiHeatDryer.java | 55 ----- .../client/gui/GuiPackager.java | 80 ------- .../client/gui/GuiParallelSpaceSU.java | 74 ------ .../productionline/core/GuiHandler.java | 44 ---- .../productionline/core/ProductionLine.java | 2 +- .../productionline/init/PLBlocks.java | 22 -- .../productionline/init/PLItems.java | 138 +---------- .../productionline/init/PLRecipes.java | 1 - .../inventory/ContainerAdvSolar.java | 81 ------- .../inventory/ContainerCarbonizeFurnace.java | 112 --------- .../inventory/ContainerEUStorage.java | 72 ------ .../ContainerFluidKineticGenerator.java | 101 --------- .../inventory/ContainerHeatDryer.java | 97 -------- .../inventory/ContainerPackager.java | 97 -------- .../inventory/ContainerParallelSpaceSU.java | 64 ------ .../items/ItemBlockEUStorage.java | 79 ------- .../productionline/items/ItemCEU.java | 47 ---- .../productionline/items/ItemCrafting.java | 36 --- .../productionline/items/ItemElectricPL.java | 113 --------- .../productionline/items/ItemOre.java | 1 - .../productionline/items/ItemPLFood.java | 183 --------------- .../productionline/items/ItemPLRecord.java | 81 ------- .../items/ItemWaterHyacinth.java | 99 -------- .../items/tools/ItemGravityRay.java | 119 ---------- .../items/tools/ItemPLTreetap.java | 160 ------------- .../items/tools/PLToolMaterial.java | 35 --- .../productionline/items/tools/ToolPL.java | 103 --------- .../productionline/network/PLNetwork.java | 7 - .../network/message/MessageEUStorage.java | 42 ---- .../recipes/CarbonizeFurnaceRecipes.java | 61 ----- .../recipes/FluidKineticGeneratorRecipes.java | 126 ----------- .../recipes/HeatDryerRecipes.java | 44 ---- .../recipes/PackagerRecipes.java | 49 ---- .../productionline/tiles/TileAdvSolar.java | 150 ------------ .../tiles/TileCarbonizeFurnace.java | 187 --------------- .../productionline/tiles/TileCutter.java | 37 --- .../tiles/TileFluidKineticGenerator.java | 189 ---------------- .../productionline/tiles/TileHeatDryer.java | 136 ----------- .../tiles/TileLiquidExtractor.java | 37 --- .../productionline/tiles/TileMixer.java | 37 --- .../productionline/tiles/TilePackager.java | 149 ------------ .../tiles/eustorage/TileCSEU.java | 18 -- .../tiles/eustorage/TileEUStorage.java | 214 ------------------ .../tiles/eustorage/TileEVSU.java | 41 ---- .../tiles/eustorage/TileParallelSpaceSU.java | 18 -- .../productionline/blockstates/adv_solar.json | 26 --- .../blockstates/air_brake_casing.json | 28 --- .../blockstates/block_misc.json | 16 +- .../blockstates/carbonize_furnace.json | 40 ---- .../productionline/blockstates/cseu.json | 46 ---- .../productionline/blockstates/cutter.json | 38 ---- .../productionline/blockstates/evsu.json | 45 ---- .../blockstates/fluid_kinetic_generator.json | 40 ---- .../blockstates/heat_dryer.json | 42 ---- .../productionline/blockstates/packager.json | 38 ---- .../blockstates/parallel_space_su.json | 44 ---- .../lang/{en_US.lang => en_us.lang} | 0 .../lang/{zh_CN.lang => zh_cn.lang} | 0 .../productionline/models/block/dry_log.json | 6 - .../productionline/models/block/pad.json | 6 - .../item/crafting/adv_solar_lens_cluster.json | 6 - .../item/crafting/adv_solar_lens_group.json | 6 - .../item/crafting/adv_solar_lens_unit.json | 6 - .../models/item/crafting/air_brake_unit.json | 6 - .../models/item/crafting/bamboo_charcoal.json | 6 - .../models/item/crafting/bio_fuel.json | 6 - .../models/item/crafting/calculate_array.json | 6 - .../models/item/crafting/calculate_chunk.json | 6 - .../models/item/crafting/calculate_unit.json | 6 - .../models/item/crafting/carbon_crystal.json | 6 - .../models/item/crafting/carbon_tube.json | 6 - .../models/item/crafting/coarse_batten.json | 6 - .../item/crafting/corrugated_paper.json | 6 - .../cyclotron_particle_accelerator.json | 6 - .../crafting/electronic_circuit_control.json | 6 - .../crafting/electronic_circuit_core.json | 6 - .../crafting/ender_calculation_crystal.json | 6 - .../models/item/crafting/faggot.json | 6 - .../models/item/crafting/firewood.json | 6 - .../float_point_calculations_region.json | 6 - .../crafting/heat_insulation_material.json | 6 - .../item/crafting/heat_insulation_plate.json | 6 - .../models/item/crafting/lazuli_module.json | 6 - .../models/item/crafting/mill_teeth.json | 6 - .../models/item/crafting/mill_wheel.json | 6 - .../crafting/obsidian_mechanical_casing.json | 6 - .../crafting/obsidian_mechanical_frame.json | 6 - .../obsidian_plate_gravity_field.json | 6 - .../models/item/crafting/paper_bag.json | 6 - .../crafting/parallel_space_converter.json | 6 - .../pulse_electronic_circuit_control.json | 6 - .../pulse_electronic_circuit_core.json | 6 - .../models/item/crafting/redstone_module.json | 6 - .../models/item/crafting/rigid_paper.json | 6 - .../item/crafting/rigid_paper_pack.json | 6 - .../models/item/crafting/roller.json | 6 - .../models/item/crafting/sawdust.json | 6 - .../small_compressed_water_hyacinth.json | 6 - .../models/item/crafting/tiles.json | 6 - .../models/item/crafting/uu_matter_core.json | 6 - .../models/item/crafting/wood_pulp.json | 6 - .../models/item/{food => }/diamond_apple.json | 0 .../productionline/models/item/dry_log.json | 3 - .../models/item/eustorage/ceu.json | 38 ---- .../models/item/eustorage/ceu_1.json | 6 - .../models/item/eustorage/ceu_2.json | 6 - .../models/item/eustorage/ceu_3.json | 6 - .../models/item/eustorage/ceu_4.json | 6 - .../productionline/models/item/food/salt.json | 6 - .../item/ore/cleaned_crushed_iridium.json | 6 - .../models/item/ore/crushed_iridium.json | 6 - .../models/item/ore/dense_diamond_plate.json | 6 - .../models/item/ore/diamond_plate.json | 6 - .../models/item/ore/dust_iridium.json | 6 - .../models/item/ore/small_dust_iridium.json | 6 - .../models/item/packaged_salt.json | 6 - .../productionline/models/item/pad.json | 3 - .../models/item/record_musicspring.json | 6 - .../models/item/saltwater_bucket.json | 6 - .../models/item/tool/gravity_ray.json | 50 ---- .../item/tool/gravity_ray_pulling_0.json | 6 - .../item/tool/gravity_ray_pulling_1.json | 6 - .../item/tool/gravity_ray_pulling_2.json | 6 - .../item/tool/treetap/treetap_alloy.json | 6 - .../item/tool/treetap/treetap_bronze.json | 6 - .../item/tool/treetap/treetap_carbon.json | 6 - .../item/tool/treetap/treetap_iron.json | 6 - .../item/tool/treetap/treetap_lead.json | 6 - .../item/tool/treetap/treetap_steel.json | 6 - .../sounds/record_MusicSpring.ogg | Bin 243484 -> 0 bytes .../textures/blocks/adv_solar_side.png | Bin 18611 -> 0 bytes .../textures/blocks/adv_solar_top.png | Bin 18913 -> 0 bytes .../blocks/air_brake_casing_front.png | Bin 18551 -> 0 bytes .../textures/blocks/air_brake_casing_side.png | Bin 17509 -> 0 bytes .../textures/blocks/blockWaterHyacinth.png | Bin 3100 -> 0 bytes .../blocks/carbonize_furnace_front.png | Bin 21533 -> 0 bytes .../blocks/carbonize_furnace_front_active.png | Bin 21533 -> 0 bytes .../blocks/carbonize_furnace_left.png | Bin 21533 -> 0 bytes .../blocks/carbonize_furnace_left_active.png | Bin 21533 -> 0 bytes .../textures/blocks/carbonize_furnace_up.png | Bin 21533 -> 0 bytes .../blocks/carbonize_furnace_up_active.png | Bin 20635 -> 0 bytes .../blocks/compressed_water_hyacinth.png | Bin 3198 -> 0 bytes .../textures/blocks/cseu_back.png | Bin 18110 -> 0 bytes .../textures/blocks/cseu_front.png | Bin 18139 -> 0 bytes .../textures/blocks/cseu_side.png | Bin 18145 -> 0 bytes .../textures/blocks/cseu_top.png | Bin 18076 -> 0 bytes .../textures/blocks/cutter_front.png | Bin 3249 -> 0 bytes .../textures/blocks/cutter_front_active.png | Bin 3249 -> 0 bytes .../textures/blocks/cutter_top.png | Bin 3208 -> 0 bytes .../textures/blocks/cutter_top_active.png | Bin 3205 -> 0 bytes .../dehydrated_water_hyacinth_block.png | Bin 3103 -> 0 bytes .../textures/blocks/evsu_front.png | Bin 18372 -> 0 bytes .../textures/blocks/evsu_side.png | Bin 18418 -> 0 bytes .../textures/blocks/evsu_top.png | Bin 18571 -> 0 bytes .../blocks/fluid_kinetic_generator_back.png | Bin 18490 -> 0 bytes .../blocks/fluid_kinetic_generator_front.png | Bin 18649 -> 0 bytes .../blocks/fluid_kinetic_generator_side.png | Bin 18373 -> 0 bytes .../fluid_kinetic_generator_side_active.png | Bin 18609 -> 0 bytes .../textures/blocks/fluids/Bio Fuel_still.png | Bin 2930 -> 0 bytes .../blocks/fluids/Bio Fuel_still.png.mcmeta | 77 ------- .../blocks/fluids/Natural Gas_still.png | Bin 5441 -> 0 bytes .../fluids/Natural Gas_still.png.mcmeta | 45 ---- .../textures/blocks/heat_dryer_front.png | Bin 21091 -> 0 bytes .../blocks/heat_dryer_front_active.png | Bin 21091 -> 0 bytes .../textures/blocks/heat_dryer_side.png | Bin 21091 -> 0 bytes .../blocks/heat_dryer_side_active.png | Bin 21091 -> 0 bytes .../textures/blocks/heat_dryer_up.png | Bin 21091 -> 0 bytes .../textures/blocks/heat_dryer_up_active.png | Bin 21091 -> 0 bytes .../textures/blocks/optical_glass.png | Bin 15486 -> 0 bytes .../textures/blocks/packager_front.png | Bin 15986 -> 0 bytes .../textures/blocks/packager_front_active.png | Bin 16011 -> 0 bytes .../textures/blocks/packager_top.png | Bin 16098 -> 0 bytes .../blocks/parallel_space_su_back.png | Bin 18061 -> 0 bytes .../blocks/parallel_space_su_front.png | Bin 18126 -> 0 bytes .../blocks/parallel_space_su_side.png | Bin 17890 -> 0 bytes .../productionline/textures/entity/ray.png | Bin 2993 -> 0 bytes .../textures/fluid_kinetic_generator.json | 50 ---- .../textures/gui/GuiAdvSolar.png | Bin 4212 -> 0 bytes .../textures/gui/GuiCarbonizeFurnace.png | Bin 4457 -> 0 bytes .../textures/gui/GuiEUStorage.png | Bin 2138 -> 0 bytes .../textures/gui/GuiFluidKineticGenerator.png | Bin 5064 -> 0 bytes .../textures/gui/GuiHeatDryer.png | Bin 4366 -> 0 bytes .../textures/gui/GuiPackager.png | Bin 21746 -> 0 bytes .../textures/gui/GuiParallelSpaceSU.png | Bin 4872 -> 0 bytes .../item/crafting/adv_solar_lens_cluster.png | Bin 2990 -> 0 bytes .../item/crafting/adv_solar_lens_group.png | Bin 2922 -> 0 bytes .../item/crafting/adv_solar_lens_unit.png | Bin 2865 -> 0 bytes .../textures/item/crafting/air_brake_unit.png | Bin 3331 -> 0 bytes .../item/crafting/bamboo_charcoal.png | Bin 3266 -> 0 bytes .../item/crafting/calculate_array.png | Bin 2982 -> 0 bytes .../item/crafting/calculate_chunk.png | Bin 2896 -> 0 bytes .../textures/item/crafting/calculate_unit.png | Bin 2847 -> 0 bytes .../textures/item/crafting/carbon_crystal.png | Bin 2909 -> 0 bytes .../textures/item/crafting/carbon_tube.png | Bin 2904 -> 0 bytes .../cyclotron_particle_accelerator.png | Bin 3035 -> 0 bytes .../crafting/electronic_circuit_control.png | Bin 2906 -> 0 bytes .../item/crafting/electronic_circuit_core.png | Bin 3827 -> 0 bytes .../crafting/ender_calculation_crystal.png | Bin 2911 -> 0 bytes .../float_point_calculations_region.png | Bin 3022 -> 0 bytes .../crafting/heat_insulation_material.png | Bin 3047 -> 0 bytes .../item/crafting/heat_insulation_plate.png | Bin 3033 -> 0 bytes .../textures/item/crafting/lazuli_module.png | Bin 3034 -> 0 bytes .../textures/item/crafting/mill_teeth.png | Bin 2869 -> 0 bytes .../textures/item/crafting/mill_wheel.png | Bin 3212 -> 0 bytes .../crafting/obsidian_mechanical_casing.png | Bin 2931 -> 0 bytes .../crafting/obsidian_mechanical_frame.png | Bin 2956 -> 0 bytes .../crafting/obsidian_plate_gravity_field.png | Bin 2951 -> 0 bytes .../crafting/parallel_space_converter.png | Bin 2969 -> 0 bytes .../pulse_electronic_circuit_control.png | Bin 2976 -> 0 bytes .../pulse_electronic_circuit_core.png | Bin 2941 -> 0 bytes .../item/crafting/redstone_module.png | Bin 3571 -> 0 bytes .../textures/item/crafting/rigid_paper.png | Bin 2929 -> 0 bytes .../item/crafting/rigid_paper_pack.png | Bin 3113 -> 0 bytes .../textures/item/crafting/roller.png | Bin 3827 -> 0 bytes .../textures/item/crafting/rolling_pin.png | Bin 3101 -> 0 bytes .../small_compressed_water_hyacinth.png | Bin 3478 -> 0 bytes .../textures/item/crafting/uu_matter_core.png | Bin 2974 -> 0 bytes .../item/{food => }/diamond_apple.png | Bin .../textures/item/eustorage/ceu.png | Bin 3155 -> 0 bytes .../textures/item/eustorage/ceu_1.png | Bin 3163 -> 0 bytes .../textures/item/eustorage/ceu_2.png | Bin 3159 -> 0 bytes .../textures/item/eustorage/ceu_3.png | Bin 3155 -> 0 bytes .../textures/item/eustorage/ceu_4.png | Bin 3168 -> 0 bytes .../textures/item/food/salt.png | Bin 3827 -> 0 bytes .../item/ore/cleaned_crushed_iridium.png | Bin 838 -> 0 bytes .../textures/item/ore/crushed_iridium.png | Bin 3396 -> 0 bytes .../textures/item/ore/dense_diamond_plate.png | Bin 3048 -> 0 bytes .../textures/item/ore/diamond_plate.png | Bin 3015 -> 0 bytes .../textures/item/ore/dust_iridium.png | Bin 3055 -> 0 bytes .../textures/item/ore/small_dust_iridium.png | Bin 2877 -> 0 bytes .../textures/item/packaged_salt.png | Bin 3256 -> 0 bytes .../textures/item/record_musicspring.png | Bin 2932 -> 0 bytes .../textures/item/saltwater_bucket.png | Bin 2963 -> 0 bytes .../item/tool/gravity_ray_pulling_0.png | Bin 3120 -> 0 bytes .../item/tool/gravity_ray_pulling_1.png | Bin 3123 -> 0 bytes .../item/tool/gravity_ray_pulling_2.png | Bin 3141 -> 0 bytes .../item/tool/gravity_ray_standby.png | Bin 3119 -> 0 bytes .../textures/item/tool/itemIridiumAxe.png | Bin 3008 -> 0 bytes .../textures/item/tool/itemIridiumPickaxe.png | Bin 2949 -> 0 bytes .../textures/item/tool/itemIridiumSpade.png | Bin 3026 -> 0 bytes .../textures/item/tool/itemIridiumSword.png | Bin 3040 -> 0 bytes .../textures/item/tool/treetap/alloy.png | Bin 2916 -> 0 bytes .../textures/item/tool/treetap/bronze.png | Bin 2932 -> 0 bytes .../textures/item/tool/treetap/carbon.png | Bin 2936 -> 0 bytes .../textures/item/tool/treetap/iron.png | Bin 2916 -> 0 bytes .../textures/item/tool/treetap/lead.png | Bin 2927 -> 0 bytes .../textures/item/tool/treetap/steel.png | Bin 2960 -> 0 bytes src/main/resources/pack.mcmeta | 7 + 257 files changed, 15 insertions(+), 5246 deletions(-) delete mode 100644 src/main/java/com/mcgoodtime/productionline/blocks/BlockWaterHyacinth.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/blocks/generator/BlockFluidKineticGenerator.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/client/gui/GuiAdvSolar.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/client/gui/GuiCarbonizeFurnace.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/client/gui/GuiEUStorage.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/client/gui/GuiFluidKineticGenerator.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/client/gui/GuiHeatDryer.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/client/gui/GuiPackager.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/client/gui/GuiParallelSpaceSU.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/inventory/ContainerAdvSolar.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/inventory/ContainerCarbonizeFurnace.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/inventory/ContainerEUStorage.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/inventory/ContainerFluidKineticGenerator.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/inventory/ContainerHeatDryer.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/inventory/ContainerPackager.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/inventory/ContainerParallelSpaceSU.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/items/ItemBlockEUStorage.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/items/ItemCEU.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/items/ItemElectricPL.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/items/ItemPLFood.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/items/ItemPLRecord.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/items/ItemWaterHyacinth.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/items/tools/ItemGravityRay.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/items/tools/ItemPLTreetap.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/items/tools/PLToolMaterial.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/items/tools/ToolPL.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/network/message/MessageEUStorage.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/recipes/CarbonizeFurnaceRecipes.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/recipes/FluidKineticGeneratorRecipes.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/recipes/HeatDryerRecipes.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/recipes/PackagerRecipes.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/tiles/TileAdvSolar.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/tiles/TileCarbonizeFurnace.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/tiles/TileCutter.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/tiles/TileFluidKineticGenerator.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/tiles/TileHeatDryer.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/tiles/TileLiquidExtractor.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/tiles/TileMixer.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/tiles/TilePackager.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/tiles/eustorage/TileCSEU.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/tiles/eustorage/TileEUStorage.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/tiles/eustorage/TileEVSU.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/tiles/eustorage/TileParallelSpaceSU.java delete mode 100644 src/main/resources/assets/productionline/blockstates/adv_solar.json delete mode 100644 src/main/resources/assets/productionline/blockstates/air_brake_casing.json delete mode 100644 src/main/resources/assets/productionline/blockstates/carbonize_furnace.json delete mode 100644 src/main/resources/assets/productionline/blockstates/cseu.json delete mode 100644 src/main/resources/assets/productionline/blockstates/cutter.json delete mode 100644 src/main/resources/assets/productionline/blockstates/evsu.json delete mode 100644 src/main/resources/assets/productionline/blockstates/fluid_kinetic_generator.json delete mode 100644 src/main/resources/assets/productionline/blockstates/heat_dryer.json delete mode 100644 src/main/resources/assets/productionline/blockstates/packager.json delete mode 100644 src/main/resources/assets/productionline/blockstates/parallel_space_su.json rename src/main/resources/assets/productionline/lang/{en_US.lang => en_us.lang} (100%) rename src/main/resources/assets/productionline/lang/{zh_CN.lang => zh_cn.lang} (100%) delete mode 100644 src/main/resources/assets/productionline/models/block/dry_log.json delete mode 100644 src/main/resources/assets/productionline/models/block/pad.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/adv_solar_lens_cluster.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/adv_solar_lens_group.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/adv_solar_lens_unit.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/air_brake_unit.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/bamboo_charcoal.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/bio_fuel.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/calculate_array.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/calculate_chunk.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/calculate_unit.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/carbon_crystal.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/carbon_tube.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/coarse_batten.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/corrugated_paper.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/cyclotron_particle_accelerator.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/electronic_circuit_control.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/electronic_circuit_core.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/ender_calculation_crystal.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/faggot.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/firewood.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/float_point_calculations_region.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/heat_insulation_material.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/heat_insulation_plate.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/lazuli_module.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/mill_teeth.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/mill_wheel.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/obsidian_mechanical_casing.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/obsidian_mechanical_frame.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/obsidian_plate_gravity_field.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/paper_bag.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/parallel_space_converter.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/pulse_electronic_circuit_control.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/pulse_electronic_circuit_core.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/redstone_module.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/rigid_paper.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/rigid_paper_pack.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/roller.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/sawdust.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/small_compressed_water_hyacinth.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/tiles.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/uu_matter_core.json delete mode 100644 src/main/resources/assets/productionline/models/item/crafting/wood_pulp.json rename src/main/resources/assets/productionline/models/item/{food => }/diamond_apple.json (100%) delete mode 100644 src/main/resources/assets/productionline/models/item/dry_log.json delete mode 100644 src/main/resources/assets/productionline/models/item/eustorage/ceu.json delete mode 100644 src/main/resources/assets/productionline/models/item/eustorage/ceu_1.json delete mode 100644 src/main/resources/assets/productionline/models/item/eustorage/ceu_2.json delete mode 100644 src/main/resources/assets/productionline/models/item/eustorage/ceu_3.json delete mode 100644 src/main/resources/assets/productionline/models/item/eustorage/ceu_4.json delete mode 100644 src/main/resources/assets/productionline/models/item/food/salt.json delete mode 100644 src/main/resources/assets/productionline/models/item/ore/cleaned_crushed_iridium.json delete mode 100644 src/main/resources/assets/productionline/models/item/ore/crushed_iridium.json delete mode 100644 src/main/resources/assets/productionline/models/item/ore/dense_diamond_plate.json delete mode 100644 src/main/resources/assets/productionline/models/item/ore/diamond_plate.json delete mode 100644 src/main/resources/assets/productionline/models/item/ore/dust_iridium.json delete mode 100644 src/main/resources/assets/productionline/models/item/ore/small_dust_iridium.json delete mode 100644 src/main/resources/assets/productionline/models/item/packaged_salt.json delete mode 100644 src/main/resources/assets/productionline/models/item/pad.json delete mode 100644 src/main/resources/assets/productionline/models/item/record_musicspring.json delete mode 100644 src/main/resources/assets/productionline/models/item/saltwater_bucket.json delete mode 100644 src/main/resources/assets/productionline/models/item/tool/gravity_ray.json delete mode 100644 src/main/resources/assets/productionline/models/item/tool/gravity_ray_pulling_0.json delete mode 100644 src/main/resources/assets/productionline/models/item/tool/gravity_ray_pulling_1.json delete mode 100644 src/main/resources/assets/productionline/models/item/tool/gravity_ray_pulling_2.json delete mode 100644 src/main/resources/assets/productionline/models/item/tool/treetap/treetap_alloy.json delete mode 100644 src/main/resources/assets/productionline/models/item/tool/treetap/treetap_bronze.json delete mode 100644 src/main/resources/assets/productionline/models/item/tool/treetap/treetap_carbon.json delete mode 100644 src/main/resources/assets/productionline/models/item/tool/treetap/treetap_iron.json delete mode 100644 src/main/resources/assets/productionline/models/item/tool/treetap/treetap_lead.json delete mode 100644 src/main/resources/assets/productionline/models/item/tool/treetap/treetap_steel.json delete mode 100644 src/main/resources/assets/productionline/sounds/record_MusicSpring.ogg delete mode 100644 src/main/resources/assets/productionline/textures/blocks/adv_solar_side.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/adv_solar_top.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/air_brake_casing_front.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/air_brake_casing_side.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/blockWaterHyacinth.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/carbonize_furnace_front.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/carbonize_furnace_front_active.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/carbonize_furnace_left.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/carbonize_furnace_left_active.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/carbonize_furnace_up.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/carbonize_furnace_up_active.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/compressed_water_hyacinth.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/cseu_back.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/cseu_front.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/cseu_side.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/cseu_top.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/cutter_front.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/cutter_front_active.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/cutter_top.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/cutter_top_active.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/dehydrated_water_hyacinth_block.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/evsu_front.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/evsu_side.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/evsu_top.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/fluid_kinetic_generator_back.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/fluid_kinetic_generator_front.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/fluid_kinetic_generator_side.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/fluid_kinetic_generator_side_active.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/fluids/Bio Fuel_still.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/fluids/Bio Fuel_still.png.mcmeta delete mode 100644 src/main/resources/assets/productionline/textures/blocks/fluids/Natural Gas_still.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/fluids/Natural Gas_still.png.mcmeta delete mode 100644 src/main/resources/assets/productionline/textures/blocks/heat_dryer_front.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/heat_dryer_front_active.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/heat_dryer_side.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/heat_dryer_side_active.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/heat_dryer_up.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/heat_dryer_up_active.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/optical_glass.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/packager_front.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/packager_front_active.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/packager_top.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/parallel_space_su_back.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/parallel_space_su_front.png delete mode 100644 src/main/resources/assets/productionline/textures/blocks/parallel_space_su_side.png delete mode 100644 src/main/resources/assets/productionline/textures/entity/ray.png delete mode 100644 src/main/resources/assets/productionline/textures/fluid_kinetic_generator.json delete mode 100644 src/main/resources/assets/productionline/textures/gui/GuiAdvSolar.png delete mode 100644 src/main/resources/assets/productionline/textures/gui/GuiCarbonizeFurnace.png delete mode 100644 src/main/resources/assets/productionline/textures/gui/GuiEUStorage.png delete mode 100644 src/main/resources/assets/productionline/textures/gui/GuiFluidKineticGenerator.png delete mode 100644 src/main/resources/assets/productionline/textures/gui/GuiHeatDryer.png delete mode 100644 src/main/resources/assets/productionline/textures/gui/GuiPackager.png delete mode 100644 src/main/resources/assets/productionline/textures/gui/GuiParallelSpaceSU.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/adv_solar_lens_cluster.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/adv_solar_lens_group.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/adv_solar_lens_unit.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/air_brake_unit.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/bamboo_charcoal.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/calculate_array.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/calculate_chunk.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/calculate_unit.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/carbon_crystal.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/carbon_tube.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/cyclotron_particle_accelerator.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/electronic_circuit_control.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/electronic_circuit_core.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/ender_calculation_crystal.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/float_point_calculations_region.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/heat_insulation_material.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/heat_insulation_plate.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/lazuli_module.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/mill_teeth.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/mill_wheel.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/obsidian_mechanical_casing.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/obsidian_mechanical_frame.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/obsidian_plate_gravity_field.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/parallel_space_converter.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/pulse_electronic_circuit_control.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/pulse_electronic_circuit_core.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/redstone_module.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/rigid_paper.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/rigid_paper_pack.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/roller.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/rolling_pin.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/small_compressed_water_hyacinth.png delete mode 100644 src/main/resources/assets/productionline/textures/item/crafting/uu_matter_core.png rename src/main/resources/assets/productionline/textures/item/{food => }/diamond_apple.png (100%) delete mode 100644 src/main/resources/assets/productionline/textures/item/eustorage/ceu.png delete mode 100644 src/main/resources/assets/productionline/textures/item/eustorage/ceu_1.png delete mode 100644 src/main/resources/assets/productionline/textures/item/eustorage/ceu_2.png delete mode 100644 src/main/resources/assets/productionline/textures/item/eustorage/ceu_3.png delete mode 100644 src/main/resources/assets/productionline/textures/item/eustorage/ceu_4.png delete mode 100644 src/main/resources/assets/productionline/textures/item/food/salt.png delete mode 100644 src/main/resources/assets/productionline/textures/item/ore/cleaned_crushed_iridium.png delete mode 100644 src/main/resources/assets/productionline/textures/item/ore/crushed_iridium.png delete mode 100644 src/main/resources/assets/productionline/textures/item/ore/dense_diamond_plate.png delete mode 100644 src/main/resources/assets/productionline/textures/item/ore/diamond_plate.png delete mode 100644 src/main/resources/assets/productionline/textures/item/ore/dust_iridium.png delete mode 100644 src/main/resources/assets/productionline/textures/item/ore/small_dust_iridium.png delete mode 100644 src/main/resources/assets/productionline/textures/item/packaged_salt.png delete mode 100644 src/main/resources/assets/productionline/textures/item/record_musicspring.png delete mode 100644 src/main/resources/assets/productionline/textures/item/saltwater_bucket.png delete mode 100644 src/main/resources/assets/productionline/textures/item/tool/gravity_ray_pulling_0.png delete mode 100644 src/main/resources/assets/productionline/textures/item/tool/gravity_ray_pulling_1.png delete mode 100644 src/main/resources/assets/productionline/textures/item/tool/gravity_ray_pulling_2.png delete mode 100644 src/main/resources/assets/productionline/textures/item/tool/gravity_ray_standby.png delete mode 100644 src/main/resources/assets/productionline/textures/item/tool/itemIridiumAxe.png delete mode 100644 src/main/resources/assets/productionline/textures/item/tool/itemIridiumPickaxe.png delete mode 100644 src/main/resources/assets/productionline/textures/item/tool/itemIridiumSpade.png delete mode 100644 src/main/resources/assets/productionline/textures/item/tool/itemIridiumSword.png delete mode 100644 src/main/resources/assets/productionline/textures/item/tool/treetap/alloy.png delete mode 100644 src/main/resources/assets/productionline/textures/item/tool/treetap/bronze.png delete mode 100644 src/main/resources/assets/productionline/textures/item/tool/treetap/carbon.png delete mode 100644 src/main/resources/assets/productionline/textures/item/tool/treetap/iron.png delete mode 100644 src/main/resources/assets/productionline/textures/item/tool/treetap/lead.png delete mode 100644 src/main/resources/assets/productionline/textures/item/tool/treetap/steel.png create mode 100644 src/main/resources/pack.mcmeta diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/BlockMachine.java b/src/main/java/com/mcgoodtime/productionline/blocks/BlockMachine.java index 9c9fbc3..12ac8a2 100644 --- a/src/main/java/com/mcgoodtime/productionline/blocks/BlockMachine.java +++ b/src/main/java/com/mcgoodtime/productionline/blocks/BlockMachine.java @@ -7,10 +7,6 @@ import com.mcgoodtime.productionline.init.PLBlocks; import com.mcgoodtime.productionline.items.ItemBlockPL; import com.mcgoodtime.productionline.tiles.*; -import com.mcgoodtime.productionline.tiles.eustorage.TileCSEU; -import com.mcgoodtime.productionline.tiles.eustorage.TileEUStorage; -import com.mcgoodtime.productionline.tiles.eustorage.TileEVSU; -import com.mcgoodtime.productionline.tiles.eustorage.TileParallelSpaceSU; import ic2.api.item.IC2Items; import net.minecraft.block.material.Material; import net.minecraft.block.properties.PropertyBool; @@ -48,20 +44,7 @@ public class BlockMachine extends BlockContainerPL implements IOrientableBlock, public static final PropertyEnum PROPERTY_TYPE = PropertyEnum.create("type", Type.class); public static final PropertyBool PROPERTY_ACTIVE = PropertyBool.create("active"); - public enum Type implements IStringSerializable, IBlockType { - CARBONIZE_FURNACE("carbonize_furnace", TileCarbonizeFurnace.class, GuiHandler.EnumGui.CarbonizeFurnace), - HEAT_DRYER("heat_dryer", TileHeatDryer.class, GuiHandler.EnumGui.HeatDryer), - EVSU("evsu",TileEVSU.class, GuiHandler.EnumGui.EVSU), - CSEU("cseu",TileCSEU.class, GuiHandler.EnumGui.CSEU), - PARALLEL_SPACE_SU("parallel_space_su",TileParallelSpaceSU.class, GuiHandler.EnumGui.ParallelSpaceSU), - ADV_SOLAR("adv_solar", TileAdvSolar.class, GuiHandler.EnumGui.AdvSolar), - FLUID_KINETIC_GENERATOR("fluid_kinetic_generator", TileFluidKineticGenerator.class, GuiHandler.EnumGui.FluidKineticGenerator), - PACKAGER("packager", TilePackager.class, GuiHandler.EnumGui.PACKAGER); -// CUTTER("cutter", TileCutter.class, GuiHandler.EnumGui.Cutter), -// LIQUIDEXTRACTOR("liquid_extractor", TileLiquidExtractor.class, GuiHandler.EnumGui.LiquidExtractor), -// Mixer("mixer", TileMixer.class, GuiHandler.EnumGui.Mixer); - - + public enum Type implements IStringSerializable, IBlockType {; private final String name; public final Class tileClass; @@ -93,15 +76,6 @@ public BlockMachine() { for (Type t : Type.values()) { GameRegistry.registerTileEntity(t.tileClass, t.getName()); } - - PLBlocks.carbonizeFurnace = new ItemStack(this); - PLBlocks.heatDryer = new ItemStack(this, 1, 1); - PLBlocks.evsu = new ItemStack(this, 1, 2); - PLBlocks.cseu = new ItemStack(this, 1, 3); - PLBlocks.parallelSpaceSU = new ItemStack(this, 1, 4); - PLBlocks.advSolar = new ItemStack(this, 1, 5); - PLBlocks.fluidKineticGenerator = new ItemStack(this, 1, 6); - PLBlocks.packager = new ItemStack(this, 1, 7); } @Override @@ -112,26 +86,7 @@ public ModelResourceLocation getModelResourceLocation(int meta) { @Override public void randomDisplayTick(IBlockState stateIn, World worldIn, BlockPos pos, Random rand) { - TileEntity te = worldIn.getTileEntity(pos); - if (te instanceof TileCarbonizeFurnace) { - if (((TileCarbonizeFurnace) te).active) { - float xmod; - float ymod; - float zmod; - - float x = (float)pos.getX() + 1.0F; - float y = (float)pos.getY() + 1.0F; - float z = (float)pos.getZ() + 1.0F; - - for(int i = 0; i < 4; ++i) { - xmod = -0.2F - rand.nextFloat() * 0.6F; - ymod = -0.1F + rand.nextFloat() * 0.2F; - zmod = -0.2F - rand.nextFloat() * 0.6F; - worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, (double)(x + xmod), (double)(y + ymod), - (double)(z + zmod), 0.0D, 0.0D, 0.0D); - } - } - } + } @Nonnull @@ -180,18 +135,8 @@ public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, Entity TileFacing tile = (TileFacing) world.getTileEntity(pos); if (tile != null) { - if (tile instanceof TileEUStorage) { - tile.setFacing(PLUtil.getFacingFromEntity(pos, placer)); - } - else { - tile.setFacing(placer.getHorizontalFacing().getOpposite()); - } - + tile.setFacing(placer.getHorizontalFacing().getOpposite()); } - -// TileEUStorage tile = (TileEUStorage) world.getTileEntity(pos); -// NBTTagCompound nbt = StackUtil.getOrCreateNbtData(stack); -// tile.energy = nbt.getDouble("energy"); } /** diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/BlockMisc.java b/src/main/java/com/mcgoodtime/productionline/blocks/BlockMisc.java index 40de73a..d61787a 100644 --- a/src/main/java/com/mcgoodtime/productionline/blocks/BlockMisc.java +++ b/src/main/java/com/mcgoodtime/productionline/blocks/BlockMisc.java @@ -54,10 +54,8 @@ public class BlockMisc extends BlockPL implements IMultiIDBlock PROPERTY_TYPE = PropertyEnum.create("type", Type.class); - public enum Type implements IStringSerializable, IBlockType { - COMPRESSED_WATER_HYACINTH("compressed_water_hyacinth"), - DEHYDRATED_WATER_HYACINTH_BLOCK("dehydrated_water_hyacinth_block"), - OPTICAL_GLASS("optical_glass"); + public enum Type implements IStringSerializable, IBlockType {; + //COMPRESSED_WATER_HYACINTH("compressed_water_hyacinth"); private final String name; @@ -80,9 +78,6 @@ public String getTypeName() { public BlockMisc() { super(Material.ROCK, "block_misc"); this.setHardness(1.0F); - PLBlocks.compressedWaterHyacinth = new ItemStack(this, 1, 0); - PLBlocks.dehydratedWaterHyacinthblock = new ItemStack(this, 1, 1); - PLBlocks.opticalGlass = new ItemStack(this, 1, 2); } @Override diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/BlockWaterHyacinth.java b/src/main/java/com/mcgoodtime/productionline/blocks/BlockWaterHyacinth.java deleted file mode 100644 index 3133f25..0000000 --- a/src/main/java/com/mcgoodtime/productionline/blocks/BlockWaterHyacinth.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * This file is part of GoodTime-Industrial, licensed under MIT License (MIT). - * - * Copyright (c) 2015 GoodTime Studio - * Copyright (c) contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package com.mcgoodtime.productionline.blocks; - -import net.minecraft.block.BlockBush; -import net.minecraft.block.BlockLiquid; -import net.minecraft.block.SoundType; -import net.minecraft.block.material.Material; -import net.minecraft.block.state.IBlockState; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.EntityBoat; -import net.minecraft.init.Blocks; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import java.util.List; -import java.util.Random; - -import static com.mcgoodtime.productionline.core.ProductionLine.*; - -/** - * Yeah the water hyacinth block... For fun. - * - * @author liach - */ -public class BlockWaterHyacinth extends BlockBush { - - private final AxisAlignedBB box = new AxisAlignedBB(0.0625D, 0.0D, 0.0625D, 0.9375D, 0.09375D, 0.9375D); - - public BlockWaterHyacinth() { - super(Material.PLANTS); - this.setUnlocalizedName("productionline.block.WaterHyacinth"); - this.setCreativeTab(creativeTabPL); - //this.setBlockTextureName(ProductionLine.RESOURCE_DOMAIN + ":" + "BlockWaterHyacinth"); - this.setHardness(0.0F); - this.setResistance(0.0F); - this.setSoundType(SoundType.PLANT); - this.setTickRandomly(true); - } - - @Override - public void randomTick(@Nonnull World world, @Nonnull BlockPos pos, @Nonnull IBlockState state, @Nonnull Random rand) { - int changedX = rand.nextInt(5) - 3 + pos.getX(); - int changedZ = rand.nextInt(5) - 3 + pos.getZ(); - BlockPos check = new BlockPos(changedX, pos.getY(), changedZ); - if ((world.isAirBlock(check)) && (this.canSustainBush(world.getBlockState(check.down())))) { - world.setBlockState(pos, getDefaultState()); - } - } - - public boolean canBlockStay(World worldIn, BlockPos pos, IBlockState state) { - if (pos.getY() >= 0 && pos.getY() < 256) { - IBlockState iblockstate = worldIn.getBlockState(pos.down()); - Material material = iblockstate.getMaterial(); - return material == Material.WATER && iblockstate.getValue(BlockLiquid.LEVEL) == 0 || material == Material.ICE; - } else { - return false; - } - } - - @Override - protected boolean canSustainBush(IBlockState state) { - return state.getBlock() == Blocks.WATER || state.getMaterial() == Material.ICE; - } - - @Override - public void addCollisionBoxToList(IBlockState state, World worldIn, BlockPos pos, AxisAlignedBB entityBox, List collidingBoxes, @Nullable Entity entityIn, boolean isActualState) { - if (!(entityIn instanceof EntityBoat)) { - addCollisionBoxToList(pos, entityBox, collidingBoxes, box); - } - } - - /** - * Called When an Entity Collided with the Block - */ - @Override - public void onEntityCollidedWithBlock(World worldIn, BlockPos pos, IBlockState state, Entity entityIn) { - super.onEntityCollidedWithBlock(worldIn, pos, state, entityIn); - - if (entityIn instanceof EntityBoat) { - worldIn.destroyBlock(new BlockPos(pos), true); - } - } - - @Nonnull - @Override - public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) { - return box; - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/generator/BlockFluidKineticGenerator.java b/src/main/java/com/mcgoodtime/productionline/blocks/generator/BlockFluidKineticGenerator.java deleted file mode 100644 index ed8be96..0000000 --- a/src/main/java/com/mcgoodtime/productionline/blocks/generator/BlockFluidKineticGenerator.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * This file is part of GoodTime-Industrial, licensed under MIT License (MIT). - * - * Copyright (c) 2015 GoodTime Studio - * Copyright (c) contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -package com.mcgoodtime.productionline.blocks.generator; - -import com.mcgoodtime.productionline.blocks.BlockContainerPL; -import com.mcgoodtime.productionline.core.ProductionLine; -import com.mcgoodtime.productionline.core.GuiHandler; -import com.mcgoodtime.productionline.tiles.TileFluidKineticGenerator; -import com.mcgoodtime.productionline.tiles.TileFacing; -import net.minecraft.block.material.Material; -import net.minecraft.block.state.IBlockState; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumFacing; -import net.minecraft.util.EnumHand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -import javax.annotation.Nullable; - -public class BlockFluidKineticGenerator extends BlockContainerPL { - - public BlockFluidKineticGenerator() { - super(Material.IRON, "fluid_kinetic_generator"); - } - - @Override - public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { - if (!worldIn.isRemote) { - playerIn.openGui(ProductionLine.getInstance(), GuiHandler.EnumGui.FluidKineticGenerator.ordinal(), worldIn, pos.getX(), pos.getY(), pos.getZ()); - } - return true; - } - - @Override - protected Class getTileEntityClass(IBlockState state) { - return TileFluidKineticGenerator.class; - } -} \ No newline at end of file diff --git a/src/main/java/com/mcgoodtime/productionline/client/PLModelRegistry.java b/src/main/java/com/mcgoodtime/productionline/client/PLModelRegistry.java index 56bf9e4..594ce13 100644 --- a/src/main/java/com/mcgoodtime/productionline/client/PLModelRegistry.java +++ b/src/main/java/com/mcgoodtime/productionline/client/PLModelRegistry.java @@ -49,34 +49,13 @@ public class PLModelRegistry { public static void loadBlockModels() { registerBlockModel(PLBlocks.oreIridium); - registerBlockModel(PLBlocks.airBrakeCasing); - registerBlockModel(PLBlocks.compressedWaterHyacinth); - registerBlockModel(PLBlocks.dehydratedWaterHyacinthblock); ModelLoader.setCustomStateMapper(PLBlocks.machine, new StateMap.Builder().withName(BlockMachine.PROPERTY_TYPE).build()); - registerBlockModel(PLBlocks.carbonizeFurnace); - registerBlockModel(PLBlocks.heatDryer); - registerBlockModel(PLBlocks.evsu); - registerBlockModel(PLBlocks.cseu); - registerBlockModel(PLBlocks.parallelSpaceSU); - registerBlockModel(PLBlocks.advSolar); - registerBlockModel(PLBlocks.fluidKineticGenerator); - registerBlockModel(PLBlocks.packager); } public static void loadItemModels() { registerItemModel(PLItems.diamondApple, 0); registerItemModel(PLItems.diamondApple, 1); - registerItemModel(PLItems.record_MusicSpring); - registerItemModel(PLItems.salt); - registerItemModel(PLItems.gravityRay); - registerItemModel(PLItems.packagedSalt); - registerItemModel(PLItems.saltWaterBucket); -// registerItemModel(PLItems.liquidExpBucket); -// registerItemModel(PLItems.enderPearlBucket); -// registerItemModel(PLItems.brineBucket); -// registerItemModel(PLItems.toadCoin); -// registerItemModel(PLItems.superTrashBag); if (PLItems.itemCrafting instanceof ItemMulti) { for (int i = 0; i < ((ItemMulti) PLItems.itemCrafting).getInternalNameSize(); i++) { diff --git a/src/main/java/com/mcgoodtime/productionline/client/gui/GuiAdvSolar.java b/src/main/java/com/mcgoodtime/productionline/client/gui/GuiAdvSolar.java deleted file mode 100644 index 7ed7a06..0000000 --- a/src/main/java/com/mcgoodtime/productionline/client/gui/GuiAdvSolar.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.mcgoodtime.productionline.client.gui; - -import com.mcgoodtime.productionline.core.ProductionLine; -import com.mcgoodtime.productionline.inventory.ContainerAdvSolar; -import net.minecraft.client.resources.I18n; -import net.minecraft.util.ResourceLocation; - -import java.util.Collections; - -/** - * Created by BestOwl on 2015.12.5.0005. - * - * @author BestOwl - */ -public class GuiAdvSolar extends GuiPL { - - public GuiAdvSolar(ContainerAdvSolar container) { - super(container); - } - - @Override - protected ResourceLocation getResource() { - return new ResourceLocation(ProductionLine.RESOURCE_DOMAIN, "textures/gui/GuiAdvSolar.png"); - } - - @Override - protected void drawGuiContainerForegroundLayer(int x, int y) { - super.drawGuiContainerForegroundLayer(x, y); - - if (!this.container.tile.hasLens) { - String tooltip = I18n.format(ProductionLine.GUI_PREFIX + "AdvSolar.lens"); - drawTooltip(x - this.guiLeft, y - this.guiTop, Collections.singletonList(tooltip)); - } - } - - @Override - protected void drawGuiContainerBackgroundLayer(float f, int x, int y) { - super.drawGuiContainerBackgroundLayer(f, x, y); - - if (this.container.tile.underSun && this.container.tile.hasLens) { - this.drawTexturedModalRect(this.x + 81, this.y + 45, 176, 0, 14, 14); - } - - if (!this.container.tile.hasLens) { - this.mc.renderEngine.bindTexture(new ResourceLocation(ProductionLine.RESOURCE_DOMAIN, "textures/gui/misc.png")); - this.drawTexturedModalRect(this.x + 3, this.y + 3 + 10, 0, 246, 10, 10); - } - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/client/gui/GuiCarbonizeFurnace.java b/src/main/java/com/mcgoodtime/productionline/client/gui/GuiCarbonizeFurnace.java deleted file mode 100644 index cc55157..0000000 --- a/src/main/java/com/mcgoodtime/productionline/client/gui/GuiCarbonizeFurnace.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of GoodTime-Industrial, licensed under MIT License (MIT). - * - * Copyright (c) 2015 GoodTime Studio - * Copyright (c) contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package com.mcgoodtime.productionline.client.gui; - -import com.mcgoodtime.productionline.PLUtil; -import com.mcgoodtime.productionline.core.ProductionLine; -import com.mcgoodtime.productionline.inventory.ContainerCarbonizeFurnace; -import com.mcgoodtime.productionline.tiles.TileCarbonizeFurnace; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; -import net.minecraft.util.ResourceLocation; - -@SideOnly(Side.CLIENT) -public class GuiCarbonizeFurnace extends GuiPL { - - public GuiCarbonizeFurnace(ContainerCarbonizeFurnace container) { - super(container); - } - - @Override - protected void drawGuiContainerBackgroundLayer(float f, int x, int y) { - super.drawGuiContainerBackgroundLayer(f, x, y); - TileCarbonizeFurnace tile = this.container.getTileEntity(); - int i1 = PLUtil.getGuiScaled(14, (float) tile.energy, tile.maxEnergy); - this.drawTexturedModalRect(this.x + 56, this.y + 36 + 14 - i1, 176, 14 - i1, 14, i1 + 1); - i1 = PLUtil.getGuiScaled(24, tile.progress, (float) tile.requireEnergy); - this.drawTexturedModalRect(this.x + 79, this.y + 34, 176, 14, i1 + 1, 16); - } - - @Override - protected ResourceLocation getResource() { - return new ResourceLocation(ProductionLine.RESOURCE_DOMAIN, "textures/gui/GuiCarbonizeFurnace.png"); - } -} \ No newline at end of file diff --git a/src/main/java/com/mcgoodtime/productionline/client/gui/GuiEUStorage.java b/src/main/java/com/mcgoodtime/productionline/client/gui/GuiEUStorage.java deleted file mode 100644 index de3308a..0000000 --- a/src/main/java/com/mcgoodtime/productionline/client/gui/GuiEUStorage.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.mcgoodtime.productionline.client.gui; - -import com.mcgoodtime.productionline.PLUtil; -import com.mcgoodtime.productionline.inventory.ContainerEUStorage; -import com.mcgoodtime.productionline.network.PLNetwork; -import com.mcgoodtime.productionline.tiles.eustorage.TileEUStorage; -import net.minecraft.client.gui.GuiButton; -import net.minecraft.init.Items; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; - -import java.io.IOException; -import java.util.Collections; - -import static com.mcgoodtime.productionline.core.ProductionLine.*; -import static net.minecraft.client.resources.I18n.*; - -/** - * Created by BestOwl on 2015.11.28.0028. - * - * @author BestOwl - */ -public class GuiEUStorage extends GuiPL { - - public GuiEUStorage(ContainerEUStorage container) { - super(container); - this.ySize = 196; - } - - /** - * Adds the buttons (and other controls) to the screen in question. - */ - @SuppressWarnings("unchecked") - @Override - public void initGui() { - super.initGui(); - /*this.buttonList.add(new GuiIconButton(0, (this.width - this.xSize) / 2 + - 152, (this.height - this.ySize) / 2 + 4, 20, 20, new ItemStack(Items.REDSTONE), true));*/ - } - - @Override - protected void drawGuiContainerForegroundLayer(int x, int y) { - super.drawGuiContainerForegroundLayer(x, y); - this.fontRenderer.drawString(format("ic2.EUStorage.gui.info.armor"), 8, this.ySize - 126 + 3, 4210752); - this.fontRenderer.drawString(format("ic2.EUStorage.gui.info.level"), 79, 25, 4210752); - this.fontRenderer.drawString(" " + ((int) ((TileEUStorage) this.container.tile).energy), 110, 35, 4210752); - this.fontRenderer.drawString("/" + ((TileEUStorage) this.container.tile).maxEnergy, 110, 45, 4210752); - this.fontRenderer.drawString(format("ic2.EUStorage.gui.info.output", - ((TileEUStorage) this.container.tile).energyTick), 85, 60, 4210752); - drawTooltip(x - this.guiLeft, y - this.guiTop, Collections.singletonList(format("ic2.EUStorage.gui.mod.redstone" - + ((TileEUStorage) this.container.tile).redstoneMode.ordinal()))); - - } - - @Override - protected void drawGuiContainerBackgroundLayer(float f, int x, int y) { - super.drawGuiContainerBackgroundLayer(f, x, y); - if (((TileEUStorage) this.container.tile).energy > 0.0D) { - int i = PLUtil.getGuiScaled(24, (float) ((TileEUStorage) this.container.tile).energy, ((TileEUStorage) this.container.tile).maxEnergy); - this.drawTexturedModalRect(this.x + 79, this.y + 34, 176, 14, i + 1, 16); - } - } - - @Override - protected ResourceLocation getResource() { - return new ResourceLocation(RESOURCE_DOMAIN, "textures/gui/GuiEUStorage.png"); - } - - @Override - protected void actionPerformed(GuiButton button) throws IOException { - super.actionPerformed(button); - if (button.id == 0) { - PLNetwork.updateTileEUStorage((TileEUStorage) this.container.tile); - } - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/client/gui/GuiFluidKineticGenerator.java b/src/main/java/com/mcgoodtime/productionline/client/gui/GuiFluidKineticGenerator.java deleted file mode 100644 index a3e3ead..0000000 --- a/src/main/java/com/mcgoodtime/productionline/client/gui/GuiFluidKineticGenerator.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * This file is part of GoodTime-Industrial, licensed under MIT License (MIT). - * - * Copyright (c) 2015 GoodTime Studio - * Copyright (c) contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package com.mcgoodtime.productionline.client.gui; - -import com.mcgoodtime.productionline.PLUtil; -import com.mcgoodtime.productionline.core.ProductionLine; -import com.mcgoodtime.productionline.inventory.ContainerFluidKineticGenerator; -import com.mcgoodtime.productionline.tiles.TileFluidKineticGenerator; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.renderer.texture.TextureMap; -import net.minecraft.client.resources.I18n; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; - -import java.util.Collections; - -import static com.mcgoodtime.productionline.core.ProductionLine.*; - -/** - * The Gui. - * - * @author liach - * improve by BestOwl - */ -@SideOnly(Side.CLIENT) -public class GuiFluidKineticGenerator extends GuiPL { - - public GuiFluidKineticGenerator(ContainerFluidKineticGenerator container) { - super(container); - } - - @Override - protected void drawGuiContainerBackgroundLayer(float f, int x, int y) { - super.drawGuiContainerBackgroundLayer(f, x, y); - TileFluidKineticGenerator tile = this.container.getTileEntity(); - - if (tile.active) { - this.mc.renderEngine.bindTexture(this.getResource()); - this.drawTexturedModalRect(this.x + 51, this.y + 55, 176, 0, 14, 14); - } - - if (tile.fluidTank.getFluidAmount() > 0) { - ResourceLocation fluidIconIdent = this.container.tile.fluidTank.getFluid().getFluid().getStill(); - TextureAtlasSprite icon = Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite(fluidIconIdent.toString()); - if (icon != null) { - this.mc.renderEngine.bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE); - int fy = PLUtil.getGuiScaled(47, tile.fluidTank.getFluidAmount(), tile.fluidTank.getCapacity()); - this.drawTexturedModalRect(this.x + 74, this.y + 24 + 47 - fy, icon, 12, fy); - this.mc.renderEngine.bindTexture(this.getResource()); - this.drawTexturedModalRect(this.x + 74, this.y + 24, 176, 72, 12, 47); - } - } - } - - @Override - protected void drawGuiContainerForegroundLayer(int x, int y) { - super.drawGuiContainerForegroundLayer(x, y); - if (this.container.tile.fluidTank.getFluidAmount() > 0) { - String tooltip = this.container.tile.fluidTank.getFluid().getLocalizedName() + ": " + this.container.tile.fluidTank.getFluidAmount() + "mB"; - drawTooltip(x - this.guiLeft, y - this.guiTop, Collections.singletonList(tooltip)); - } - - String output = I18n.format(GUI_PREFIX + "FluidKineticGenerator.output", - this.container.getTileEntity().maxrequestkineticenergyTick( - this.container.getTileEntity().facing)); - this.drawString(this.fontRenderer, output, 96, 33, 2157374); - - String max_output = I18n.format(GUI_PREFIX + "FluidKineticGenerator.max-output", - this.container.getTileEntity().kuOutput); - this.drawString(this.fontRenderer, max_output, 96, 52, 2157374); - } - - @Override - protected ResourceLocation getResource() { - return new ResourceLocation(ProductionLine.RESOURCE_DOMAIN, "textures/gui/GuiFluidKineticGenerator.png"); - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/client/gui/GuiHeatDryer.java b/src/main/java/com/mcgoodtime/productionline/client/gui/GuiHeatDryer.java deleted file mode 100644 index 3dcc24b..0000000 --- a/src/main/java/com/mcgoodtime/productionline/client/gui/GuiHeatDryer.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * This file is part of GoodTime-Industrial, licensed under MIT License (MIT). - * - * Copyright (c) 2015 GoodTime Studio - * Copyright (c) contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package com.mcgoodtime.productionline.client.gui; - -import com.mcgoodtime.productionline.PLUtil; - import com.mcgoodtime.productionline.core.ProductionLine; - import com.mcgoodtime.productionline.inventory.ContainerHeatDryer; - import com.mcgoodtime.productionline.tiles.TileHeatDryer; -import net.minecraft.util.ResourceLocation; -/* - * Created by suhao on 2015.7.10. - */ -public class GuiHeatDryer extends GuiPL { - - public GuiHeatDryer(ContainerHeatDryer container) { - super(container); - } - - @Override - protected void drawGuiContainerBackgroundLayer(float f, int x, int y) { - super.drawGuiContainerBackgroundLayer(f, x, y); - TileHeatDryer tile = this.container.getTileEntity(); - int i1 = PLUtil.getGuiScaled(14, (float) tile.energy, tile.maxEnergy); - this.drawTexturedModalRect(this.x + 56, this.y + 36 + 14 - i1, 176, 14 - i1, 14, i1 + 1); - i1 = PLUtil.getGuiScaled(24, tile.progress, (float) tile.requireEnergy); - this.drawTexturedModalRect(this.x + 79, this.y + 34, 176, 14, i1 + 1, 16); - } - - @Override - protected ResourceLocation getResource() { - return new ResourceLocation(ProductionLine.RESOURCE_DOMAIN, "textures/gui/GuiHeatDryer.png"); - } -} \ No newline at end of file diff --git a/src/main/java/com/mcgoodtime/productionline/client/gui/GuiPackager.java b/src/main/java/com/mcgoodtime/productionline/client/gui/GuiPackager.java deleted file mode 100644 index e09c176..0000000 --- a/src/main/java/com/mcgoodtime/productionline/client/gui/GuiPackager.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * - * This file is part of ProductionLine, licensed under MIT License (MIT). - * - * Copyright (c) 2017 GoodTime Studio - * Copyright (c) contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -package com.mcgoodtime.productionline.client.gui; - -import com.mcgoodtime.productionline.PLUtil; -import com.mcgoodtime.productionline.core.ProductionLine; -import com.mcgoodtime.productionline.inventory.ContainerPackager; -import com.mcgoodtime.productionline.tiles.TilePackager; -import net.minecraft.util.ResourceLocation; - -/** - * Created by BestOwl on 2017/3/26. - * - * @author BestOwl - */ -public class GuiPackager extends GuiPL { - - int i = 0; - - public GuiPackager(ContainerPackager container) { - super(container); - } - - @Override - protected void drawGuiContainerForegroundLayer(int x, int y) { - super.drawGuiContainerForegroundLayer(x, y); - } - - @Override - protected void drawGuiContainerBackgroundLayer(float f, int x, int y) { - super.drawGuiContainerBackgroundLayer(f, x, y); - TilePackager tile = this.container.tile; - - //energy bar - int i1 = PLUtil.getGuiScaled(14, (float) tile.energy, tile.maxEnergy); - this.drawTexturedModalRect(this.x + 56, this.y + 36 + 14 - i1, 176, 14 - i1, 14, i1 + 1); - - //progress bar - i1 = PLUtil.getGuiScaled(24, tile.progress, (float) tile.requireEnergy); - this.drawTexturedModalRect(this.x + 79, this.y + 40, 176, 15, i1 + 1, 4); - - if (tile.active) { - this.drawTexturedModalRect(this.x + 85, this.y + 45 + 12 - (i / 10), 176, 20 + 12 - (i / 10), 12, i / 10); - i++; - - if (i >= 120) { - i = 0; - } - } - } - - @Override - protected ResourceLocation getResource() { - return new ResourceLocation(ProductionLine.RESOURCE_DOMAIN, "textures/gui/GuiPackager.png"); - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/client/gui/GuiParallelSpaceSU.java b/src/main/java/com/mcgoodtime/productionline/client/gui/GuiParallelSpaceSU.java deleted file mode 100644 index e3a36d5..0000000 --- a/src/main/java/com/mcgoodtime/productionline/client/gui/GuiParallelSpaceSU.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.mcgoodtime.productionline.client.gui; - -import com.mcgoodtime.productionline.PLUtil; -import com.mcgoodtime.productionline.inventory.ContainerParallelSpaceSU; -import com.mcgoodtime.productionline.network.PLNetwork; -import net.minecraft.client.gui.GuiButton; -import net.minecraft.init.Items; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; - -import java.io.IOException; -import java.util.Collections; - -import static com.mcgoodtime.productionline.core.ProductionLine.*; -import static net.minecraft.client.resources.I18n.format; - -/** - * Created by BestOwl on 2015.11.29.0029. - * - * @author BestOwl - */ -public class GuiParallelSpaceSU extends GuiPL { - - public GuiParallelSpaceSU(ContainerParallelSpaceSU container) { - super(container); - } - - /** - * Adds the buttons (and other controls) to the screen in question. - */ - @SuppressWarnings("unchecked") - @Override - public void initGui() { - super.initGui(); - /* - this.buttonList.add(new GuiIconButton(0, (this.width - this.xSize) / 2 + - 152, (this.height - this.ySize) / 2 + 4, 20, 20, new ItemStack(Items.REDSTONE), true));*/ - } - - @Override - protected void drawGuiContainerForegroundLayer(int x, int y) { - super.drawGuiContainerForegroundLayer(x, y); - this.fontRenderer.drawString("§l" + format("ic2.EUStorage.gui.info.level"), 60, 25, 0x9A00FF); - drawTooltip(x - this.guiLeft, y - this.guiTop, Collections.singletonList("§l§5" + ((int) this.container.tile.energy) - + "/" + this.container.tile.maxEnergy)); - this.fontRenderer.drawString(format("ic2.EUStorage.gui.info.output", - this.container.tile.energyTick), 60, 51, 0x9A00FF); - drawTooltip(x - this.guiLeft, y - this.guiTop, Collections.singletonList(format("ic2.EUStorage.gui.mod.redstone" - + this.container.tile.redstoneMode.ordinal()))); - - } - - @Override - protected void drawGuiContainerBackgroundLayer(float f, int x, int y) { - super.drawGuiContainerBackgroundLayer(f, x, y); - if (this.container.tile.energy > 0.0D) { - int i = PLUtil.getGuiScaled(58, (float) this.container.tile.energy, this.container.tile.maxEnergy); - this.drawTexturedModalRect(this.x + 60, this.y + 34, 176, 15, i + 1, 13); - } - } - - @Override - protected ResourceLocation getResource() { - return new ResourceLocation(RESOURCE_DOMAIN, "textures/gui/GuiParallelSpaceSU.png"); - } - - @Override - protected void actionPerformed(GuiButton button) throws IOException { - super.actionPerformed(button); - if (button.id == 0) { - PLNetwork.updateTileEUStorage(this.container.tile); - } - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/core/GuiHandler.java b/src/main/java/com/mcgoodtime/productionline/core/GuiHandler.java index 9a11d90..1f608a5 100644 --- a/src/main/java/com/mcgoodtime/productionline/core/GuiHandler.java +++ b/src/main/java/com/mcgoodtime/productionline/core/GuiHandler.java @@ -25,18 +25,7 @@ package com.mcgoodtime.productionline.core; -//import com.mcgoodtime.productionline.client.gui.*; -//import com.mcgoodtime.productionline.inventory.*; -//import com.mcgoodtime.productionline.tiles.*; -//import com.mcgoodtime.productionline.tiles.eustorage.TileCSEU; -//import com.mcgoodtime.productionline.tiles.eustorage.TileEVSU; -//import com.mcgoodtime.productionline.tiles.eustorage.TileParallelSpaceSU; import com.mcgoodtime.productionline.client.gui.*; -import com.mcgoodtime.productionline.inventory.*; -import com.mcgoodtime.productionline.tiles.*; -import com.mcgoodtime.productionline.tiles.eustorage.TileCSEU; -import com.mcgoodtime.productionline.tiles.eustorage.TileEVSU; -import com.mcgoodtime.productionline.tiles.eustorage.TileParallelSpaceSU; import net.minecraft.util.math.BlockPos; import net.minecraftforge.fml.common.network.IGuiHandler; import net.minecraft.entity.player.EntityPlayer; @@ -68,14 +57,6 @@ public Object getServerGuiElement(int id, EntityPlayer player, World world, int EnumGui gui = EnumGui.values()[id]; BlockPos pos = new BlockPos(x, y, z); switch (gui) { - case FluidKineticGenerator: return new ContainerFluidKineticGenerator(player, (TileFluidKineticGenerator)world.getTileEntity(pos)); - case CarbonizeFurnace: return new ContainerCarbonizeFurnace(player, (TileCarbonizeFurnace)world.getTileEntity(pos)); - case EVSU: return new ContainerEUStorage<>(player, (TileEVSU)world.getTileEntity(pos)); - case HeatDryer: return new ContainerHeatDryer(player, (TileHeatDryer) world.getTileEntity(pos)); - case CSEU: return new ContainerEUStorage<>(player, (TileCSEU) world.getTileEntity(pos)); - case ParallelSpaceSU: return new ContainerParallelSpaceSU(player, (TileParallelSpaceSU) world.getTileEntity(pos)); - case AdvSolar: return new ContainerAdvSolar(player, (TileAdvSolar) world.getTileEntity(pos)); - case PACKAGER: return new ContainerPackager(player, ((TilePackager) world.getTileEntity(pos))); default: return null; } } @@ -86,35 +67,10 @@ public Object getClientGuiElement(int id, EntityPlayer player, World world, int EnumGui gui = EnumGui.values()[id]; BlockPos pos = new BlockPos(x, y, z); switch (gui) { - case FluidKineticGenerator: - return new GuiFluidKineticGenerator(new ContainerFluidKineticGenerator(player, (TileFluidKineticGenerator)world.getTileEntity(pos))); - case CarbonizeFurnace: - return new GuiCarbonizeFurnace(new ContainerCarbonizeFurnace(player, (TileCarbonizeFurnace)world.getTileEntity(pos))); - case EVSU: - return new GuiEUStorage(new ContainerEUStorage<>(player, (TileEVSU) world.getTileEntity(pos))); - case HeatDryer: return new GuiHeatDryer(new ContainerHeatDryer(player, (TileHeatDryer) world.getTileEntity(pos))); - case CSEU: return new GuiEUStorage(new ContainerEUStorage<>(player, (TileCSEU) world.getTileEntity(pos))); - case ParallelSpaceSU: - return new GuiParallelSpaceSU(new ContainerParallelSpaceSU(player, (TileParallelSpaceSU) world.getTileEntity(pos))); - case AdvSolar: - return new GuiAdvSolar(new ContainerAdvSolar(player, (TileAdvSolar) world.getTileEntity(pos))); - case PACKAGER: - return new GuiPackager(new ContainerPackager(player, ((TilePackager) world.getTileEntity(pos)))); default: return null; } } public enum EnumGui { - FluidKineticGenerator, - CarbonizeFurnace, - EVSU, - HeatDryer, - CSEU, - ParallelSpaceSU, - AdvSolar, - PACKAGER, - Cutter, - LiquidExtractor, - Mixer } } diff --git a/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java b/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java index be1373f..e841a72 100644 --- a/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java +++ b/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java @@ -83,7 +83,7 @@ public final class ProductionLine { @Override @Nonnull public ItemStack getTabIconItem() { - return new ItemStack(PLItems.gravityRay); + return new ItemStack(PLItems.diamondApple); } }; /** diff --git a/src/main/java/com/mcgoodtime/productionline/init/PLBlocks.java b/src/main/java/com/mcgoodtime/productionline/init/PLBlocks.java index f1ca919..d7fbc38 100644 --- a/src/main/java/com/mcgoodtime/productionline/init/PLBlocks.java +++ b/src/main/java/com/mcgoodtime/productionline/init/PLBlocks.java @@ -40,35 +40,13 @@ * @author liach */ public class PLBlocks { - public static ItemStack dehydratedWaterHyacinthblock; - public static ItemStack compressedWaterHyacinth; - public static ItemStack opticalGlass; - public static BlockPL machine; - public static ItemStack carbonizeFurnace; - public static ItemStack heatDryer; - public static ItemStack evsu; - public static ItemStack cseu; - public static ItemStack parallelSpaceSU; - public static ItemStack advSolar; - public static ItemStack fluidKineticGenerator; - public static ItemStack packager; public static BlockPL oreIridium; - public static BlockPL airBrakeCasing; - - - public static Block waterHyacinth; public static void init() { oreIridium = new BlockPL(Material.ROCK, "ore_iridium", 10, 20, "pickaxe", 3); - airBrakeCasing = new BlockOrientable(Material.IRON, "air_brake_casing"); new BlockMisc(); machine = new BlockMachine(); - - // special registry TODO: Better registry system - waterHyacinth = new BlockWaterHyacinth(); - waterHyacinth.setRegistryName(ProductionLine.loc("waterHyacinth")); - ForgeRegistries.BLOCKS.register(waterHyacinth); } } diff --git a/src/main/java/com/mcgoodtime/productionline/init/PLItems.java b/src/main/java/com/mcgoodtime/productionline/init/PLItems.java index 564b57b..3b4c2bf 100644 --- a/src/main/java/com/mcgoodtime/productionline/init/PLItems.java +++ b/src/main/java/com/mcgoodtime/productionline/init/PLItems.java @@ -24,169 +24,33 @@ */ package com.mcgoodtime.productionline.init; -import com.mcgoodtime.productionline.core.PLConfig; -import com.mcgoodtime.productionline.core.ProductionLine; -import com.mcgoodtime.productionline.entity.EntityThrownItem; import com.mcgoodtime.productionline.items.ItemCrafting; import com.mcgoodtime.productionline.items.ItemDiamondApple; import com.mcgoodtime.productionline.items.ItemOre; -import com.mcgoodtime.productionline.items.ItemPL; -import com.mcgoodtime.productionline.items.ItemPLFood; -import com.mcgoodtime.productionline.items.ItemPLRecord; -import com.mcgoodtime.productionline.items.tools.ItemGravityRay; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.init.SoundEvents; import net.minecraft.item.Item; -import net.minecraft.item.ItemBucket; import net.minecraft.item.ItemStack; -import net.minecraft.util.ActionResult; -import net.minecraft.util.EnumActionResult; -import net.minecraft.util.EnumHand; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.SoundCategory; -import net.minecraft.world.World; import net.minecraftforge.fml.common.IFuelHandler; -import net.minecraftforge.fml.common.registry.ForgeRegistries; import net.minecraftforge.fml.common.registry.GameRegistry; -import static com.mcgoodtime.productionline.core.ProductionLine.MOD_ID; - -//import coreom.mcgoodtime.productionline.common.entity.EntityThrownItem; -//import com.mcgoodtime.productionline.items.tools.ItemGravityRay; -//import com.mcgoodtime.productionline.items.tools.ItemPLTreetap; -//import com.mcgoodtime.productionline.items.tools.ToolPL; /** * The list of all those items in GoodTime-Industrial. */ -public class PLItems implements IFuelHandler { +public class PLItems { public static Item diamondApple; - public static Item packagedSalt; - public static Item iridiumSword; - public static Item salt; - public static Item saltWaterBucket; - public static Item hammer; - - - public static Item gravityRay; - - public static Item record_MusicSpring; public static Item itemCrafting; public static Item itemOre; - - //This is New Pans`s Item - public static Item liquidExpBucket; - public static Item enderPearlBucket; - public static Item brineBucket; - public static Item toadCoin; - public static Item superTrashBag; - - //-------------------------------------- - public static ItemStack dustIridium; public static ItemStack ingotIridium; - public static ItemStack yourHouseBombed; - public static ItemStack smallCompressedWaterHyacinth; - public static ItemStack redstoneModule; - public static ItemStack lazuliModule; - public static ItemStack advSolarLensUnit; - public static ItemStack advSolarLensGroup; - public static ItemStack advSolarLensCluster; - public static ItemStack opticalGlass; - public static ItemStack sawdust; - public static ItemStack rigidPaper; - - public static ItemStack heatInsulationMaterial; - public static ItemStack heatResistantBrick; - - //This is New Plans`s ItemStack - public static ItemStack enderPearlPowder; - public static ItemStack CPUmk1; - public static ItemStack CPUmk2; - public static ItemStack CPUmk3; - public static ItemStack fakeHead; - public static ItemStack lifeConverter; - public static ItemStack condensedImpurities; - public static ItemStack heartOfLava; - public static ItemStack heartOfPureWhite; - public static ItemStack heartOfEnder; - public static void init() { diamondApple = new ItemDiamondApple(); - - record_MusicSpring = new ItemPLRecord("record_musicspring", PLSounds.recordMusicSpring); - salt = new ItemPLFood("salt", 0, 10F, true); - gravityRay = new ItemGravityRay(); - //MultiMetaItem registry itemOre = new ItemOre(); itemCrafting = new ItemCrafting(); - - - // special registry TODO: Better registry system - - packagedSalt = new ItemPL("packaged_salt") { - @Override - public ActionResult onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn) { - ItemStack itemStack = playerIn.getHeldItem(handIn); - if (PLConfig.instance.throwablePackagedSalt) { - if (!playerIn.capabilities.isCreativeMode) { - itemStack.shrink(1); - } - worldIn.playSound(null, playerIn.posX, playerIn.posY, playerIn.posZ, SoundEvents.ENTITY_SNOWBALL_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); - if (!worldIn.isRemote) { - worldIn.spawnEntity(new EntityThrownItem(worldIn, playerIn, itemStack)); - } - } - return new ActionResult(EnumActionResult.SUCCESS, itemStack); - } - }; - - saltWaterBucket = new ItemBucket(Blocks.WATER); - saltWaterBucket.setCreativeTab(ProductionLine.creativeTabPL) - .setUnlocalizedName(MOD_ID + ".saltwater_bucket"); - saltWaterBucket.setRegistryName(MOD_ID, "saltwater_bucket"); - -// iridiumPickaxe = ToolPL.registerPickaxe(PLToolMaterial.iridium, "iridium_pickaxe"); -// iridiumAxe = ToolPL.registerAxe(PLToolMaterial.iridium, "iridium_axe"); -// iridiumSpade = ToolPL.registerSpade(PLToolMaterial.iridium, "iridium_spade"); -// iridiumSword = ToolPL.registerSword(PLToolMaterial.iridium, "iridium_sword"); - - // TODO: Better registry system - ForgeRegistries.ITEMS.register(saltWaterBucket); - GameRegistry.registerFuelHandler(new PLItems()); - } - - @Override - public int getBurnTime(ItemStack fuel) { - if (fuel.isItemEqual(sawdust)) { - return 50; - } - if (fuel.isItemEqual(smallCompressedWaterHyacinth)) { - return 400; - } - if (fuel.getItem().equals( - Item.getItemFromBlock(PLBlocks.waterHyacinth))) { - return 100; - } - if (fuel.isItemEqual(PLBlocks.compressedWaterHyacinth)) { - return 800; - } - if (fuel.isItemEqual(PLBlocks.dehydratedWaterHyacinthblock)) { - return 1000; - } - return 0; } - public static ItemStack getItems(ItemStack itemStack, int count) { - ItemStack ret = itemStack.copy(); - ret.setCount(count); - return ret; - } } diff --git a/src/main/java/com/mcgoodtime/productionline/init/PLRecipes.java b/src/main/java/com/mcgoodtime/productionline/init/PLRecipes.java index 8ee4afb..85dceb4 100644 --- a/src/main/java/com/mcgoodtime/productionline/init/PLRecipes.java +++ b/src/main/java/com/mcgoodtime/productionline/init/PLRecipes.java @@ -108,7 +108,6 @@ public static void init() { //smelting registry GameRegistry.addSmelting(PLBlocks.oreIridium, PLItems.ingotIridium, XP); - GameRegistry.addSmelting(PLItems.dustIridium, PLItems.ingotIridium, XP); GameRegistry.addSmelting(IC2Items.getItem("iridiumOre"), PLItems.ingotIridium, XP); //ic2 recipe registry diff --git a/src/main/java/com/mcgoodtime/productionline/inventory/ContainerAdvSolar.java b/src/main/java/com/mcgoodtime/productionline/inventory/ContainerAdvSolar.java deleted file mode 100644 index 0f10b5a..0000000 --- a/src/main/java/com/mcgoodtime/productionline/inventory/ContainerAdvSolar.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.mcgoodtime.productionline.inventory; - -import com.mcgoodtime.productionline.tiles.TileAdvSolar; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IContainerListener; -import net.minecraft.inventory.Slot; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; - -/** - * Created by BestOwl on 2015.12.5.0005. - * - * @author BestOwl - */ -public class ContainerAdvSolar extends ContainerPL { - - public boolean sunIsVisible; - public boolean hasLens; - - public ContainerAdvSolar(EntityPlayer player, TileAdvSolar tile) { - super(player, tile); - this.addSlotToContainer(new Slot(this.tile, 0, 61, 26)); - this.addSlotToContainer(new Slot(this.tile, 1, 99, 26)); - } - - @Override - public void addListener(IContainerListener listener) { - super.addListener(listener); - //listener.sendProgressBarUpdate(this, 0, this.sunIsVisible ? 1 : 0); - //listener.sendProgressBarUpdate(this, 1, this.hasLens ? 1 : 0); - } - - /** - * Looks for changes made in the container, sends them to every listener. - */ - @Override - public void detectAndSendChanges() { - super.detectAndSendChanges(); - - for (IContainerListener listener : this.listeners) { - if (this.sunIsVisible != this.tile.underSun) { - //listener.sendProgressBarUpdate(this, 0, this.tile.underSun ? 1 : 0); - } - if (this.hasLens != this.tile.hasLens) { - //listener.sendProgressBarUpdate(this, 1, this.tile.hasLens ? 1 : 0); - } - } - - this.sunIsVisible = this.tile.underSun; - this.hasLens = this.tile.hasLens; - } - - @Override - @SideOnly(Side.CLIENT) - public void updateProgressBar(int id, int var) { - super.updateProgressBar(id, var); - - switch (id) { - case 0: { - switch (var) { - case 1: - this.tile.underSun = true; - break; - case 0: - this.tile.underSun = false; - } - break; - } - case 1: { - switch (var) { - case 1: - this.tile.hasLens = true; - break; - case 0: - this.tile.hasLens = false; - } - break; - } - } - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/inventory/ContainerCarbonizeFurnace.java b/src/main/java/com/mcgoodtime/productionline/inventory/ContainerCarbonizeFurnace.java deleted file mode 100644 index 4ca5331..0000000 --- a/src/main/java/com/mcgoodtime/productionline/inventory/ContainerCarbonizeFurnace.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * This file is part of GoodTime-Industrial, licensed under MIT License (MIT). - * - * Copyright (c) 2015 GoodTime Studio - * Copyright (c) contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package com.mcgoodtime.productionline.inventory; - -import com.mcgoodtime.productionline.inventory.slot.SlotInput; -import com.mcgoodtime.productionline.inventory.slot.SlotOutput; -import com.mcgoodtime.productionline.inventory.slot.SlotUpgrade; -import com.mcgoodtime.productionline.tiles.TileCarbonizeFurnace; -import com.mcgoodtime.productionline.tiles.tileslots.TileSlotInput; -import net.minecraft.inventory.IContainerListener; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; -import ic2.core.slot.SlotDischarge; -import net.minecraft.entity.player.EntityPlayer; - -/* - * Created by suhao on 2015.7.4. - */ -public class ContainerCarbonizeFurnace extends ContainerPL { - - private int lastProgress; - private int lastRequireEnergy; - private double lastEnergy; - - public ContainerCarbonizeFurnace(EntityPlayer player, TileCarbonizeFurnace tile) { - super(player, tile); - this.addSlotToContainer(new SlotInput((TileSlotInput) tile.tileSlots.get(0), tile, 0, 56, 16)); - this.addSlotToContainer(new SlotDischarge(tile, 1, 1, 56, 53)); - this.addSlotToContainer(new SlotOutput(player, tile, 2, 113, 35)); - this.addSlotToContainer(new SlotOutput(player, tile, 3, 131, 35)); - this.addSlotToContainer(new SlotUpgrade(tile, 4, 153, 26)); - this.addSlotToContainer(new SlotUpgrade(tile, 5, 153, 44)); - } - - @Override - public void addListener(IContainerListener listener) { - super.addListener(listener); - //listener.sendProgressBarUpdate(this, 0, this.tile.progress); - //listener.sendProgressBarUpdate(this, 1, (int) this.tile.requireEnergy); - //listener.sendProgressBarUpdate(this, 2, (int) this.tile.energy); - } - - /** - * Looks for changes made in the container, sends them to every listener. - */ - @Override - public void detectAndSendChanges() { - super.detectAndSendChanges(); - - for (IContainerListener listener : this.listeners) { - if (this.lastProgress != this.tile.progress) { - //listener.sendProgressBarUpdate(this, 0, this.tile.progress); - } - - if (this.lastRequireEnergy != this.tile.requireEnergy) { - //listener.sendProgressBarUpdate(this, 1, (int) this.tile.requireEnergy); - } - - if (this.lastEnergy != this.tile.energy) { - //listener.sendProgressBarUpdate(this, 2, (int) this.tile.energy); - } - } - - this.lastProgress = this.tile.progress; - this.lastRequireEnergy = (int) this.tile.requireEnergy; - this.lastEnergy = this.tile.energy; - } - - /** - * Sends two ints to the client-side Container. Used for furnace burning time, smelting progress, brewing progress, - * and enchanting level. Normally the first int identifies which variable to update, and the second contains the new - * value. Both are truncated to shorts in non-local SMP. - * @param i Identifies which variable to update - */ - @Override - @SideOnly(Side.CLIENT) - public void updateProgressBar(int i, int var) { - if (i == 0) { - this.tile.progress = var; - } - - if (i == 1) { - this.tile.requireEnergy = var; - } - - if (i == 2) { - this.tile.energy = var; - } - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/inventory/ContainerEUStorage.java b/src/main/java/com/mcgoodtime/productionline/inventory/ContainerEUStorage.java deleted file mode 100644 index e43a87b..0000000 --- a/src/main/java/com/mcgoodtime/productionline/inventory/ContainerEUStorage.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.mcgoodtime.productionline.inventory; - -import com.mcgoodtime.productionline.tiles.eustorage.TileEUStorage; -import ic2.core.slot.SlotArmor; -import ic2.core.slot.SlotDischarge; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.EntityEquipmentSlot; -import net.minecraft.inventory.IContainerListener; -import net.minecraft.inventory.Slot; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; - -/** - * Created by BestOwl on 2015.11.28.0028. - * - * @author BestOwl - */ -public class ContainerEUStorage extends ContainerPL { - - public double lastEnergy; - public int lastMode; - - public ContainerEUStorage(EntityPlayer player, T tile) { - super(player, tile, 196); - this.addSlotToContainer(new SlotDischarge(this.tile, this.tile.tier, 0, 56, 53)); - this.addSlotToContainer(new Slot(this.tile, 1, 56, 17)); - for (int i = 0; i < 4; i++) { - this.addSlotToContainer(new SlotArmor(player.inventory, EntityEquipmentSlot.values()[i + 2], 8 + i * 18, 84)); - } - } - - @Override - public void addListener(IContainerListener listener) { - super.addListener(listener); - //listener.sendProgressBarUpdate(this, 0, (int) this.tile.energy); - //listener.sendProgressBarUpdate(this, 1, this.tile.redstoneMode.ordinal()); - } - - /** - * Looks for changes made in the container, sends them to every listener. - */ - @Override - public void detectAndSendChanges() { - super.detectAndSendChanges(); - - for (IContainerListener listener : this.listeners) { - if (this.lastEnergy != this.tile.energy) { - //listener.sendProgressBarUpdate(this, 0, (int) this.tile.energy); - } - if (this.lastMode != this.tile.redstoneMode.ordinal()) { - //listener.sendProgressBarUpdate(this, 1, this.tile.redstoneMode.ordinal()); - } - } - - this.lastEnergy = this.tile.energy; - this.lastMode = this.tile.redstoneMode.ordinal(); - } - - @Override - @SideOnly(Side.CLIENT) - public void updateProgressBar(int id, int var) { - super.updateProgressBar(id, var); - switch (id) { - case 0: - this.tile.energy = var; - break; - case 1: - this.tile.redstoneMode = TileEUStorage.RedstoneMode.values()[var]; - break; - } - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/inventory/ContainerFluidKineticGenerator.java b/src/main/java/com/mcgoodtime/productionline/inventory/ContainerFluidKineticGenerator.java deleted file mode 100644 index 87ef7ae..0000000 --- a/src/main/java/com/mcgoodtime/productionline/inventory/ContainerFluidKineticGenerator.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * This file is part of GoodTime-Industrial, licensed under MIT License (MIT). - * - * Copyright (c) 2015 GoodTime Studio - * Copyright (c) contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -package com.mcgoodtime.productionline.inventory; - -import com.mcgoodtime.productionline.inventory.slot.SlotOutput; -import com.mcgoodtime.productionline.tiles.TileFluidKineticGenerator; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IContainerListener; -import net.minecraft.inventory.Slot; -import net.minecraftforge.fluids.Fluid; -import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; - -public class ContainerFluidKineticGenerator extends ContainerPL { - - public int fluidAmount; - public Fluid fluid; - - public ContainerFluidKineticGenerator(EntityPlayer player, TileFluidKineticGenerator tile) { - super(player, tile); - - this.addSlotToContainer(new Slot(tile, 0, 27, 21)); - this.addSlotToContainer(new SlotOutput(player, tile, 1, 27, 54)); - } - - @Override - public void addListener(IContainerListener listener) { - super.addListener(listener); - //listener.sendProgressBarUpdate(this, 0, this.tile.fluidTank.getFluidAmount()); - if (this.tile.fluidTank.getFluid() != null) { - // TODO Improve - //listener.sendProgressBarUpdate(this, 1, FluidRegistry.getFluidID(this.tile.fluidTank.getFluid().getFluid())); - } - } - - - /** - * Looks for changes made in the container, sends them to every listener. - */ - @Override - public void detectAndSendChanges() { - super.detectAndSendChanges(); - - for (IContainerListener listener : this.listeners) { - if (this.fluidAmount != this.tile.fluidTank.getFluidAmount()) { - //listener.sendProgressBarUpdate(this, 0, this.tile.fluidTank.getFluidAmount()); - } - if (this.tile.fluidTank.getFluid() != null && this.fluid != this.tile.fluidTank.getFluid().getFluid()) { - //listener.sendProgressBarUpdate(this, 1, FluidRegistry.getFluidID(this.tile.fluidTank.getFluid().getFluid())); - } - } - - this.fluidAmount = this.tile.fluidTank.getFluidAmount(); - if (this.tile.fluidTank.getFluid() != null) { - this.fluid = this.tile.fluidTank.getFluid().getFluid(); - } - } - - @Override - @SideOnly(Side.CLIENT) - public void updateProgressBar(int id, int var) { - super.updateProgressBar(id, var); - switch (id) { - case 0: - if (this.tile.fluidTank.getFluid() != null) { - this.tile.fluidTank.getFluid().amount = var; - } - break; - case 1:/* - if (FluidRegistry.getFluid(var) != null) { - this.tile.fluidTank.setFluid(new FluidStack(FluidRegistry.getFluid(var), this.tile.fluidTank.getFluidAmount())); - }*/ - break; - } - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/inventory/ContainerHeatDryer.java b/src/main/java/com/mcgoodtime/productionline/inventory/ContainerHeatDryer.java deleted file mode 100644 index 4df3d6f..0000000 --- a/src/main/java/com/mcgoodtime/productionline/inventory/ContainerHeatDryer.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * This file is part of GoodTime-Industrial, licensed under MIT License (MIT). - * - * Copyright (c) 2015 GoodTime Studio - * Copyright (c) contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -package com.mcgoodtime.productionline.inventory; - -import com.mcgoodtime.productionline.inventory.slot.SlotInput; -import com.mcgoodtime.productionline.inventory.slot.SlotOutput; -import com.mcgoodtime.productionline.inventory.slot.SlotUpgrade; -import com.mcgoodtime.productionline.tiles.TileHeatDryer; -import com.mcgoodtime.productionline.tiles.tileslots.TileSlotInput; -import ic2.core.slot.SlotDischarge; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IContainerListener; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; - -/* - * Created by suhao on 2015.7.10. - */ -public class ContainerHeatDryer extends ContainerPL { - - private int lastProgress; - private double lastEnergy; - - public ContainerHeatDryer(EntityPlayer player, TileHeatDryer tile) { - super(player, tile); - - this.addSlotToContainer(new SlotInput((TileSlotInput) tile.tileSlots.get(0), tile, 0, 56, 16)); - this.addSlotToContainer(new SlotDischarge(tile, 1, 1, 56, 53)); - this.addSlotToContainer(new SlotOutput(player, tile, 2, 107, 35)); - this.addSlotToContainer(new SlotUpgrade(tile, 3, 153, 26)); - this.addSlotToContainer(new SlotUpgrade(tile, 4, 153, 44)); - } - - @Override - public void addListener(IContainerListener listener) { - super.addListener(listener); - //listener.sendProgressBarUpdate(this, 1, lastProgress); - //listener.sendProgressBarUpdate(this, 2, (int) lastEnergy); - } - - /** - * Looks for changes made in the container, sends them to every listener. - */ - @Override - public void detectAndSendChanges() { - super.detectAndSendChanges(); - - for (IContainerListener listener : this.listeners) { - if (this.lastProgress != this.tile.progress) { - //listener.sendProgressBarUpdate(this, 1, this.tile.progress); - } - if (this.lastEnergy != this.tile.energy) { - //listener.sendProgressBarUpdate(this, 2, (int) this.tile.energy); - } - } - - this.lastEnergy = this.tile.energy; - this.lastProgress = this.tile.progress; - } - - @Override - @SideOnly(Side.CLIENT) - public void updateProgressBar(int id, int i) { - super.updateProgressBar(id, i); - switch (id) { - case 1: - this.tile.progress = i; - break; - case 2: - this.tile.energy = i; - break; - } - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/inventory/ContainerPackager.java b/src/main/java/com/mcgoodtime/productionline/inventory/ContainerPackager.java deleted file mode 100644 index f8828ce..0000000 --- a/src/main/java/com/mcgoodtime/productionline/inventory/ContainerPackager.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * - * This file is part of ProductionLine, licensed under MIT License (MIT). - * - * Copyright (c) 2017 GoodTime Studio - * Copyright (c) contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -package com.mcgoodtime.productionline.inventory; - -import com.mcgoodtime.productionline.inventory.slot.SlotInput; -import com.mcgoodtime.productionline.inventory.slot.SlotOutput; -import com.mcgoodtime.productionline.inventory.slot.SlotUpgrade; -import com.mcgoodtime.productionline.tiles.TilePackager; -import com.mcgoodtime.productionline.tiles.tileslots.TileSlotInput; -import com.mcgoodtime.productionline.tiles.tileslots.TileSlotPackage; -import ic2.core.slot.SlotDischarge; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IContainerListener; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; - -/** - * Created by BestOwl on 2017/3/25. - * - * @author BestOwl - */ -public class ContainerPackager extends ContainerPL { - - private int lastProgress; - private double lastEnergy; - - public ContainerPackager(EntityPlayer player, TilePackager tile) { - super(player, tile); - this.addSlotToContainer(new SlotInput((TileSlotInput) tile.tileSlots.get(0), tile, 0, 56, 16)); - this.addSlotToContainer(new SlotInput((TileSlotPackage) tile.tileSlots.get(1), tile, 1, 83, 21)); - this.addSlotToContainer(new SlotDischarge(tile, 1, 2, 56, 53)); - this.addSlotToContainer(new SlotOutput(player, tile, 3, 107, 35)); - this.addSlotToContainer(new SlotUpgrade(tile, 4, 153, 26)); - this.addSlotToContainer(new SlotUpgrade(tile, 5, 153, 44)); - } - - @Override - public void addListener(IContainerListener listener) { - super.addListener(listener); - //listener.sendProgressBarUpdate(this, 1, lastProgress); - //listener.sendProgressBarUpdate(this, 2, (int) lastEnergy); - } - - /** - * Looks for changes made in the container, sends them to every listener. - */ - @Override - public void detectAndSendChanges() { - super.detectAndSendChanges(); - - for (IContainerListener listener : this.listeners) { - if (this.lastProgress != this.tile.progress) { - //listener.sendProgressBarUpdate(this, 1, this.tile.progress); - } - if (this.lastEnergy != this.tile.energy) { - //listener.sendProgressBarUpdate(this, 2, (int) this.tile.energy); - } - } - - this.lastEnergy = this.tile.energy; - this.lastProgress = this.tile.progress; - } - - @Override - @SideOnly(Side.CLIENT) - public void updateProgressBar(int id, int i) { - super.updateProgressBar(id, i); - switch (id) { - case 1: this.tile.progress = i; - case 2: this.tile.energy = i; - } - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/inventory/ContainerParallelSpaceSU.java b/src/main/java/com/mcgoodtime/productionline/inventory/ContainerParallelSpaceSU.java deleted file mode 100644 index 78f8062..0000000 --- a/src/main/java/com/mcgoodtime/productionline/inventory/ContainerParallelSpaceSU.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.mcgoodtime.productionline.inventory; - -import com.mcgoodtime.productionline.tiles.eustorage.TileEUStorage; -import com.mcgoodtime.productionline.tiles.eustorage.TileParallelSpaceSU; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IContainerListener; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; - -/** - * Created by BestOwl on 2015.11.29.0029. - * - * @author BestOwl - */ -public class ContainerParallelSpaceSU extends ContainerPL { - - public double lastEnergy; - public int lastMode; - - public ContainerParallelSpaceSU(EntityPlayer player, TileParallelSpaceSU tile) { - super(player, tile); - } - - @Override - public void addListener(IContainerListener listener) { - super.addListener(listener); - //listener.sendProgressBarUpdate(this, 0, (int) this.tile.energy); - //listener.sendProgressBarUpdate(this, 1, this.tile.redstoneMode.ordinal()); - } - - /** - * Looks for changes made in the container, sends them to every listener. - */ - @Override - public void detectAndSendChanges() { - super.detectAndSendChanges(); - - for (IContainerListener object : this.listeners) { - if (this.lastEnergy != this.tile.energy) { - //object.sendProgressBarUpdate(this, 0, (int) this.tile.energy); - } - if (this.lastMode != this.tile.redstoneMode.ordinal()) { - //object.sendProgressBarUpdate(this, 1, this.tile.redstoneMode.ordinal()); - } - } - - this.lastEnergy = this.tile.energy; - this.lastMode = this.tile.redstoneMode.ordinal(); - } - - @Override - @SideOnly(Side.CLIENT) - public void updateProgressBar(int id, int var) { - super.updateProgressBar(id, var); - switch (id) { - case 0: - this.tile.energy = var; - break; - case 1: - this.tile.redstoneMode = TileEUStorage.RedstoneMode.values()[var]; - break; - } - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemBlockEUStorage.java b/src/main/java/com/mcgoodtime/productionline/items/ItemBlockEUStorage.java deleted file mode 100644 index 52185a4..0000000 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemBlockEUStorage.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.mcgoodtime.productionline.items; - -import com.mcgoodtime.productionline.init.PLBlocks; -import ic2.core.util.StackUtil; -import net.minecraft.block.Block; -import net.minecraft.client.resources.I18n; -import net.minecraft.client.util.ITooltipFlag; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.NonNullList; -import net.minecraft.world.World; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import java.util.List; - -/** - * Created by BestOwl on 2015.11.29.0029. - * - * @author BestOwl - */ -public class ItemBlockEUStorage extends ItemBlockPL { - - public ItemBlockEUStorage(Block block) { - super(block); - } - - /** - * allows items to add custom lines of information to the mouseover description - */ - @SideOnly(Side.CLIENT) - @Override - public void addInformation(ItemStack stack, @Nullable World worldIn, List tooltip, ITooltipFlag flagIn) { - super.addInformation(stack, worldIn, tooltip, flagIn); - int meta = stack.getItemDamage(); - String info = I18n.format("ic2.item.tooltip.Output") + " "; - switch (meta) { - case 0: - info += "8192EU/t"; - } - info += " " + I18n.format("ic2.item.tooltip.Capacity") + " "; - switch (meta) { - case 0: - info += "100m EU"; - } - tooltip.add(info); - NBTTagCompound nbt = StackUtil.getOrCreateNbtData(stack); - String internalEnergy = I18n.format("ic2.item.tooltip.Store") + " " + nbt.getInteger("energy") + " EU"; - tooltip.add(internalEnergy); - } - - @SideOnly(Side.CLIENT) - @Override - public void getSubItems(CreativeTabs tab, NonNullList items) { - super.getSubItems(tab, items); - ItemStack itemStack; - NBTTagCompound nbt; - - itemStack = PLBlocks.evsu.copy(); - nbt = StackUtil.getOrCreateNbtData(itemStack); - nbt.setInteger("energy", (int) 1E8); - items.add(itemStack); - - itemStack = PLBlocks.cseu.copy(); - nbt = StackUtil.getOrCreateNbtData(itemStack); - nbt.setInteger("energy", (int) 720E3); - items.add(itemStack); - - itemStack = PLBlocks.parallelSpaceSU.copy(); - nbt = StackUtil.getOrCreateNbtData(itemStack); - nbt.setInteger("energy", (int) 2E8); - items.add(itemStack); - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemCEU.java b/src/main/java/com/mcgoodtime/productionline/items/ItemCEU.java deleted file mode 100644 index fe428d2..0000000 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemCEU.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.mcgoodtime.productionline.items; - -import com.mcgoodtime.productionline.client.IItemModelProvider; -import ic2.api.item.IBoxable; -import net.minecraft.item.ItemStack; - -/** - * Created by BestOwl on 2015.12.6.0006. - * - * @author BestOwl - */ -public class ItemCEU extends ItemElectricPL implements IBoxable, IItemModelProvider { - - public ItemCEU() { - super("ceu", 1, 20000); - } - - @Override - public boolean canProvideEnergy(ItemStack itemStack) { - return true; - } - - /** - * Determine whether an item can be stored in a toolbox or not. - * - * @param itemstack item to be stored - * @return Whether to store the item in the toolbox or not - */ - @Override - public boolean canBeStoredInToolbox(ItemStack itemstack) { - return true; - } - - @Override - public String getModelResourcePath() { - return "eustorage"; - } - - /** - * Get custom resource name. - * To use default resource name, return null. - */ - @Override - public String getModelResourceName(int meta) { - return null; - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemCrafting.java b/src/main/java/com/mcgoodtime/productionline/items/ItemCrafting.java index 710e28f..4ae0ccc 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemCrafting.java +++ b/src/main/java/com/mcgoodtime/productionline/items/ItemCrafting.java @@ -14,48 +14,12 @@ public class ItemCrafting extends ItemMulti { public ItemCrafting() { super("crafting"); - PLItems.heatInsulationMaterial = this.next(); - PLItems.smallCompressedWaterHyacinth = this.next(); - PLItems.redstoneModule = this.next(); - PLItems.lazuliModule = this.next(); - PLItems.advSolarLensGroup = this.next(); - PLItems.advSolarLensCluster = this.next(); - PLItems.opticalGlass = this.next(); - PLItems.enderPearlPowder = this.next(); - PLItems.heartOfEnder = this.next(); - PLItems.CPUmk1 = this.next(); - PLItems.CPUmk2 = this.next(); - PLItems.CPUmk3 = this.next(); - PLItems.lifeConverter = this.next(); - PLItems.condensedImpurities = this.next(); - PLItems.heartOfLava = this.next(); - PLItems. heartOfPureWhite= this.next(); } @Override protected List getInternalNameList() { List list = new ArrayList<>(); - list.add("heat_insulation_material"); list.add("small_compressed_water_hyacinth"); - list.add("redstone_module"); - list.add("lazuli_module"); - list.add("sawdust"); - list.add("adv_solar_lens_unit"); - list.add("adv_solar_lens_group"); - list.add("adv_solar_lens_cluster"); - list.add("optical_glass"); - list.add("rigid_paper"); - list.add("ender_pearl_powder"); - list.add("cpu_mk1"); - list.add("cpu_mk2"); - list.add("cpu_mk3"); - list.add("fake_head"); - list.add("life_converter"); - list.add("condensed_impurities"); - list.add("heart_of_lava"); - list.add("heart_of_pure_white"); - list.add("heart_of_ender"); - return list; } diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemElectricPL.java b/src/main/java/com/mcgoodtime/productionline/items/ItemElectricPL.java deleted file mode 100644 index eaab267..0000000 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemElectricPL.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.mcgoodtime.productionline.items; - -import com.mcgoodtime.productionline.items.ItemPL; -import ic2.api.item.ElectricItem; -import ic2.api.item.IElectricItem; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.NonNullList; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; - -import java.util.List; - -/** - * Created by BestOwl on 2015.12.8.0008. - * Electric item use ic2 energy. - * - * @author BestOwl - */ -public class ItemElectricPL extends ItemPL implements IElectricItem { - - protected int maxPowerTick; - protected int maxEnergy; - protected int tier; - - public ItemElectricPL(String name, int tier, int maxEnergy) { - super(name); - this.setMaxDamage(27); - this.setHasSubtypes(true); - this.setMaxStackSize(1); - this.tier = tier; - this.maxEnergy = maxEnergy; -// this.maxPowerTick = (int) EnergyNet.instance.getPowerFromTier(tier); - this.addPropertyOverrides(); - } - - protected void addPropertyOverrides() { - this.addPropertyOverride(new ResourceLocation("energy"), (stack, worldIn, entityIn) -> { - int meta = stack.getMetadata(); - if (meta > 24) { - return 1; - } - else if (meta > 17) { - return 2; - } - else if (meta > 10) { - return 3; - } - else if (meta > 3) { - return 4; - } - else { - return 0; - } - }); - } - - @Override - @SideOnly(Side.CLIENT) - public void getSubItems(CreativeTabs tab, NonNullList items) { - ItemStack itemStack = new ItemStack(this, 1); - ElectricItem.manager.charge(itemStack, 0.0D, Integer.MAX_VALUE, true, false); - items.add(itemStack); - - ItemStack charged = new ItemStack(this, 1); - ElectricItem.manager.charge(charged, Double.POSITIVE_INFINITY, Integer.MAX_VALUE, true, false); - items.add(charged); - } - - /** - * Determine if the item can be used in a machine or as an armor part to supply energy. - * - * @return Whether the item can supply energy - */ - @Override - public boolean canProvideEnergy(ItemStack itemStack) { - return false; - } - - /** - * Get the item's maximum charge energy in EU. - * - * @return Maximum charge energy - */ - @Override - public double getMaxCharge(ItemStack itemStack) { - return this.maxEnergy; - } - - /** - * Get the item's tier, lower tiers can't send energy to higher ones. - * Batteries are Tier 1, Energy Crystals are Tier 2, Lapotron Crystals are Tier 3. - * - * @return Item's tier - */ - @Override - public int getTier(ItemStack itemStack) { - return this.tier; - } - - /** - * Get the item's transfer limit in EU per transfer operation. - * - * @return Transfer limit - */ - @Override - public double getTransferLimit(ItemStack itemStack) { - return this.maxPowerTick; - } - -} diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemOre.java b/src/main/java/com/mcgoodtime/productionline/items/ItemOre.java index 63101c5..db8e27b 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemOre.java +++ b/src/main/java/com/mcgoodtime/productionline/items/ItemOre.java @@ -16,7 +16,6 @@ public ItemOre() { super("ore"); PLItems.ingotIridium = this.next(); - PLItems.dustIridium = this.next(); } @Override diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemPLFood.java b/src/main/java/com/mcgoodtime/productionline/items/ItemPLFood.java deleted file mode 100644 index bf5a11b..0000000 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemPLFood.java +++ /dev/null @@ -1,183 +0,0 @@ -/* - * This file is part of GoodTime-Industrial, licensed under MIT License (MIT). - * - * Copyright (c) 2015 GoodTime Studio - * Copyright (c) contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package com.mcgoodtime.productionline.items; - -import com.mcgoodtime.productionline.client.IItemModelProvider; -import com.mcgoodtime.productionline.init.PLItems; -import com.mcgoodtime.productionline.potion.PLPotion; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.SoundEvents; -import net.minecraft.item.EnumAction; -import net.minecraft.item.ItemStack; -import net.minecraft.stats.StatList; -import net.minecraft.util.ActionResult; -import net.minecraft.util.EnumActionResult; -import net.minecraft.util.EnumHand; -import net.minecraft.util.SoundCategory; -import net.minecraft.world.World; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import java.util.Map; -import java.util.WeakHashMap; - -public class ItemPLFood extends ItemPL implements IItemModelProvider { - - private int timer; - private Map amountMap = new WeakHashMap<>(); - - /** - * The amount this food item heals the player. - */ - private int healAmount; - /** - * 饱食度 - */ - private final float saturationModifier; - /** - * If this field is true, the food can be consumed even if the player don't need to eat. - */ - private boolean alwaysEdible; - - public ItemPLFood(String name, int healAmount, float saturationModifier, boolean alwaysEdible) { - super(name); - this.healAmount = healAmount; - this.saturationModifier = saturationModifier; - this.alwaysEdible = alwaysEdible; - } - - @Nullable - @Override - public ItemStack onItemUseFinish(@Nonnull ItemStack stack, World worldIn, EntityLivingBase entityLiving) { - stack.shrink(1); - - if (entityLiving instanceof EntityPlayer) { - EntityPlayer entityplayer = (EntityPlayer) entityLiving; - entityplayer.getFoodStats().addStats(healAmount, saturationModifier); - worldIn.playSound(null, entityplayer.posX, entityplayer.posY, entityplayer.posZ, SoundEvents.ENTITY_PLAYER_BURP, SoundCategory.PLAYERS, 0.5F, worldIn.rand.nextFloat() * 0.1F + 0.9F); - this.onEaten(stack, worldIn, entityplayer); - entityplayer.addStat(StatList.getObjectUseStats(this)); - } - - return stack; - } - - @Nonnull - public ActionResult onItemRightClick(@Nonnull ItemStack stack, World worldIn, EntityPlayer playerIn, EnumHand hand) { - if (playerIn.canEat(this.alwaysEdible)) { - playerIn.setActiveHand(hand); - return new ActionResult<>(EnumActionResult.SUCCESS, stack); - } else { - return new ActionResult<>(EnumActionResult.FAIL, stack); - } - } - - /** - * Called each tick as long the item is on a player inventory. Uses by maps to check if is on a player hand and - * update it's contents. - */ - @Override - public void onUpdate(ItemStack itemStack, World world, Entity entity, int slotIndex, boolean isCurrentItem) { - if (!world.isRemote) { - if (entity instanceof EntityPlayer) - //1200 ticks = 1min - if (this.timer < 1200) { - ++this.timer; - } else if (this.timer == 1200) { - this.timer = 0; - amountMap.remove(entity); - } - } - } - - protected ItemStack onEaten(ItemStack stack, World world, EntityPlayer player) { - if (!world.isRemote) { - if (this.equals(PLItems.salt)) { - if (amountMap.containsKey(player)) { - EatAmount amount = amountMap.get(player); - if (!stack.isItemEqual(amount.itemStack)) { - amountMap.remove(player); - } - //3 - 1 - else if (amount.amount == 2) { - amountMap.remove(player); - PLPotion.salty.applyPotion(player, 0, 1); - return stack; - } - - } else { - amountMap.put(player, new EatAmount(stack, 0)); - } - amountMap.get(player).amount++; - } - - } - return stack; - } - - /** - * How long it takes to use or consume an item - */ - @Override - public int getMaxItemUseDuration(ItemStack itemStack) { - return 32; - } - - /** - * returns the action that specifies what animation to play when the items is being used - */ - @Override - @Nonnull - public EnumAction getItemUseAction(ItemStack itemStack) { - return EnumAction.EAT; - } - - @Override - public String getModelResourcePath() { - return "food"; - } - - /** - * Get custom resource name. - * To use default resource name, return null. - * - */ - @Override - public String getModelResourceName(int meta) { - return null; - } - - static class EatAmount { - private ItemStack itemStack; - private int amount; - - private EatAmount(ItemStack itemStack, int amount) { - this.itemStack = itemStack; - this.amount = amount; - } - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemPLRecord.java b/src/main/java/com/mcgoodtime/productionline/items/ItemPLRecord.java deleted file mode 100644 index 9278b73..0000000 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemPLRecord.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * This file is part of GoodTime-Industrial, licensed under MIT License (MIT). - * - * Copyright (c) 2015 GoodTime Studio - * Copyright (c) contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package com.mcgoodtime.productionline.items; - -import com.mcgoodtime.productionline.core.ProductionLine; -import net.minecraft.client.resources.I18n; -import net.minecraft.client.util.ITooltipFlag; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemRecord; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.SoundEvent; -import net.minecraft.world.World; -import net.minecraftforge.fml.common.registry.ForgeRegistries; -import net.minecraftforge.fml.common.registry.GameRegistry; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; - -import javax.annotation.Nullable; -import java.util.List; - -import static com.mcgoodtime.productionline.core.ProductionLine.MOD_ID; - -/** - * Created by suhao on 2015.6.29. - * @author suhao - */ -public class ItemPLRecord extends ItemRecord { - - private String name; - - public ItemPLRecord(String name, SoundEvent soundEvent) { - super(name, soundEvent); - this.name = name; - this.setCreativeTab(ProductionLine.creativeTabPL); - this.setUnlocalizedName(MOD_ID + "." + name); - this.setRegistryName(new ResourceLocation(MOD_ID, name)); - ForgeRegistries.ITEMS.register(this); - } - - @Override - public String getRecordNameLocal() { - return net.minecraft.util.text.translation.I18n.translateToLocal(this.getUnlocalizedName() + ".desc"); - } - - /* - @Override - public ResourceLocation getRecordResource(String name) { - return new ResourceLocation(ProductionLine.RESOURCE_DOMAIN, this.name); - }*/ - - @SideOnly(Side.CLIENT) - @Override - public void addInformation(ItemStack stack, @Nullable World worldIn, List tooltip, ITooltipFlag flagIn) { - tooltip.add(I18n.format(this.getUnlocalizedName() + "." + "desc1")); - tooltip.add(I18n.format(this.getUnlocalizedName() + "." + "desc2")); - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemWaterHyacinth.java b/src/main/java/com/mcgoodtime/productionline/items/ItemWaterHyacinth.java deleted file mode 100644 index 79e573b..0000000 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemWaterHyacinth.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * This file is part of GoodTime-Industrial, licensed under MIT License (MIT). - * - * Copyright (c) 2015 GoodTime Studio - * Copyright (c) contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package com.mcgoodtime.productionline.items; - -import com.mcgoodtime.productionline.init.PLBlocks; -import net.minecraft.block.Block; -import net.minecraft.block.BlockLiquid; -import net.minecraft.block.material.Material; -import net.minecraft.block.state.IBlockState; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.SoundEvents; -import net.minecraft.item.ItemColored; -import net.minecraft.item.ItemStack; -import net.minecraft.stats.StatList; -import net.minecraft.util.ActionResult; -import net.minecraft.util.EnumActionResult; -import net.minecraft.util.EnumHand; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.world.World; - -import javax.annotation.Nonnull; - -/** - * The item of water hyacinth in GoodTime-Industrial. - * - * @author liach - */ -public class ItemWaterHyacinth extends ItemColored { - - public ItemWaterHyacinth(Block block) { - super(block, false); - } - - @Nonnull - public ActionResult onItemRightClick(@Nonnull ItemStack itemStackIn, World worldIn, EntityPlayer playerIn, EnumHand hand) { - RayTraceResult raytraceresult = this.rayTrace(worldIn, playerIn, true); - - if (raytraceresult == null) { - return new ActionResult<>(EnumActionResult.PASS, itemStackIn); - } else { - if (raytraceresult.typeOfHit == RayTraceResult.Type.BLOCK) { - BlockPos blockpos = raytraceresult.getBlockPos(); - - if (!worldIn.isBlockModifiable(playerIn, blockpos) || !playerIn.canPlayerEdit(blockpos.offset(raytraceresult.sideHit), raytraceresult.sideHit, itemStackIn)) { - return new ActionResult<>(EnumActionResult.FAIL, itemStackIn); - } - - BlockPos blockpos1 = blockpos.up(); - IBlockState iblockstate = worldIn.getBlockState(blockpos); - - if (iblockstate.getMaterial() == Material.WATER && iblockstate.getValue(BlockLiquid.LEVEL) == 0 && worldIn.isAirBlock(blockpos1)) { - // special case for handling block placement with water lilies - net.minecraftforge.common.util.BlockSnapshot blocksnapshot = net.minecraftforge.common.util.BlockSnapshot.getBlockSnapshot(worldIn, blockpos1); - worldIn.setBlockState(blockpos1, PLBlocks.waterHyacinth.getDefaultState()); - if (net.minecraftforge.event.ForgeEventFactory.onPlayerBlockPlace(playerIn, blocksnapshot, net.minecraft.util.EnumFacing.UP, playerIn.getActiveHand()).isCanceled()) { - blocksnapshot.restore(true, false); - return new ActionResult<>(EnumActionResult.FAIL, itemStackIn); - } - - worldIn.setBlockState(blockpos1, PLBlocks.waterHyacinth.getDefaultState(), 11); - - if (!playerIn.capabilities.isCreativeMode) { - itemStackIn.shrink(1); - } - - playerIn.addStat(StatList.getObjectUseStats(this)); - worldIn.playSound(playerIn, blockpos, SoundEvents.BLOCK_WATERLILY_PLACE, SoundCategory.BLOCKS, 1.0F, 1.0F); - return new ActionResult<>(EnumActionResult.SUCCESS, itemStackIn); - } - } - - return new ActionResult<>(EnumActionResult.FAIL, itemStackIn); - } - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/items/tools/ItemGravityRay.java b/src/main/java/com/mcgoodtime/productionline/items/tools/ItemGravityRay.java deleted file mode 100644 index e03417b..0000000 --- a/src/main/java/com/mcgoodtime/productionline/items/tools/ItemGravityRay.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.mcgoodtime.productionline.items.tools; - -import com.mcgoodtime.productionline.client.IItemModelProvider; -import com.mcgoodtime.productionline.entity.EntityRay; -import com.mcgoodtime.productionline.init.PLItems; -import com.mcgoodtime.productionline.items.ItemElectricPL; -import ic2.api.item.ElectricItem; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.SoundEvents; -import net.minecraft.item.EnumAction; -import net.minecraft.item.ItemStack; -import net.minecraft.util.*; -import net.minecraft.world.World; - -import javax.annotation.Nonnull; - -/** - * Created by BestOwl on 2015.12.7.0007. - * - * @author BestOwl - */ -public class ItemGravityRay extends ItemElectricPL implements IItemModelProvider { - - public ItemGravityRay() { - super("gravity_ray", 3, (int) 11E6); - } - - @Override - protected void addPropertyOverrides() { - this.addPropertyOverride(new ResourceLocation("pull"), (stack, worldIn, entityIn) -> { - if (entityIn == null) - { - return 0.0F; - } - else - { - ItemStack itemstack = entityIn.getActiveItemStack(); - return itemstack != null && itemstack.getItem() == PLItems.gravityRay ? (float)(stack.getMaxItemUseDuration() - entityIn.getItemInUseCount()) / 20.0F : 0.0F; - } - }); - this.addPropertyOverride(new ResourceLocation("pulling"), - (stack, worldIn, entityIn) -> entityIn != null && entityIn.isHandActive() && entityIn.getActiveItemStack() == stack ? 1.0F : 0.0F); - } - - /** - * called when the player releases the use item button. Args: itemstack, world, entityplayer, itemInUseCount - */ - @Override - public void onPlayerStoppedUsing(ItemStack itemStack, World world, EntityLivingBase player, int itemInUseCount) { - if (ElectricItem.manager.getCharge(itemStack) >= 100) { - int i = this.getMaxItemUseDuration(itemStack) - itemInUseCount; - - float damge = (float) i / 20.0F; - damge = (damge * damge + damge * 2.0F) / 3.0F; - if ((double)damge < 0.1D) { - return; - } - if (damge > 1.0F) { - damge = 1.0F; - } - - world.playSound(null, player.posX, player.posY, player.posZ, SoundEvents.ENTITY_ARROW_SHOOT, - SoundCategory.PLAYERS, 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + damge * 0.5F); - if (!(player instanceof EntityPlayer - && ((EntityPlayer) player).capabilities.isCreativeMode)) { - ElectricItem.manager.discharge(itemStack, 100, this.tier, false, true, false); - } - if (!world.isRemote) { - world.spawnEntity(new EntityRay(world, player, damge * 2.0F)); - } - } - } - - /** - * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer - *//* - @Override - @Nonnull - public ActionResult onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn) { - if (playerIn.capabilities.isCreativeMode || ElectricItem.manager.getCharge(stack) >= 100) { - playerIn.setActiveHand(handIn); - return new ActionResult<>(EnumActionResult.SUCCESS, stack); - } - return new ActionResult<>(EnumActionResult.PASS, stack); - }*/ - - /** - * returns the action that specifies what animation to play when the items is being used - */ - @Override - @Nonnull - public EnumAction getItemUseAction(ItemStack itemStack) { - return EnumAction.BOW; - } - - /** - * How long it takes to use or consume an item - */ - @Override - public int getMaxItemUseDuration(ItemStack itemStack) { - return 72000; - } - - @Override - public String getModelResourcePath() { - return "tool"; - } - - /** - * Get custom resource name. - * To use default resource name, return null. - * - */ - @Override - public String getModelResourceName(int meta) { - return null; - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/items/tools/ItemPLTreetap.java b/src/main/java/com/mcgoodtime/productionline/items/tools/ItemPLTreetap.java deleted file mode 100644 index e692ae4..0000000 --- a/src/main/java/com/mcgoodtime/productionline/items/tools/ItemPLTreetap.java +++ /dev/null @@ -1,160 +0,0 @@ -/* - * This file is part of GoodTime-Industrial, licensed under MIT License (MIT). - * - * Copyright (c) 2015 GoodTime Studio - * Copyright (c) contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package com.mcgoodtime.productionline.items.tools; - -import com.mcgoodtime.productionline.client.IItemModelProvider; -import com.mcgoodtime.productionline.items.ItemPL; -import ic2.api.item.IBoxable; -import ic2.core.IC2; -import ic2.core.audio.PositionSpec; -import ic2.core.block.BlockRubWood; -import ic2.core.item.type.MiscResourceType; -import ic2.core.ref.BlockName; -import ic2.core.ref.ItemName; -import ic2.core.util.StackUtil; -import net.minecraft.block.Block; -import net.minecraft.block.state.IBlockState; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumActionResult; -import net.minecraft.util.EnumFacing; -import net.minecraft.util.EnumHand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -import java.util.List; - -/* - * Created by suhao on 2015-6-4-0004. - */ -public class ItemPLTreetap extends ItemPL implements IBoxable, IItemModelProvider { - - public ItemPLTreetap(String name, int damage) { - super(name); - this.setMaxDamage(damage); - this.setMaxStackSize(1); - } - - @Override - public EnumActionResult onItemUse(EntityPlayer player, World worldIn, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { - IBlockState state = worldIn.getBlockState(pos); - Block block = state.getBlock(); - if (block == BlockName.rubber_wood.getInstance()) { - attemptExtract(player, worldIn, pos, facing, state, null); - if (!worldIn.isRemote) { - //stack.damageItem(1, player); - } - - return EnumActionResult.SUCCESS; - } else { - return EnumActionResult.PASS; - } - } - - public static boolean attemptExtract(EntityPlayer player, World world, BlockPos pos, EnumFacing side, IBlockState state, List stacks) { - BlockRubWood.RubberWoodState rwState = state.getValue(BlockRubWood.stateProperty); - if (!rwState.isPlain() && rwState.facing == side) { - if (rwState.wet) { - if (!world.isRemote) { - world.setBlockState(pos, state.withProperty(BlockRubWood.stateProperty, rwState.getDry())); - if (stacks != null) { - stacks.add(StackUtil.copyWithSize(ItemName.misc_resource.getItemStack(MiscResourceType.resin), world.rand.nextInt(3) + 1)); - } else { - ejectResin(world, pos, side, world.rand.nextInt(3) + 1); - } - - if (player != null) { - IC2.achievements.issueAchievement(player, "acquireResin"); - } - } - - if (world.isRemote && player != null) { - IC2.audioManager.playOnce(player, PositionSpec.Hand, "Tools/Treetap.ogg", true, IC2.audioManager.getDefaultVolume()); - } - - return true; - } else { - if (!world.isRemote && world.rand.nextInt(5) == 0) { - world.setBlockState(pos, state.withProperty(BlockRubWood.stateProperty, BlockRubWood.RubberWoodState.plain_y)); - } - - if (world.rand.nextInt(5) == 0) { - if (!world.isRemote) { - ejectResin(world, pos, side, 1); - if (stacks != null) { - stacks.add(ItemName.misc_resource.getItemStack(MiscResourceType.resin)); - } else { - ejectResin(world, pos, side, 1); - } - } - - if (world.isRemote && player != null) { - IC2.audioManager.playOnce(player, PositionSpec.Hand, "Tools/Treetap.ogg", true, IC2.audioManager.getDefaultVolume()); - } - - return true; - } else { - return false; - } - } - } else { - return false; - } - } - - private static void ejectResin(World world, BlockPos pos, EnumFacing side, int quantity) { - double ejectBias = 0.3D; - double ejectX = (double) pos.getX() + 0.5D + (double) side.getFrontOffsetX() * 0.3D; - double ejectY = (double) pos.getY() + 0.5D + (double) side.getFrontOffsetY() * 0.3D; - double ejectZ = (double) pos.getZ() + 0.5D + (double) side.getFrontOffsetZ() * 0.3D; - - for (int i = 0; i < quantity; ++i) { - EntityItem entityitem = new EntityItem(world, ejectX, ejectY, ejectZ, ItemName.misc_resource.getItemStack(MiscResourceType.resin)); - entityitem.setDefaultPickupDelay(); - world.spawnEntity(entityitem); - } - - } - - public boolean canBeStoredInToolbox(ItemStack itemstack) { - return true; - } - - @Override - public String getModelResourcePath() { - return "tool/treetap"; - } - - /** - * Get custom resource name. - * To use default resource name, return null. - * - */ - @Override - public String getModelResourceName(int meta) { - return null; - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/items/tools/PLToolMaterial.java b/src/main/java/com/mcgoodtime/productionline/items/tools/PLToolMaterial.java deleted file mode 100644 index 1c298ea..0000000 --- a/src/main/java/com/mcgoodtime/productionline/items/tools/PLToolMaterial.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * This file is part of GoodTime-Industrial, licensed under MIT License (MIT). - * - * Copyright (c) 2015 GoodTime Studio - * Copyright (c) contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package com.mcgoodtime.productionline.items.tools; - -import net.minecraft.item.Item.ToolMaterial; -import net.minecraftforge.common.util.EnumHelper; - -/* - * Created by suhao on 2015-6-10-0010. - */ -public class PLToolMaterial { - public static ToolMaterial iridium = EnumHelper.addToolMaterial("Iridium", 4, 2000, 10.0F, 4.0F, 30); -} diff --git a/src/main/java/com/mcgoodtime/productionline/items/tools/ToolPL.java b/src/main/java/com/mcgoodtime/productionline/items/tools/ToolPL.java deleted file mode 100644 index 122308e..0000000 --- a/src/main/java/com/mcgoodtime/productionline/items/tools/ToolPL.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * This file is part of GoodTime-Industrial, licensed under MIT License (MIT). - * - * Copyright (c) 2015 GoodTime Studio - * Copyright (c) contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package com.mcgoodtime.productionline.items.tools; - - -import net.minecraft.item.Item; -import net.minecraft.item.Item.ToolMaterial; -import net.minecraft.item.ItemAxe; -import net.minecraft.item.ItemPickaxe; -import net.minecraft.item.ItemSpade; -import net.minecraft.item.ItemSword; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.fml.common.registry.ForgeRegistries; -import net.minecraftforge.fml.common.registry.GameRegistry; - -import static com.mcgoodtime.productionline.core.ProductionLine.*; - -/** - * Created by suhao on 2015.7.19. - * - * @author suhao - */ -public class ToolPL { - - public static Item registerPickaxe(ToolMaterial toolMaterial, String name) { - return new Pickaxe(toolMaterial, name); - } - - public static Item registerAxe(ToolMaterial toolMaterial, String name) { - return new Axe(toolMaterial, name); - } - - public static Item registerSpade(ToolMaterial toolMaterial, String name) { - return new Spade(toolMaterial, name); - } - - public static Item registerSword(ToolMaterial toolMaterial, String name) { - return new Sword(toolMaterial, name); - } - - private static void registerItem(String name, Item item) { - item.setUnlocalizedName(MOD_NAME + "." + name); -// item.setTextureName(RESOURCE_DOMAIN + ":" + "item" + name); - item.setCreativeTab(creativeTabPL); - item.setRegistryName(new ResourceLocation(MOD_ID, name)); - ForgeRegistries.ITEMS.register(item); - } - - private static class Pickaxe extends ItemPickaxe { - private Pickaxe(ToolMaterial toolMaterial, String name) { - super(toolMaterial); - registerItem(name, this); - } - - } - - private static class Axe extends ItemAxe { - private Axe(ToolMaterial toolMaterial, String name) { - super(toolMaterial); - registerItem(name, this); - } - } - - private static class Spade extends ItemSpade { - private Spade(ToolMaterial toolMaterial, String name) { - super(toolMaterial); - registerItem(name, this); - } - - } - - private static class Sword extends ItemSword { - private Sword(ToolMaterial toolMaterial, String name) { - super(toolMaterial); - registerItem(name, this); - } - } -} - - - diff --git a/src/main/java/com/mcgoodtime/productionline/network/PLNetwork.java b/src/main/java/com/mcgoodtime/productionline/network/PLNetwork.java index 860e838..ec9c455 100644 --- a/src/main/java/com/mcgoodtime/productionline/network/PLNetwork.java +++ b/src/main/java/com/mcgoodtime/productionline/network/PLNetwork.java @@ -27,10 +27,8 @@ import com.mcgoodtime.productionline.core.ProductionLine; import com.mcgoodtime.productionline.network.message.MessageBase; import com.mcgoodtime.productionline.network.message.MessageBlockDisplayState; -import com.mcgoodtime.productionline.network.message.MessageEUStorage; import com.mcgoodtime.productionline.network.message.MessageHandlerBase; import com.mcgoodtime.productionline.tiles.TileFacing; -import com.mcgoodtime.productionline.tiles.eustorage.TileEUStorage; import net.minecraftforge.fml.common.network.NetworkRegistry; import net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper; import net.minecraftforge.fml.relauncher.Side; @@ -46,7 +44,6 @@ public class PLNetwork { static { registerMessage(MessageBlockDisplayState.class, Side.CLIENT); - registerMessage(MessageEUStorage.class, Side.SERVER); } @SuppressWarnings("unchecked") @@ -61,10 +58,6 @@ public static void updateBlockDisplayState(TileFacing tile) { tile.getPos().getX(), tile.getPos().getY(), tile.getPos().getZ(), 64)); } - public static void updateTileEUStorage(TileEUStorage tile) { - network.sendToServer(new MessageEUStorage(tile)); - } - public static SimpleNetworkWrapper getNetwork() { return network; } diff --git a/src/main/java/com/mcgoodtime/productionline/network/message/MessageEUStorage.java b/src/main/java/com/mcgoodtime/productionline/network/message/MessageEUStorage.java deleted file mode 100644 index 69b0146..0000000 --- a/src/main/java/com/mcgoodtime/productionline/network/message/MessageEUStorage.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.mcgoodtime.productionline.network.message; - -import com.mcgoodtime.productionline.PLUtil; -import com.mcgoodtime.productionline.tiles.eustorage.TileEUStorage; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.text.translation.I18n; -import net.minecraftforge.fml.common.network.simpleimpl.IMessage; -import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; - -import static com.mcgoodtime.productionline.tiles.eustorage.TileEUStorage.RedstoneMode; - -/** - * Created by BestOwl on 2015.11.28.0028. - * - * @author BestOwl - */ -public class MessageEUStorage extends MessageBase { - - public MessageEUStorage() {} - - public MessageEUStorage(TileEUStorage tile) { - super(tile); - int i = tile.redstoneMode.ordinal(); - i++; - if (i >= RedstoneMode.values().length) { - i = 0; - } - this.nbt.setShort("redstoneMode", (short) i); - } - - @Override - protected IMessage handlerMessage(MessageBase message, MessageContext ctx) { - long pos = message.nbt.getLong("pos"); - short modeID = message.nbt.getShort("redstoneMode"); - RedstoneMode mode = RedstoneMode.values()[modeID]; - TileEUStorage tile = (TileEUStorage) ctx.getServerHandler().player.world.getTileEntity(BlockPos.fromLong(pos)); - tile.redstoneMode = mode; - PLUtil.messageToPlayer(ctx.getServerHandler().player, I18n.translateToLocal("ic2.EUStorage.gui.mod.redstone" + modeID)); - return null; - } - -} diff --git a/src/main/java/com/mcgoodtime/productionline/recipes/CarbonizeFurnaceRecipes.java b/src/main/java/com/mcgoodtime/productionline/recipes/CarbonizeFurnaceRecipes.java deleted file mode 100644 index 5563a84..0000000 --- a/src/main/java/com/mcgoodtime/productionline/recipes/CarbonizeFurnaceRecipes.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * This file is part of GoodTime-Industrial, licensed under MIT License (MIT). - * - * Copyright (c) 2015 GoodTime Studio - * Copyright (c) contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package com.mcgoodtime.productionline.recipes; - -import com.mcgoodtime.productionline.init.PLItems; -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; -import net.minecraft.item.ItemStack; - -/** - * List of CarbonizeFurnace's Recipes - * - * @author BestOwl - */ -public class CarbonizeFurnaceRecipes extends RecipeBase { - - public static final CarbonizeFurnaceRecipes instance = new CarbonizeFurnaceRecipes(); - - private CarbonizeFurnaceRecipes() { - register(new ItemStack(Blocks.LOG), new ItemStack(Items.COAL, 2, 1), 2000); - register(new ItemStack(Blocks.LOG2), new ItemStack(Items.COAL, 2, 1), 2000); - register(new ItemStack(Blocks.PLANKS, 2), new ItemStack(Items.COAL, 1, 1), 1500); - register(new ItemStack(PLItems.saltWaterBucket), new ItemStack(PLItems.salt), 1100); - } - - public void register(ItemStack input, ItemStack output, double requireEnergy) { - this.processList.add(new RecipePartCarbonizeFurnace(input, output, requireEnergy)); - } - - public class RecipePartCarbonizeFurnace extends RecipePart { - /** Value of EU consumption */ - public double requiresEnergy; - - private RecipePartCarbonizeFurnace(ItemStack input, ItemStack output, double requiresEnergy) { - super(input, output); - this.requiresEnergy = requiresEnergy; - } - } -} \ No newline at end of file diff --git a/src/main/java/com/mcgoodtime/productionline/recipes/FluidKineticGeneratorRecipes.java b/src/main/java/com/mcgoodtime/productionline/recipes/FluidKineticGeneratorRecipes.java deleted file mode 100644 index 9e03cf9..0000000 --- a/src/main/java/com/mcgoodtime/productionline/recipes/FluidKineticGeneratorRecipes.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * This file is part of GoodTime-Industrial, licensed under MIT License (MIT). - * - * Copyright (c) 2015 GoodTime Studio - * Copyright (c) contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package com.mcgoodtime.productionline.recipes; - -import ic2.api.recipe.MachineRecipe; -import ic2.api.recipe.MachineRecipeResult; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.fluids.FluidStack; - -import java.util.List; - -/** - * Created by BestOwl on 2015.11.8.0008. - * - * @author BestOwl - */ -public class FluidKineticGeneratorRecipes extends RecipeBase { - public static final FluidKineticGeneratorRecipes instance = new FluidKineticGeneratorRecipes(); - - private FluidKineticGeneratorRecipes() { - this.register("lava", 10); - this.register("oil", 10); - this.register("fuel", 5); - this.register("biomass", 20); - this.register("bioethanol", 10); - this.register("ic2biogas", 10); - } - - public void register(String fluidName, int amount) { - if (FluidRegistry.getFluid(fluidName) != null) { - processList.add(new RecipePartFluidKineticGenerator(FluidRegistry.getFluidStack(fluidName, amount))); - } - } - - /** - * Returns the process result of an item. - * - */ - @Override - public ItemStack getProcessResult(ItemStack itemStack) { - return null; - } - - /** - * @return Whether this item can process - */ - @Override - public boolean canProcess(ItemStack itemStack) {/* - FluidStack fluidStack = FluidContainerRegistry.getFluidForFilledItem(itemStack); - if (fluidStack != null) { - for (RecipePart recipePart : this.processList) { - if (((RecipePartFluidKineticGenerator) recipePart).fluidStack.isFluidEqual(fluidStack)) { - return true; - } - } - } - */ - return false; - } - - /** - * Get required amount of process - * - * @param itemStack Input item - * @return Required amount of process - */ - @Override - public int getRequiredProcessAmount(ItemStack itemStack) { - return 1; - } - - @Override - public List getProcessRecipesList() { - return this.processList; - } - - /** - * @param itemStack Input item - */ - @Override - public RecipePart getRecipePart(ItemStack itemStack) { - return null; - } - - @Override - public MachineRecipeResult apply(Object o, boolean b) { - return null; - } - - @Override - public Iterable getRecipes() { - return null; - } - - public class RecipePartFluidKineticGenerator extends RecipePart { - - public FluidStack fluidStack; - - public RecipePartFluidKineticGenerator(FluidStack fluidStack) { - this.fluidStack = fluidStack; - } - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/recipes/HeatDryerRecipes.java b/src/main/java/com/mcgoodtime/productionline/recipes/HeatDryerRecipes.java deleted file mode 100644 index 5543372..0000000 --- a/src/main/java/com/mcgoodtime/productionline/recipes/HeatDryerRecipes.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * This file is part of GoodTime-Industrial, licensed under MIT License (MIT). - * - * Copyright (c) 2015 GoodTime Studio - * Copyright (c) contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package com.mcgoodtime.productionline.recipes; - -import com.mcgoodtime.productionline.init.PLBlocks; -import net.minecraft.item.ItemStack; - -/** - * Created by JAVA0 on 2015/11/18. - * - */ -public class HeatDryerRecipes extends RecipeBase { - public static final HeatDryerRecipes instance = new HeatDryerRecipes(); - - private HeatDryerRecipes() { - this.register(new ItemStack(PLBlocks.waterHyacinth, 4), PLBlocks.dehydratedWaterHyacinthblock); - } - - public void register(ItemStack input, ItemStack output) { - processList.add(new RecipePart(input, output)); - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/recipes/PackagerRecipes.java b/src/main/java/com/mcgoodtime/productionline/recipes/PackagerRecipes.java deleted file mode 100644 index 7dc457c..0000000 --- a/src/main/java/com/mcgoodtime/productionline/recipes/PackagerRecipes.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * - * This file is part of ProductionLine, licensed under MIT License (MIT). - * - * Copyright (c) 2017 GoodTime Studio - * Copyright (c) contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -package com.mcgoodtime.productionline.recipes; - -import com.mcgoodtime.productionline.init.PLItems; -import net.minecraft.item.ItemStack; - -/** - * Created by BestOwl on 2017/3/25. - * List of Packager's Recipes - * - * @author BestOwl - */ -public class PackagerRecipes extends RecipeBase { - - public static final PackagerRecipes instance = new PackagerRecipes(); - - private PackagerRecipes() { - register(new ItemStack(PLItems.salt, 9), new ItemStack(PLItems.packagedSalt)); - } - - public void register(ItemStack input, ItemStack output) { - processList.add(new RecipePart(input, output)); - } - } diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/TileAdvSolar.java b/src/main/java/com/mcgoodtime/productionline/tiles/TileAdvSolar.java deleted file mode 100644 index a415d04..0000000 --- a/src/main/java/com/mcgoodtime/productionline/tiles/TileAdvSolar.java +++ /dev/null @@ -1,150 +0,0 @@ -package com.mcgoodtime.productionline.tiles; - -import com.mcgoodtime.productionline.init.PLItems; -import com.mcgoodtime.productionline.tiles.tileslots.TileSlot; -import com.mcgoodtime.productionline.tiles.tileslots.TileSlotCharge; -import ic2.api.energy.tile.IEnergyAcceptor; -import ic2.api.tile.IWrenchable; -import net.minecraft.block.state.IBlockState; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.EnumFacing; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.oredict.OreDictionary; - -import java.util.Collections; -import java.util.List; - -/** - * Created by BestOwl on 2015.12.5.0005. - * - * @author BestOwl - */ -public class TileAdvSolar extends TileElectricGenerator implements IWrenchable { - - private int timer; - public boolean underSun = false; - public boolean hasLens = false; - - public TileAdvSolar() { - super(2, 200); - this.powerTick = 0; - this.tileSlots.add(new TileSlot(this, TileSlot.SlotMode.NULL)); - this.tileSlots.add(new TileSlotCharge(this, TileSlot.SlotMode.NULL)); - } - - @Override - public void update() { - super.update(); - if (!this.world.isRemote) { - boolean needUpdate = false; - - this.updateLensStatus(); - ItemStack stack = this.getStackInSlot(0); - if (stack != null) { - if (stack.isItemEqual(PLItems.advSolarLensUnit)) { - this.powerTick = 3; - } - else if (stack.isItemEqual(PLItems.advSolarLensGroup)) { - this.powerTick = 9; - } - else if (stack.isItemEqual(PLItems.advSolarLensCluster)) { - this.powerTick = 81; - } - else { - this.powerTick = 0; - } - } else { - this.powerTick = 0; - } - - this.timer++; - if ((this.timer % 120) == 0) { - this.timer = 0; - this.updateSunVisible(); - } - - if (this.hasLens && this.underSun) { - this.energy += this.powerTick; - } - if (this.energy > this.maxEnergy) { - this.energy = this.maxEnergy; - } - - if (this.energy > 0) { - double amount = ((TileSlotCharge) this.tileSlots.get(1)).charge(this.energy); - this.energy -= amount; - if (amount > 0) { - needUpdate = true; - } - } - - if (needUpdate) { - this.markDirty(); - } - } - } - - public void updateSunVisible() { - int skylight = this.world.getBlockLightOpacity(new BlockPos(pos.getX(), 255, pos.getZ())); - boolean hasSky = this.world.provider.hasSkyLight(); - boolean canSeeSky = this.world.canSeeSky(pos.up()); - boolean dry = !this.world.getBiomeForCoordsBody(pos).canRain(); - this.underSun = skylight > 4 && hasSky && canSeeSky && (dry || !this.world.isRaining() && !this.world.isThundering()); - } - - public void updateLensStatus() { - this.hasLens = false; - if (this.getStackInSlot(0) != null) { - for (ItemStack stack : OreDictionary.getOres("advSolarLens")) { - if (stack.isItemEqual(this.getStackInSlot(0))) { - this.hasLens = true; - break; - } - } - } - } - - /** - * Determine if this emitter can emit energy to an adjacent receiver. - *

- * The TileEntity in the receiver parameter is what was originally added to the energy net, - * which may be normal in-world TileEntity, a delegate or an IMetaDelegate. - * - * @param receiver receiver, may also be null or an IMetaDelegate - * @param direction direction the receiver is from the emitter - * @return Whether energy should be emitted - */ - @Override - public boolean emitsEnergyTo(IEnergyAcceptor receiver, EnumFacing direction) { - return direction != EnumFacing.UP; - } - - @Override - public String getName() { - return "AdvSolar"; - } - - @Override - public EnumFacing getFacing(World world, BlockPos blockPos) { - return this.facing; - } - - @Override - public boolean setFacing(World world, BlockPos blockPos, EnumFacing enumFacing, EntityPlayer entityPlayer) { - setFacing(enumFacing); - return true; - } - - @Override - public boolean wrenchCanRemove(World world, BlockPos blockPos, EntityPlayer entityPlayer) { - return true; - } - - @Override - public List getWrenchDrops(World world, BlockPos blockPos, IBlockState iBlockState, TileEntity tileEntity, EntityPlayer entityPlayer, int i) { - return Collections.singletonList(new ItemStack(iBlockState.getBlock(), 1, iBlockState.getBlock().getMetaFromState(iBlockState))); - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/TileCarbonizeFurnace.java b/src/main/java/com/mcgoodtime/productionline/tiles/TileCarbonizeFurnace.java deleted file mode 100644 index 0f16711..0000000 --- a/src/main/java/com/mcgoodtime/productionline/tiles/TileCarbonizeFurnace.java +++ /dev/null @@ -1,187 +0,0 @@ -/* - * This file is part of GoodTime-Industrial, licensed under MIT License (MIT). - * - * Copyright (c) 2015 GoodTime Studio - * Copyright (c) contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -package com.mcgoodtime.productionline.tiles; - -import com.mcgoodtime.productionline.recipes.CarbonizeFurnaceRecipes; -import com.mcgoodtime.productionline.recipes.RecipePart; -import com.mcgoodtime.productionline.tiles.tileslots.*; -import ic2.api.energy.tile.IEnergyEmitter; -import ic2.api.upgrade.IUpgradeItem; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.EnumFacing; - -/** - * CarbonizeFurnace TileEntity - * - * @author BestOwl - */ -public class TileCarbonizeFurnace extends TileMachine { - - /** The number of ticks that the furnace will keep burning */ - public double requireEnergy; - /** The number of ticks that the current item has been process for */ - public int progress; - public int requireAmount; - - public TileCarbonizeFurnace() { - super(3, 300, 1); - this.tileSlots.add(new TileSlotInput(this, CarbonizeFurnaceRecipes.instance)); - this.tileSlots.add(new TileSlotDischarge(this, TileSlot.SlotMode.NULL)); - this.tileSlots.add(new TileSlotOutput(this, TileSlot.SlotMode.OUTPUT)); - this.tileSlots.add(new TileSlotOutput(this, TileSlot.SlotMode.OUTPUT)); - this.tileSlots.add(new TileSlotUpgrade(this, TileSlot.SlotMode.NULL)); - this.tileSlots.add(new TileSlotUpgrade(this, TileSlot.SlotMode.NULL)); - } - - @Override - public String getName() { - return "CarbonizeFurnace"; - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - this.requireEnergy = nbt.getShort("requireEnergy"); - this.progress = nbt.getShort("Progress"); - } - - @Override - public NBTTagCompound writeToNBT(NBTTagCompound nbt) { - nbt = super.writeToNBT(nbt); - nbt.setShort("requireEnergy", (short) requireEnergy); - nbt.setShort("Progress", (short) progress); - return nbt; - } - - @Override - public void update() { - super.update(); - if (!this.world.isRemote) { - boolean needUpdate = false; - - if (canProcess() && this.energy >= this.energyTick) { - RecipePart recipePart = CarbonizeFurnaceRecipes.instance.getRecipePart(this.getStackInSlot(0)); - this.requireEnergy = ((CarbonizeFurnaceRecipes.RecipePartCarbonizeFurnace) recipePart).requiresEnergy; - this.setActive(true); - this.energy -= this.energyTick; - this.progress += this.energyTick; - - if (this.progress >= this.requireEnergy) { - this.requireEnergy = 0; - this.progress = 0; - this.processItem(); - needUpdate = true; - } - } else { - this.setActive(false); - this.requireEnergy = 0; - this.progress = 0; - } - - for(int i = 4; i < 6; i++) { - ItemStack stack = this.getStackInSlot(i); - if(stack != null && stack.getItem() instanceof IUpgradeItem && ((IUpgradeItem)stack.getItem()).onTick(stack, this)) { - needUpdate = true; - } - } - - if (needUpdate) { - this.markDirty(); - } - } - } - - /** - * @return Whether this Item can process - */ - private boolean canProcess() { - if (this.getStackInSlot(0) == null) { - return false; - } else { - ItemStack stack = this.getStackInSlot(0); - ItemStack outputItemStack = CarbonizeFurnaceRecipes.instance.getProcessResult(stack); - if (outputItemStack != null) { - if (!(stack.getCount() >= CarbonizeFurnaceRecipes.instance.getRequiredProcessAmount(stack))) { - return false; - } - - if (this.getStackInSlot(2) == null || this.getStackInSlot(3) == null) { - return true; - } else { - - if (this.getStackInSlot(2).isItemEqual(outputItemStack)) { - int result = this.getStackInSlot(2).getCount() + outputItemStack.getCount(); - if (result <= getInventoryStackLimit() && result <= this.getStackInSlot(2).getMaxStackSize()) { - return true; - } - } - - if (this.getStackInSlot(3).isItemEqual(outputItemStack)) { - int result = this.getStackInSlot(3).getCount() + outputItemStack.getCount(); - if (result <= getInventoryStackLimit() && result <= this.getStackInSlot(3).getMaxStackSize()) { - return true; - } - } - - } - - } - return false; - } - } - - public void processItem() { - if (this.canProcess()) { - ItemStack outputItem = CarbonizeFurnaceRecipes.instance.getProcessResult(this.getStackInSlot(0)); - - if (this.getStackInSlot(2) == null) { - this.setInventorySlotContents(2, outputItem.copy()); - } - else if (this.getStackInSlot(2).isItemEqual(outputItem)) { - this.getStackInSlot(2).grow(outputItem.getCount()); - } - else if (this.getStackInSlot(3) == null) { - this.setInventorySlotContents(3, outputItem.copy()); - } - else if (this.getStackInSlot(3).isItemEqual(outputItem)) { - this.getStackInSlot(3).grow(outputItem.getCount()); - } - - this.getStackInSlot(0).shrink(CarbonizeFurnaceRecipes.instance.getRequiredProcessAmount(this.getStackInSlot(0))); - - if (this.getStackInSlot(0).getCount() <= 0) { - this.setInventorySlotContents(0, null); - } - } - } - - @Override - public boolean acceptsEnergyFrom(IEnergyEmitter iEnergyEmitter, EnumFacing enumFacing) { - return enumFacing != EnumFacing.UP && super.acceptsEnergyFrom(iEnergyEmitter, enumFacing); - } - -} diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/TileCutter.java b/src/main/java/com/mcgoodtime/productionline/tiles/TileCutter.java deleted file mode 100644 index 28a2dad..0000000 --- a/src/main/java/com/mcgoodtime/productionline/tiles/TileCutter.java +++ /dev/null @@ -1,37 +0,0 @@ -///* -// * -// * This file is part of ProductionLine, licensed under MIT License (MIT). -// * -// * Copyright (c) 2017 GoodTime Studio -// * Copyright (c) contributors -// * -// * Permission is hereby granted, free of charge, to any person obtaining a copy -// * of this software and associated documentation files (the "Software"), to deal -// * in the Software without restriction, including without limitation the rights -// * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// * copies of the Software, and to permit persons to whom the Software is -// * furnished to do so, subject to the following conditions: -// * -// * The above copyright notice and this permission notice shall be included in -// * all copies or substantial portions of the Software. -// * -// * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// * THE SOFTWARE. -// */ -// -//package com.mcgoodtime.productionline.tiles; -// -///** -// * Created by BestOwl on 2017-05-14 21:50 -// * Cutter TileEntity -// * -// * @author BestOwl -// */ -//public class TileCutter extends TileMachine { -// -//} \ No newline at end of file diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/TileFluidKineticGenerator.java b/src/main/java/com/mcgoodtime/productionline/tiles/TileFluidKineticGenerator.java deleted file mode 100644 index 644d6e0..0000000 --- a/src/main/java/com/mcgoodtime/productionline/tiles/TileFluidKineticGenerator.java +++ /dev/null @@ -1,189 +0,0 @@ -/* - * This file is part of GoodTime-Industrial, licensed under MIT License (MIT). - * - * Copyright (c) 2015 GoodTime Studio - * Copyright (c) contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -package com.mcgoodtime.productionline.tiles; - -import com.mcgoodtime.productionline.recipes.FluidKineticGeneratorRecipes; -import com.mcgoodtime.productionline.recipes.RecipePart; -import com.mcgoodtime.productionline.tiles.tileslots.TileSlot; -import com.mcgoodtime.productionline.tiles.tileslots.TileSlotFluidInput; -import com.mcgoodtime.productionline.tiles.tileslots.TileSlotOutput; -import ic2.api.energy.tile.IKineticSource; -import ic2.api.tile.IWrenchable; -import net.minecraft.block.state.IBlockState; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.EnumFacing; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidTank; -import net.minecraftforge.fluids.capability.CapabilityFluidHandler; - -import java.util.Collections; -import java.util.List; - -/** - * The BlockFluidKineticGenerator tile. - * - * @author liach - */ -public class TileFluidKineticGenerator extends TileContainer implements IKineticSource, IWrenchable { - - private int timer; - public final int kuOutput = 32; - public FluidTank fluidTank = new FluidTank(10000); - - public TileFluidKineticGenerator() { - this.tileSlots.add(new TileSlotFluidInput(this, FluidKineticGeneratorRecipes.instance, this.fluidTank)); - this.tileSlots.add(new TileSlotOutput(this)); - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - this.fluidTank.readFromNBT(nbt.getCompoundTag("fluidTank")); - } - - @Override - public NBTTagCompound writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - - NBTTagCompound fluidTag = new NBTTagCompound(); - this.fluidTank.writeToNBT(fluidTag); - nbt.setTag("fluidTank", fluidTag); - return nbt; - } - - @Override - public void update() { - if (!this.world.isRemote) { - boolean needUpdate = false; - - if (this.fluidTank.getFluidAmount() <= this.fluidTank.getCapacity()) { - for (TileSlot tileSlot : this.tileSlots) { - if (tileSlot instanceof TileSlotFluidInput) { - ((TileSlotFluidInput) tileSlot).drainToTank(); - needUpdate = true; - } - } - } - - - if (this.fluidTank.getFluid() != null && this.maxrequestkineticenergyTick(this.facing) > 0) { - int amount = 0; - for (RecipePart recipePart : FluidKineticGeneratorRecipes.instance.getProcessRecipesList()) { - FluidStack fluidStack = ((FluidKineticGeneratorRecipes.RecipePartFluidKineticGenerator) recipePart).fluidStack; - if (fluidStack.isFluidEqual(this.fluidTank.getFluid())) { - amount = fluidStack.amount; - - } - } - - if (this.fluidTank.getFluidAmount() >= amount) { - this.setActive(true); - - if (this.timer == 20) { - this.timer = 0; - this.fluidTank.getFluid().amount -= amount; - } - this.timer++; - - } else { - this.setActive(false); - this.timer = 0; - } - - if (this.fluidTank.getFluidAmount() < 0) { - this.fluidTank.getFluid().amount = 0; - } - - } - else { - this.setActive(false); - } - - if (needUpdate) { - this.markDirty(); - } - } - } - - @Override - public String getName() { - return "FluidKineticGenerator"; - } - - @Override - public boolean hasCapability(Capability capability, EnumFacing facing) { - return capability == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY || super.hasCapability(capability, facing); - } - - @Override - public T getCapability(Capability capability, EnumFacing facing) { - if (capability == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY) { - return (T) fluidTank; - } - return super.getCapability(capability, facing); - } - - @Override - public int maxrequestkineticenergyTick(EnumFacing from) { - return from != this.facing ? 0 : this.kuOutput; - } - - @Override - public int requestkineticenergy(EnumFacing from, int i) { - return from != this.facing ? 0 : (this.fluidTank.getFluidAmount() > 0 ? Math.min(this.kuOutput, i) : 0); - } - - @Override - public EnumFacing getFacing(World world, BlockPos pos) { - return facing; - } - - @Override - public boolean setFacing(World world, BlockPos pos, EnumFacing facing, EntityPlayer player) { - if (facing != this.facing) { - this.facing = facing; - return true; - } - return false; - } - - @Override - public boolean wrenchCanRemove(World world, BlockPos blockPos, EntityPlayer entityPlayer) { - return true; - } - - @Override - public List getWrenchDrops(World world, BlockPos blockPos, IBlockState iBlockState, TileEntity tileEntity, EntityPlayer entityPlayer, int i) { - return Collections.singletonList(new ItemStack(iBlockState.getBlock(), 1, iBlockState.getBlock().getMetaFromState(iBlockState))); - } - -} diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/TileHeatDryer.java b/src/main/java/com/mcgoodtime/productionline/tiles/TileHeatDryer.java deleted file mode 100644 index eb865cf..0000000 --- a/src/main/java/com/mcgoodtime/productionline/tiles/TileHeatDryer.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * This file is part of GoodTime-Industrial, licensed under MIT License (MIT). - * - * Copyright (c) 2015 GoodTime Studio - * Copyright (c) contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -package com.mcgoodtime.productionline.tiles; - -import com.mcgoodtime.productionline.recipes.HeatDryerRecipes; -import com.mcgoodtime.productionline.tiles.tileslots.*; -import ic2.api.upgrade.IUpgradeItem; -import net.minecraft.item.ItemStack; - -/** - * Created by Java0 on 2015/11/18. - * - */ -public class TileHeatDryer extends TileMachine { - - public final int requireEnergy = 500; - public int progress; - - public TileHeatDryer() { - super(3, 300, 1); - this.tileSlots.add(new TileSlotInput(this, HeatDryerRecipes.instance)); - this.tileSlots.add(new TileSlotDischarge(this, TileSlot.SlotMode.NULL)); - this.tileSlots.add(new TileSlotOutput(this)); - this.tileSlots.add(new TileSlotUpgrade(this, TileSlot.SlotMode.NULL)); - this.tileSlots.add(new TileSlotUpgrade(this, TileSlot.SlotMode.NULL)); - } - - @Override - public String getName() { - return "HeatDryer"; - } - - @Override - public void update() { - super.update(); - if (!this.world.isRemote) { - boolean needUpdate = false; - - if (this.canProcess() && this.energy >= this.energyTick) { - this.setActive(true); - this.energy -= this.energyTick; - this.progress += this.energyTick; - - if (this.progress >= this.requireEnergy) { - this.progress = 0; - this.processItem(); - needUpdate = true; - } - } else { - this.setActive(false); - this.progress = 0; - } - - for (TileSlot tileSlot : this.tileSlots) { - if (tileSlot instanceof TileSlotUpgrade) { - ItemStack stack = tileSlot.getStack(); - if(stack != null && stack.getItem() instanceof IUpgradeItem && ((IUpgradeItem)stack.getItem()).onTick(stack, this)) { - needUpdate = true; - } - } - } - - if (needUpdate) { - this.markDirty(); - } - } - } - - private boolean canProcess() { - if (this.getStackInSlot(0) == null) { - return false; - } else { - ItemStack itemStack = HeatDryerRecipes.instance.getProcessResult(this.getStackInSlot(0)); - if (itemStack != null) { - if (!(itemStack.getCount() >= HeatDryerRecipes.instance.getRequiredProcessAmount(itemStack))) { - return false; - } - if (this.getStackInSlot(2) == null) { - return true; - } else { - if (this.getStackInSlot(2).isItemEqual(itemStack)) { - int result = this.getStackInSlot(2).getCount() + itemStack.getCount(); - if (result <= getInventoryStackLimit() && result <= this.getStackInSlot(2).getMaxStackSize()) { - return true; - } - } - } - - } - return false; - } - } - - public void processItem() { - if (this.canProcess()) { - ItemStack outputItem = HeatDryerRecipes.instance.getProcessResult(this.getStackInSlot(0)); - - if (this.getStackInSlot(2) == null) { - this.setInventorySlotContents(2, outputItem.copy()); - } - else if (this.getStackInSlot(2).isItemEqual(outputItem)) { - this.getStackInSlot(2).grow(outputItem.getCount()); - } - - this.getStackInSlot(0).shrink(HeatDryerRecipes.instance.getRequiredProcessAmount(this.getStackInSlot(0))); - - if (this.getStackInSlot(0).getCount() <= 0) { - this.setInventorySlotContents(0, null); - } - } - } - -} \ No newline at end of file diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/TileLiquidExtractor.java b/src/main/java/com/mcgoodtime/productionline/tiles/TileLiquidExtractor.java deleted file mode 100644 index 69e1239..0000000 --- a/src/main/java/com/mcgoodtime/productionline/tiles/TileLiquidExtractor.java +++ /dev/null @@ -1,37 +0,0 @@ -///* -// * -// * This file is part of ProductionLine, licensed under MIT License (MIT). -// * -// * Copyright (c) 2017 GoodTime Studio -// * Copyright (c) contributors -// * -// * Permission is hereby granted, free of charge, to any person obtaining a copy -// * of this software and associated documentation files (the "Software"), to deal -// * in the Software without restriction, including without limitation the rights -// * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// * copies of the Software, and to permit persons to whom the Software is -// * furnished to do so, subject to the following conditions: -// * -// * The above copyright notice and this permission notice shall be included in -// * all copies or substantial portions of the Software. -// * -// * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// * THE SOFTWARE. -// */ -// -//package com.mcgoodtime.productionline.tiles; -// -///** -// * Created by BestOwl on 2017-05-14 21:50 -// * LiquidExtractor TileEntity -// * -// * @author BestOwl -// */ -//public class TileLiquidExtractor extends TileMachine { -// -//} \ No newline at end of file diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/TileMixer.java b/src/main/java/com/mcgoodtime/productionline/tiles/TileMixer.java deleted file mode 100644 index 7fcf893..0000000 --- a/src/main/java/com/mcgoodtime/productionline/tiles/TileMixer.java +++ /dev/null @@ -1,37 +0,0 @@ -///* -// * -// * This file is part of ProductionLine, licensed under MIT License (MIT). -// * -// * Copyright (c) 2017 GoodTime Studio -// * Copyright (c) contributors -// * -// * Permission is hereby granted, free of charge, to any person obtaining a copy -// * of this software and associated documentation files (the "Software"), to deal -// * in the Software without restriction, including without limitation the rights -// * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// * copies of the Software, and to permit persons to whom the Software is -// * furnished to do so, subject to the following conditions: -// * -// * The above copyright notice and this permission notice shall be included in -// * all copies or substantial portions of the Software. -// * -// * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// * THE SOFTWARE. -// */ -// -//package com.mcgoodtime.productionline.tiles; -// -///** -// * Created by BestOwl on 2017-05-14 21:50 -// * TileMixer TileEntity -// * -// * @author BestOwl -// */ -//public class TileMixer extends TileMachine { -// -//} \ No newline at end of file diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/TilePackager.java b/src/main/java/com/mcgoodtime/productionline/tiles/TilePackager.java deleted file mode 100644 index c4a9ba9..0000000 --- a/src/main/java/com/mcgoodtime/productionline/tiles/TilePackager.java +++ /dev/null @@ -1,149 +0,0 @@ -/* - * This file is part of GoodTime-Industrial, licensed under MIT License (MIT). - * - * Copyright (c) 2017 GoodTime Studio - * Copyright (c) contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package com.mcgoodtime.productionline.tiles; - -import com.mcgoodtime.productionline.recipes.PackagerRecipes; -import com.mcgoodtime.productionline.tiles.tileslots.*; -import ic2.api.upgrade.IUpgradeItem; -import net.minecraft.item.ItemStack; - -import javax.annotation.Nonnull; - -/** - * Created by BestOwl on 2017/3/25. - * - * @author BestOwl - */ -public class TilePackager extends TileMachine { - - public final int requireEnergy = 500; - public int progress; - - public TilePackager() { - super(3, 300, 1); - this.tileSlots.add(new TileSlotInput(this, PackagerRecipes.instance)); - this.tileSlots.add(new TileSlotPackage(this)); - this.tileSlots.add(new TileSlotDischarge(this, TileSlot.SlotMode.NULL)); - this.tileSlots.add(new TileSlotOutput(this)); - this.tileSlots.add(new TileSlotUpgrade(this, TileSlot.SlotMode.NULL)); - this.tileSlots.add(new TileSlotUpgrade(this, TileSlot.SlotMode.NULL)); - } - - @Nonnull - @Override - public String getName() { - return "Packager"; - } - - @Override - public void update() { - super.update(); - - if (!this.world.isRemote) { - boolean needUpdate = false; - - if (this.canProcess() && this.energy >= this.energyTick) { - this.setActive(true); - this.energy -= this.energyTick; - this.progress += this.energyTick; - - if (this.progress >= this.requireEnergy) { - this.progress = 0; - this.processItem(); - needUpdate = true; - } - } else { - this.setActive(false); - this.progress = 0; - } - - for (TileSlot tileSlot : this.tileSlots) { - if (tileSlot instanceof TileSlotUpgrade) { - ItemStack stack = tileSlot.getStack(); - if(stack != null && stack.getItem() instanceof IUpgradeItem && ((IUpgradeItem)stack.getItem()).onTick(stack, this)) { - needUpdate = true; - } - } - } - - if (needUpdate) { - this.markDirty(); - } - } - } - - private boolean canProcess() { - if (this.getStackInSlot(0) == null) { - return false; - } else { - ItemStack input = this.getStackInSlot(0); - ItemStack outputStack = PackagerRecipes.instance.getProcessResult(input); - if (outputStack != null) { - if (!(input.getCount() >= PackagerRecipes.instance.getRequiredProcessAmount(input))) { - return false; - } - - if (this.getStackInSlot(1) != null) { // check package - if (this.getStackInSlot(3) == null) { // output slot - return true; - } else { - if (this.getStackInSlot(3).isItemEqual(outputStack)) { - int result = this.getStackInSlot(3).getCount() + outputStack.getCount(); - if (result <= getInventoryStackLimit() && result <= this.getStackInSlot(3).getMaxStackSize()) { - return true; - } - } - } - } - } - return false; - } - } - - public void processItem() { - if (this.canProcess()) { - ItemStack outputItem = PackagerRecipes.instance.getProcessResult(this.getStackInSlot(0)); - - if (this.getStackInSlot(3) == null) { - this.setInventorySlotContents(3, outputItem.copy()); - } - else if (this.getStackInSlot(3).isItemEqual(outputItem)) { - this.getStackInSlot(3).grow(outputItem.getCount()); - } - - this.getStackInSlot(0).shrink(PackagerRecipes.instance.getRequiredProcessAmount(this.getStackInSlot(0))); - - if (this.getStackInSlot(0).getCount() <= 0) { - this.setInventorySlotContents(0, null); - } - - this.getStackInSlot(1).shrink(1); - - if (this.getStackInSlot(1).getCount() <= 0) { - this.setInventorySlotContents(1, null); - } - } - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/eustorage/TileCSEU.java b/src/main/java/com/mcgoodtime/productionline/tiles/eustorage/TileCSEU.java deleted file mode 100644 index 19ce415..0000000 --- a/src/main/java/com/mcgoodtime/productionline/tiles/eustorage/TileCSEU.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.mcgoodtime.productionline.tiles.eustorage; - -/** - * Created by BestOwl on 2015.11.29.0029. - * - * @author BestOwl - */ -public class TileCSEU extends TileEUStorage { - - public TileCSEU() { - super(2, (int) 720E3); - } - - @Override - public String getName() { - return "CSEU"; - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/eustorage/TileEUStorage.java b/src/main/java/com/mcgoodtime/productionline/tiles/eustorage/TileEUStorage.java deleted file mode 100644 index 5fbe711..0000000 --- a/src/main/java/com/mcgoodtime/productionline/tiles/eustorage/TileEUStorage.java +++ /dev/null @@ -1,214 +0,0 @@ -package com.mcgoodtime.productionline.tiles.eustorage; - -import com.mcgoodtime.productionline.tiles.TileElectricContainer; -import com.mcgoodtime.productionline.tiles.tileslots.TileSlot; -import com.mcgoodtime.productionline.tiles.tileslots.TileSlotCharge; -import ic2.api.energy.EnergyNet; -import ic2.api.energy.event.EnergyTileLoadEvent; -import ic2.api.energy.event.EnergyTileUnloadEvent; -import ic2.api.energy.tile.IEnergyAcceptor; -import ic2.api.energy.tile.IEnergyEmitter; -import ic2.api.energy.tile.IEnergySource; -import ic2.api.tile.IEnergyStorage; -import ic2.api.tile.IWrenchable; -import ic2.core.init.MainConfig; -import ic2.core.util.ConfigUtil; -import ic2.core.util.StackUtil; -import net.minecraft.block.state.IBlockState; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.EnumFacing; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; - -import java.util.Collections; -import java.util.List; - -/** - * Created by BestOwl on 2015.11.27.0027. - * - * @author BestOwl - */ -public abstract class TileEUStorage extends TileElectricContainer implements IEnergySource, IEnergyStorage, IWrenchable { - - public RedstoneMode redstoneMode; - public boolean isRedstonePowered = false; - - public TileEUStorage(int tier, int maxStorage) { - super((int) EnergyNet.instance.getPowerFromTier(tier), maxStorage, tier); - this.redstoneMode = RedstoneMode.NONE; -// if (!(this instanceof TileParallelSpaceSU)) { -// this.tileSlots.add(new TileSlotDischarge(this, TileSlot.SlotMode.NULL)); -// this.tileSlots.add(new TileSlotCharge(this, TileSlot.SlotMode.INPUT)); -// } - } - - @Override - public void update() { - super.update(); - if (this.energy > 0) { - for (TileSlot tileSlot : this.tileSlots) { - if (tileSlot instanceof TileSlotCharge) { - double amount = ((TileSlotCharge) tileSlot).charge(this.energy); - this.energy -= amount; - if (amount > 0) { - this.markDirty(); - } - } - } - } - - if (this.redstoneMode == RedstoneMode.OUTPUT_WHEN_REDSTONEPOWER_AND_FULLENEGRY || this.redstoneMode == RedstoneMode.NO_OUTPUT_WHEN_REDSTONEPOWER) { - this.isRedstonePowered = this.world.isBlockIndirectlyGettingPowered(this.pos) > 0; - } - - if (this.shouldEmitRedstonePower()) { - //this.world.notifyBlockOfStateChange(this.pos, this.world.getBlockState(this.pos).getBlock()); - } - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - this.redstoneMode = RedstoneMode.values()[nbt.getShort("redstoneMode")]; - } - - @Override - public NBTTagCompound writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt).setShort("redstoneMode", (short) this.redstoneMode.ordinal()); - return nbt; - } - - @Override - public boolean acceptsEnergyFrom(IEnergyEmitter iEnergyEmitter, EnumFacing enumFacing) { - return enumFacing != this.facing; - } - - @Override - public boolean emitsEnergyTo(IEnergyAcceptor iEnergyAcceptor, EnumFacing enumFacing) { - return enumFacing == this.facing; - } - - @Override - public double getOfferedEnergy() { - return this.energy < (double)this.energyTick || this.redstoneMode == RedstoneMode.NO_OUTPUT_WHEN_REDSTONEPOWER - && this.isRedstonePowered || this.redstoneMode == RedstoneMode.OUTPUT_WHEN_REDSTONEPOWER_AND_FULLENEGRY && - this.isRedstonePowered && this.energy < (double)this.maxEnergy ? 0.0D : Math.min(this.energy, this.energyTick); - } - - @Override - public void drawEnergy(double amount) { - this.energy -= amount; - } - - @Override - public int getSourceTier() { - return this.tier; - } - - @Override - public boolean setFacing(World world, BlockPos blockPos, EnumFacing side, EntityPlayer entityPlayer) { - if (side == this.facing) { - return false; - } - setFacing(side); - return true; - } - - @Override - public EnumFacing getFacing(World world, BlockPos blockPos) { - return this.facing; - } - - @Override - public void setFacing(EnumFacing facing) { - MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this)); - super.setFacing(facing); - MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this)); - } - - @Override - public boolean wrenchCanRemove(World world, BlockPos blockPos, EntityPlayer entityPlayer) { - return true; - } - - @Override - public List getWrenchDrops(World world, BlockPos blockPos, IBlockState iBlockState, TileEntity tileEntity, EntityPlayer entityPlayer, int i) { - ItemStack ret = new ItemStack(iBlockState.getBlock(), 1, - iBlockState.getBlock().getMetaFromState(iBlockState)); - float energyRetainedInStorageBlockDrops = ConfigUtil.getFloat(MainConfig.get(), "balance/energyRetainedInStorageBlockDrops"); - if (energyRetainedInStorageBlockDrops > 0) { - NBTTagCompound nbt = StackUtil.getOrCreateNbtData(ret); - nbt.setDouble("energy", this.energy * (double)energyRetainedInStorageBlockDrops); - } - return Collections.singletonList(ret); - } - - public boolean shouldEmitRedstonePower() { - boolean shouldEmitRedstone = false; - switch(this.redstoneMode) { - case EMIT_WHEN_FULL_ENERGY: - shouldEmitRedstone = this.energy >= (double) (this.maxEnergy - this.energyTick * 20); - break; - case EMIT_WHEN_HAS_ENERGY: - shouldEmitRedstone = this.energy > (double) this.energyTick && this.energy < (double)this.maxEnergy; - break; - case EMIT_WHEN_NOFULL_ENERGY: - shouldEmitRedstone = this.energy > (double) this.energyTick && this.energy < (double)this.maxEnergy || this.energy < (double) this.energyTick; - break; - case EMIT_WHEN_NULL_ENERGY: - shouldEmitRedstone = this.energy < (double) this.energyTick; - } - - return shouldEmitRedstone; - } - - @Override - public int getStored() { - return (int) this.energy; - } - - @Override - public void setStored(int energy) { - this.energy = energy; - } - - @Override - public int addEnergy(int amount) { - this.energy += amount; - return amount; - } - - @Override - public int getCapacity() { - return this.maxEnergy; - } - - @Override - public int getOutput() { - return this.energyTick; - } - - @Override - public double getOutputEnergyUnitsPerTick() { - return this.energyTick; - } - - @Override - public boolean isTeleporterCompatible(EnumFacing enumFacing) { - return true; - } - - public enum RedstoneMode { - NONE, - EMIT_WHEN_FULL_ENERGY, - EMIT_WHEN_HAS_ENERGY, - EMIT_WHEN_NOFULL_ENERGY, - EMIT_WHEN_NULL_ENERGY, - NO_OUTPUT_WHEN_REDSTONEPOWER, - OUTPUT_WHEN_REDSTONEPOWER_AND_FULLENEGRY - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/eustorage/TileEVSU.java b/src/main/java/com/mcgoodtime/productionline/tiles/eustorage/TileEVSU.java deleted file mode 100644 index 9d7b5a5..0000000 --- a/src/main/java/com/mcgoodtime/productionline/tiles/eustorage/TileEVSU.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * This file is part of GoodTime-Industrial, licensed under MIT License (MIT). - * - * Copyright (c) 2015 GoodTime Studio - * Copyright (c) contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -package com.mcgoodtime.productionline.tiles.eustorage; - -/* - * Created by suhao on 2015-6-3-0003. - */ -public class TileEVSU extends TileEUStorage { - - public TileEVSU() { - super(5, (int) 1E8); - } - - @Override - public String getName() { - return "EVSU"; - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/eustorage/TileParallelSpaceSU.java b/src/main/java/com/mcgoodtime/productionline/tiles/eustorage/TileParallelSpaceSU.java deleted file mode 100644 index 832a8f3..0000000 --- a/src/main/java/com/mcgoodtime/productionline/tiles/eustorage/TileParallelSpaceSU.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.mcgoodtime.productionline.tiles.eustorage; - -/** - * Created by BestOwl on 2015.11.29.0029. - * - * @author BestOwl - */ -public class TileParallelSpaceSU extends TileEUStorage { - - public TileParallelSpaceSU() { - super(6, (int) 2.5E8); - } - - @Override - public String getName() { - return "ParallelSpaceSU"; - } -} diff --git a/src/main/resources/assets/productionline/blockstates/adv_solar.json b/src/main/resources/assets/productionline/blockstates/adv_solar.json deleted file mode 100644 index f7a0cc9..0000000 --- a/src/main/resources/assets/productionline/blockstates/adv_solar.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "forge_marker": 1, - "defaults": { - "model": "productionline:basic_all", - "textures": { - "up": "productionline:blocks/adv_solar_top", - "all": "productionline:blocks/adv_solar_side" - } - }, - "variants": { - "inventory": [{}], - "active": { - "false": {}, - "true": { - "textures": {} - } - }, - "facing": { - "east": {}, - "north": {}, - "south": {}, - "west": {}, - "down": {} - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/blockstates/air_brake_casing.json b/src/main/resources/assets/productionline/blockstates/air_brake_casing.json deleted file mode 100644 index 2189775..0000000 --- a/src/main/resources/assets/productionline/blockstates/air_brake_casing.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "forge_marker": 1, - "defaults": { - "model": "productionline:basic_all", - "textures": { - "front": "productionline:blocks/air_brake_casing_front", - "all": "productionline:blocks/air_brake_casing_side" - } - }, - "variants": { - "inventory": [{}], - "facing": { - "east": { - "y": 90, - "uvlock": true - }, - "north": {}, - "south": { - "y": 180, - "uvlock": true - }, - "west": { - "y": 270, - "uvlock": true - } - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/blockstates/block_misc.json b/src/main/resources/assets/productionline/blockstates/block_misc.json index 05327d7..31e1b07 100644 --- a/src/main/resources/assets/productionline/blockstates/block_misc.json +++ b/src/main/resources/assets/productionline/blockstates/block_misc.json @@ -6,21 +6,7 @@ "variants": { "inventory": [{}], "type": { - "compressed_water_hyacinth": { - "textures": { - "all": "productionline:blocks/compressed_water_hyacinth" - } - }, - "dehydrated_water_hyacinth_block": { - "textures": { - "all": "productionline:blocks/dehydrated_water_hyacinth_block" - } - }, - "optical_glass": { - "textures": { - "all": "productionline:blocks/optical_glass" - } - } + } } } \ No newline at end of file diff --git a/src/main/resources/assets/productionline/blockstates/carbonize_furnace.json b/src/main/resources/assets/productionline/blockstates/carbonize_furnace.json deleted file mode 100644 index ff37c5d..0000000 --- a/src/main/resources/assets/productionline/blockstates/carbonize_furnace.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "forge_marker": 1, - "defaults": { - "model": "productionline:basic_all", - "textures": { - "all": "productionline:blocks/machine_side", - "front": "productionline:blocks/carbonize_furnace_front", - "left": "productionline:blocks/carbonize_furnace_left", - "up": "productionline:blocks/carbonize_furnace_up" - } - }, - "variants": { - "inventory": [{}], - "active": { - "false": {}, - "true": { - "textures": { - "front": "productionline:blocks/carbonize_furnace_front_active", - "left": "productionline:blocks/carbonize_furnace_left_active", - "up": "productionline:blocks/carbonize_furnace_up_active" - } - } - }, - "facing": { - "east": { - "y": 90, - "uvlock": true - }, - "north": {}, - "south": { - "y": 180, - "uvlock": true - }, - "west": { - "y": 270, - "uvlock": true - } - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/blockstates/cseu.json b/src/main/resources/assets/productionline/blockstates/cseu.json deleted file mode 100644 index c6c8de6..0000000 --- a/src/main/resources/assets/productionline/blockstates/cseu.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "forge_marker": 1, - "defaults": { - "model": "productionline:basic_all", - "textures": { - "front": "productionline:blocks/cseu_front", - "up": "productionline:blocks/cseu_top", - "down": "productionline:blocks/cseu_top", - "back": "productionline:blocks/cseu_back", - "all": "productionline:blocks/cseu_side" - } - }, - "variants": { - "inventory": [{}], - "active": { - "false": {}, - "true": { - "textures": {} - } - }, - "facing": { - "east": { - "y": 90, - "uvlock": true - }, - "north": { - }, - "south": { - "y": 180, - "uvlock": true - }, - "west": { - "y": 270, - "uvlock": true - }, - "down": { - "x": 90, - "uvlock": true - }, - "up": { - "x": 270, - "uvlock": true - } - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/blockstates/cutter.json b/src/main/resources/assets/productionline/blockstates/cutter.json deleted file mode 100644 index e4cdba5..0000000 --- a/src/main/resources/assets/productionline/blockstates/cutter.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "forge_marker": 1, - "defaults": { - "model": "productionline:basic_all", - "textures": { - "all": "productionline:blocks/machine_side", - "front": "productionline:blocks/cutter_front", - "up": "productionline:blocks/cutter_top" - } - }, - "variants": { - "inventory": [{}], - "active": { - "false": {}, - "true": { - "textures": { - "front": "productionline:blocks/cutter_front_active", - "up": "productionline:blocks/cutter_top_active" - } - } - }, - "facing": { - "east": { - "y": 90, - "uvlock": true - }, - "north": {}, - "south": { - "y": 180, - "uvlock": true - }, - "west": { - "y": 270, - "uvlock": true - } - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/blockstates/evsu.json b/src/main/resources/assets/productionline/blockstates/evsu.json deleted file mode 100644 index 9b29c9a..0000000 --- a/src/main/resources/assets/productionline/blockstates/evsu.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "forge_marker": 1, - "defaults": { - "model": "productionline:basic_all", - "textures": { - "front": "productionline:blocks/evsu_front", - "up": "productionline:blocks/evsu_top", - "down": "productionline:blocks/evsu_top", - "all": "productionline:blocks/evsu_side" - } - }, - "variants": { - "inventory": [{}], - "active": { - "false": {}, - "true": { - "textures": {} - } - }, - "facing": { - "east": { - "y": 90, - "uvlock": true - }, - "north": { - }, - "south": { - "y": 180, - "uvlock": true - }, - "west": { - "y": 270, - "uvlock": true - }, - "down": { - "x": 90, - "uvlock": true - }, - "up": { - "x": 270, - "uvlock": true - } - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/blockstates/fluid_kinetic_generator.json b/src/main/resources/assets/productionline/blockstates/fluid_kinetic_generator.json deleted file mode 100644 index 9cba82c..0000000 --- a/src/main/resources/assets/productionline/blockstates/fluid_kinetic_generator.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "forge_marker": 1, - "defaults": { - "model": "productionline:basic_all", - "textures": { - "all": "productionline:blocks/machine_side", - "front": "productionline:blocks/fluid_kinetic_generator_front", - "back": "productionline:blocks/fluid_kinetic_generator_back", - "left": "productionline:blocks/fluid_kinetic_generator_side", - "right": "productionline:blocks/fluid_kinetic_generator_side" - } - }, - "variants": { - "inventory": [{}], - "active": { - "false": {}, - "true": { - "textures": { - "left": "productionline:blocks/fluid_kinetic_generator_side_active", - "right": "productionline:blocks/fluid_kinetic_generator_side_active" - } - } - }, - "facing": { - "east": { - "y": 90, - "uvlock": true - }, - "north": {}, - "south": { - "y": 180, - "uvlock": true - }, - "west": { - "y": 270, - "uvlock": true - } - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/blockstates/heat_dryer.json b/src/main/resources/assets/productionline/blockstates/heat_dryer.json deleted file mode 100644 index 9319461..0000000 --- a/src/main/resources/assets/productionline/blockstates/heat_dryer.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "forge_marker": 1, - "defaults": { - "model": "productionline:basic_all", - "textures": { - "all": "productionline:blocks/machine_side", - "front": "productionline:blocks/heat_dryer_front", - "left": "productionline:blocks/heat_dryer_side", - "right": "productionline:blocks/heat_dryer_side", - "up": "productionline:blocks/heat_dryer_up" - } - }, - "variants": { - "inventory": [{}], - "active": { - "false": {}, - "true": { - "textures": { - "front": "productionline:blocks/heat_dryer_front_active", - "left": "productionline:blocks/heat_dryer_side_active", - "right": "productionline:blocks/heat_dryer_side_active", - "up": "productionline:blocks/heat_dryer_active" - } - } - }, - "facing": { - "east": { - "y": 90, - "uvlock": true - }, - "north": {}, - "south": { - "y": 180, - "uvlock": true - }, - "west": { - "y": 270, - "uvlock": true - } - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/blockstates/packager.json b/src/main/resources/assets/productionline/blockstates/packager.json deleted file mode 100644 index f989bf9..0000000 --- a/src/main/resources/assets/productionline/blockstates/packager.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "forge_marker": 1, - "defaults": { - "model": "productionline:basic_all", - "textures": { - "all": "productionline:blocks/machine_side_1", - "front": "productionline:blocks/packager_front", - "up": "productionline:blocks/packager_top", - "down": "productionline:blocks/machine_side_dark" - } - }, - "variants": { - "inventory": [{}], - "active": { - "false": {}, - "true": { - "textures": { - "front": "productionline:blocks/packager_front_active" - } - } - }, - "facing": { - "east": { - "y": 90, - "uvlock": true - }, - "north": {}, - "south": { - "y": 180, - "uvlock": true - }, - "west": { - "y": 270, - "uvlock": true - } - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/blockstates/parallel_space_su.json b/src/main/resources/assets/productionline/blockstates/parallel_space_su.json deleted file mode 100644 index 7ba7236..0000000 --- a/src/main/resources/assets/productionline/blockstates/parallel_space_su.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "forge_marker": 1, - "defaults": { - "model": "productionline:basic_all", - "textures": { - "front": "productionline:blocks/parallel_space_su_front", - "back": "productionline:blocks/parallel_space_su_back", - "all": "productionline:blocks/parallel_space_su_side" - } - }, - "variants": { - "inventory": [{}], - "active": { - "false": {}, - "true": { - "textures": {} - } - }, - "facing": { - "east": { - "y": 90, - "uvlock": true - }, - "north": { - }, - "south": { - "y": 180, - "uvlock": true - }, - "west": { - "y": 270, - "uvlock": true - }, - "down": { - "x": 90, - "uvlock": true - }, - "up": { - "x": 270, - "uvlock": true - } - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/lang/en_US.lang b/src/main/resources/assets/productionline/lang/en_us.lang similarity index 100% rename from src/main/resources/assets/productionline/lang/en_US.lang rename to src/main/resources/assets/productionline/lang/en_us.lang diff --git a/src/main/resources/assets/productionline/lang/zh_CN.lang b/src/main/resources/assets/productionline/lang/zh_cn.lang similarity index 100% rename from src/main/resources/assets/productionline/lang/zh_CN.lang rename to src/main/resources/assets/productionline/lang/zh_cn.lang diff --git a/src/main/resources/assets/productionline/models/block/dry_log.json b/src/main/resources/assets/productionline/models/block/dry_log.json deleted file mode 100644 index 8e69304..0000000 --- a/src/main/resources/assets/productionline/models/block/dry_log.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "productionline:blocks/dry_log" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/block/pad.json b/src/main/resources/assets/productionline/models/block/pad.json deleted file mode 100644 index fca9d3e..0000000 --- a/src/main/resources/assets/productionline/models/block/pad.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "productionline:blocks/pad" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/adv_solar_lens_cluster.json b/src/main/resources/assets/productionline/models/item/crafting/adv_solar_lens_cluster.json deleted file mode 100644 index 3ff2faf..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/adv_solar_lens_cluster.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/adv_solar_lens_cluster" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/adv_solar_lens_group.json b/src/main/resources/assets/productionline/models/item/crafting/adv_solar_lens_group.json deleted file mode 100644 index fd2db34..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/adv_solar_lens_group.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/adv_solar_lens_group" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/adv_solar_lens_unit.json b/src/main/resources/assets/productionline/models/item/crafting/adv_solar_lens_unit.json deleted file mode 100644 index f44e115..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/adv_solar_lens_unit.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/adv_solar_lens_unit" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/air_brake_unit.json b/src/main/resources/assets/productionline/models/item/crafting/air_brake_unit.json deleted file mode 100644 index c4ac10d..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/air_brake_unit.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/air_brake_unit" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/bamboo_charcoal.json b/src/main/resources/assets/productionline/models/item/crafting/bamboo_charcoal.json deleted file mode 100644 index c9d23fc..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/bamboo_charcoal.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/bamboo_charcoal" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/bio_fuel.json b/src/main/resources/assets/productionline/models/item/crafting/bio_fuel.json deleted file mode 100644 index f61fedf..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/bio_fuel.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/bio_fuel" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/calculate_array.json b/src/main/resources/assets/productionline/models/item/crafting/calculate_array.json deleted file mode 100644 index e58d267..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/calculate_array.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/calculate_array" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/calculate_chunk.json b/src/main/resources/assets/productionline/models/item/crafting/calculate_chunk.json deleted file mode 100644 index f2c558e..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/calculate_chunk.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/calculate_chunk" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/calculate_unit.json b/src/main/resources/assets/productionline/models/item/crafting/calculate_unit.json deleted file mode 100644 index 9df2882..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/calculate_unit.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/calculate_unit" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/carbon_crystal.json b/src/main/resources/assets/productionline/models/item/crafting/carbon_crystal.json deleted file mode 100644 index 6d53698..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/carbon_crystal.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/carbon_crystal" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/carbon_tube.json b/src/main/resources/assets/productionline/models/item/crafting/carbon_tube.json deleted file mode 100644 index 7a3b2d3..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/carbon_tube.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/carbon_tube" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/coarse_batten.json b/src/main/resources/assets/productionline/models/item/crafting/coarse_batten.json deleted file mode 100644 index 75db217..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/coarse_batten.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/coarse_batten" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/corrugated_paper.json b/src/main/resources/assets/productionline/models/item/crafting/corrugated_paper.json deleted file mode 100644 index c0ee155..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/corrugated_paper.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/corrugated_paper" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/cyclotron_particle_accelerator.json b/src/main/resources/assets/productionline/models/item/crafting/cyclotron_particle_accelerator.json deleted file mode 100644 index aa8a4ea..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/cyclotron_particle_accelerator.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/cyclotron_particle_accelerator" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/electronic_circuit_control.json b/src/main/resources/assets/productionline/models/item/crafting/electronic_circuit_control.json deleted file mode 100644 index eb83087..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/electronic_circuit_control.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/electronic_circuit_control" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/electronic_circuit_core.json b/src/main/resources/assets/productionline/models/item/crafting/electronic_circuit_core.json deleted file mode 100644 index 85a6793..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/electronic_circuit_core.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/electronic_circuit_core" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/ender_calculation_crystal.json b/src/main/resources/assets/productionline/models/item/crafting/ender_calculation_crystal.json deleted file mode 100644 index 54e6bc4..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/ender_calculation_crystal.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/ender_calculation_crystal" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/faggot.json b/src/main/resources/assets/productionline/models/item/crafting/faggot.json deleted file mode 100644 index 8050194..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/faggot.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/faggot" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/firewood.json b/src/main/resources/assets/productionline/models/item/crafting/firewood.json deleted file mode 100644 index 4aa334a..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/firewood.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/firewood" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/float_point_calculations_region.json b/src/main/resources/assets/productionline/models/item/crafting/float_point_calculations_region.json deleted file mode 100644 index 28d9f5b..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/float_point_calculations_region.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/float_point_calculations_region" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/heat_insulation_material.json b/src/main/resources/assets/productionline/models/item/crafting/heat_insulation_material.json deleted file mode 100644 index 1fc96a3..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/heat_insulation_material.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/heat_insulation_material" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/heat_insulation_plate.json b/src/main/resources/assets/productionline/models/item/crafting/heat_insulation_plate.json deleted file mode 100644 index c98b58f..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/heat_insulation_plate.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/heat_insulation_plate" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/lazuli_module.json b/src/main/resources/assets/productionline/models/item/crafting/lazuli_module.json deleted file mode 100644 index 53b6ac8..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/lazuli_module.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/lazuli_module" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/mill_teeth.json b/src/main/resources/assets/productionline/models/item/crafting/mill_teeth.json deleted file mode 100644 index 4e0fc03..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/mill_teeth.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/mill_teeth" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/mill_wheel.json b/src/main/resources/assets/productionline/models/item/crafting/mill_wheel.json deleted file mode 100644 index d2bbd69..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/mill_wheel.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/mill_wheel" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/obsidian_mechanical_casing.json b/src/main/resources/assets/productionline/models/item/crafting/obsidian_mechanical_casing.json deleted file mode 100644 index c200578..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/obsidian_mechanical_casing.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/obsidian_mechanical_casing" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/obsidian_mechanical_frame.json b/src/main/resources/assets/productionline/models/item/crafting/obsidian_mechanical_frame.json deleted file mode 100644 index 33693bd..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/obsidian_mechanical_frame.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/obsidian_mechanical_frame" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/obsidian_plate_gravity_field.json b/src/main/resources/assets/productionline/models/item/crafting/obsidian_plate_gravity_field.json deleted file mode 100644 index 4a239f3..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/obsidian_plate_gravity_field.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/obsidian_plate_gravity_field" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/paper_bag.json b/src/main/resources/assets/productionline/models/item/crafting/paper_bag.json deleted file mode 100644 index 3a01940..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/paper_bag.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/paper_bag" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/parallel_space_converter.json b/src/main/resources/assets/productionline/models/item/crafting/parallel_space_converter.json deleted file mode 100644 index 3399c0b..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/parallel_space_converter.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/parallel_space_converter" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/pulse_electronic_circuit_control.json b/src/main/resources/assets/productionline/models/item/crafting/pulse_electronic_circuit_control.json deleted file mode 100644 index 03bc340..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/pulse_electronic_circuit_control.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/pulse_electronic_circuit_control" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/pulse_electronic_circuit_core.json b/src/main/resources/assets/productionline/models/item/crafting/pulse_electronic_circuit_core.json deleted file mode 100644 index b943b79..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/pulse_electronic_circuit_core.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/pulse_electronic_circuit_core" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/redstone_module.json b/src/main/resources/assets/productionline/models/item/crafting/redstone_module.json deleted file mode 100644 index 8ee5d6e..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/redstone_module.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/redstone_module" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/rigid_paper.json b/src/main/resources/assets/productionline/models/item/crafting/rigid_paper.json deleted file mode 100644 index 69607b2..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/rigid_paper.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/rigid_paper" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/rigid_paper_pack.json b/src/main/resources/assets/productionline/models/item/crafting/rigid_paper_pack.json deleted file mode 100644 index 2a0773b..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/rigid_paper_pack.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/rigid_paper_pack" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/roller.json b/src/main/resources/assets/productionline/models/item/crafting/roller.json deleted file mode 100644 index 3650d64..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/roller.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/roller" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/sawdust.json b/src/main/resources/assets/productionline/models/item/crafting/sawdust.json deleted file mode 100644 index 6b09a04..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/sawdust.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/sawdust" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/small_compressed_water_hyacinth.json b/src/main/resources/assets/productionline/models/item/crafting/small_compressed_water_hyacinth.json deleted file mode 100644 index d5469b1..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/small_compressed_water_hyacinth.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/small_compressed_water_hyacinth" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/tiles.json b/src/main/resources/assets/productionline/models/item/crafting/tiles.json deleted file mode 100644 index 1163a25..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/tiles.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/tiles" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/uu_matter_core.json b/src/main/resources/assets/productionline/models/item/crafting/uu_matter_core.json deleted file mode 100644 index 914bdbe..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/uu_matter_core.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/uu_matter_core" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/crafting/wood_pulp.json b/src/main/resources/assets/productionline/models/item/crafting/wood_pulp.json deleted file mode 100644 index e2b93a0..0000000 --- a/src/main/resources/assets/productionline/models/item/crafting/wood_pulp.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/crafting/wood_pulp" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/food/diamond_apple.json b/src/main/resources/assets/productionline/models/item/diamond_apple.json similarity index 100% rename from src/main/resources/assets/productionline/models/item/food/diamond_apple.json rename to src/main/resources/assets/productionline/models/item/diamond_apple.json diff --git a/src/main/resources/assets/productionline/models/item/dry_log.json b/src/main/resources/assets/productionline/models/item/dry_log.json deleted file mode 100644 index 71b9ed0..0000000 --- a/src/main/resources/assets/productionline/models/item/dry_log.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "productionline:block/dry_log" -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/eustorage/ceu.json b/src/main/resources/assets/productionline/models/item/eustorage/ceu.json deleted file mode 100644 index 8b63a76..0000000 --- a/src/main/resources/assets/productionline/models/item/eustorage/ceu.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/eustorage/ceu" - }, - "overrides": [ - { - "predicate": { - "energy": 0 - }, - "model": "productionline:item/eustorage/ceu" - }, - { - "predicate": { - "energy": 1 - }, - "model": "productionline:item/eustorage/ceu_1" - }, - { - "predicate": { - "energy": 2 - }, - "model": "productionline:item/eustorage/ceu_2" - }, - { - "predicate": { - "energy": 3 - }, - "model": "productionline:item/eustorage/ceu_3" - }, - { - "predicate": { - "energy": 4 - }, - "model": "productionline:item/eustorage/ceu_4" - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/eustorage/ceu_1.json b/src/main/resources/assets/productionline/models/item/eustorage/ceu_1.json deleted file mode 100644 index b4e93bf..0000000 --- a/src/main/resources/assets/productionline/models/item/eustorage/ceu_1.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/eustorage/ceu_1" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/eustorage/ceu_2.json b/src/main/resources/assets/productionline/models/item/eustorage/ceu_2.json deleted file mode 100644 index 431768c..0000000 --- a/src/main/resources/assets/productionline/models/item/eustorage/ceu_2.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/eustorage/ceu_2" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/eustorage/ceu_3.json b/src/main/resources/assets/productionline/models/item/eustorage/ceu_3.json deleted file mode 100644 index 8b50365..0000000 --- a/src/main/resources/assets/productionline/models/item/eustorage/ceu_3.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/eustorage/ceu_3" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/eustorage/ceu_4.json b/src/main/resources/assets/productionline/models/item/eustorage/ceu_4.json deleted file mode 100644 index 198c417..0000000 --- a/src/main/resources/assets/productionline/models/item/eustorage/ceu_4.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/eustorage/ceu_4" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/food/salt.json b/src/main/resources/assets/productionline/models/item/food/salt.json deleted file mode 100644 index bfbd789..0000000 --- a/src/main/resources/assets/productionline/models/item/food/salt.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/food/salt" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/ore/cleaned_crushed_iridium.json b/src/main/resources/assets/productionline/models/item/ore/cleaned_crushed_iridium.json deleted file mode 100644 index c68f601..0000000 --- a/src/main/resources/assets/productionline/models/item/ore/cleaned_crushed_iridium.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/ore/cleaned_crushed_iridium" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/ore/crushed_iridium.json b/src/main/resources/assets/productionline/models/item/ore/crushed_iridium.json deleted file mode 100644 index 80e465a..0000000 --- a/src/main/resources/assets/productionline/models/item/ore/crushed_iridium.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/ore/crushed_iridium" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/ore/dense_diamond_plate.json b/src/main/resources/assets/productionline/models/item/ore/dense_diamond_plate.json deleted file mode 100644 index 06c57e8..0000000 --- a/src/main/resources/assets/productionline/models/item/ore/dense_diamond_plate.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/ore/dense_diamond_plate" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/ore/diamond_plate.json b/src/main/resources/assets/productionline/models/item/ore/diamond_plate.json deleted file mode 100644 index 80423da..0000000 --- a/src/main/resources/assets/productionline/models/item/ore/diamond_plate.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/ore/diamond_plate" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/ore/dust_iridium.json b/src/main/resources/assets/productionline/models/item/ore/dust_iridium.json deleted file mode 100644 index d65057e..0000000 --- a/src/main/resources/assets/productionline/models/item/ore/dust_iridium.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/ore/dust_iridium" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/ore/small_dust_iridium.json b/src/main/resources/assets/productionline/models/item/ore/small_dust_iridium.json deleted file mode 100644 index 1c1b7e8..0000000 --- a/src/main/resources/assets/productionline/models/item/ore/small_dust_iridium.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/ore/small_dust_iridium" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/packaged_salt.json b/src/main/resources/assets/productionline/models/item/packaged_salt.json deleted file mode 100644 index 32421a1..0000000 --- a/src/main/resources/assets/productionline/models/item/packaged_salt.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/packaged_salt" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/pad.json b/src/main/resources/assets/productionline/models/item/pad.json deleted file mode 100644 index cc08a2a..0000000 --- a/src/main/resources/assets/productionline/models/item/pad.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "productionline:block/pad" -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/record_musicspring.json b/src/main/resources/assets/productionline/models/item/record_musicspring.json deleted file mode 100644 index 5099c8d..0000000 --- a/src/main/resources/assets/productionline/models/item/record_musicspring.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/record_musicspring" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/saltwater_bucket.json b/src/main/resources/assets/productionline/models/item/saltwater_bucket.json deleted file mode 100644 index 49d785c..0000000 --- a/src/main/resources/assets/productionline/models/item/saltwater_bucket.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/saltwater_bucket" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/tool/gravity_ray.json b/src/main/resources/assets/productionline/models/item/tool/gravity_ray.json deleted file mode 100644 index 41a7498..0000000 --- a/src/main/resources/assets/productionline/models/item/tool/gravity_ray.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/tool/gravity_ray_standby" - }, - "display": { - "thirdperson_righthand": { - "rotation": [ -80, 260, -40 ], - "translation": [ -1, -2, 2.5 ], - "scale": [ 0.9, 0.9, 0.9 ] - }, - "thirdperson_lefthand": { - "rotation": [ -80, -280, 40 ], - "translation": [ -1, -2, 2.5 ], - "scale": [ 0.9, 0.9, 0.9 ] - }, - "firstperson_righthand": { - "rotation": [ 0, -90, 25 ], - "translation": [ 1.13, 3.2, 1.13], - "scale": [ 0.68, 0.68, 0.68 ] - }, - "firstperson_lefthand": { - "rotation": [ 0, 90, -25 ], - "translation": [ 1.13, 3.2, 1.13], - "scale": [ 0.68, 0.68, 0.68 ] - } - }, - "overrides": [ - { - "predicate": { - "pulling": 1 - }, - "model": "productionline:item/tool/gravity_ray_pulling_0" - }, - { - "predicate": { - "pulling": 1, - "pull": 0.65 - }, - "model": "productionline:item/tool/gravity_ray_pulling_1" - }, - { - "predicate": { - "pulling": 1, - "pull": 0.9 - }, - "model": "productionline:item/tool/gravity_ray_pulling_2" - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/tool/gravity_ray_pulling_0.json b/src/main/resources/assets/productionline/models/item/tool/gravity_ray_pulling_0.json deleted file mode 100644 index ff64fae..0000000 --- a/src/main/resources/assets/productionline/models/item/tool/gravity_ray_pulling_0.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/tool/gravity_ray_pulling_0" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/tool/gravity_ray_pulling_1.json b/src/main/resources/assets/productionline/models/item/tool/gravity_ray_pulling_1.json deleted file mode 100644 index 6c05d7b..0000000 --- a/src/main/resources/assets/productionline/models/item/tool/gravity_ray_pulling_1.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/tool/gravity_ray_pulling_1" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/tool/gravity_ray_pulling_2.json b/src/main/resources/assets/productionline/models/item/tool/gravity_ray_pulling_2.json deleted file mode 100644 index c0642fe..0000000 --- a/src/main/resources/assets/productionline/models/item/tool/gravity_ray_pulling_2.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/tool/gravity_ray_pulling_2" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/tool/treetap/treetap_alloy.json b/src/main/resources/assets/productionline/models/item/tool/treetap/treetap_alloy.json deleted file mode 100644 index b088f7e..0000000 --- a/src/main/resources/assets/productionline/models/item/tool/treetap/treetap_alloy.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/tool/treetap/alloy" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/tool/treetap/treetap_bronze.json b/src/main/resources/assets/productionline/models/item/tool/treetap/treetap_bronze.json deleted file mode 100644 index 02acdd7..0000000 --- a/src/main/resources/assets/productionline/models/item/tool/treetap/treetap_bronze.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/tool/treetap/bronze" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/tool/treetap/treetap_carbon.json b/src/main/resources/assets/productionline/models/item/tool/treetap/treetap_carbon.json deleted file mode 100644 index 365efe3..0000000 --- a/src/main/resources/assets/productionline/models/item/tool/treetap/treetap_carbon.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/tool/treetap/carbon" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/tool/treetap/treetap_iron.json b/src/main/resources/assets/productionline/models/item/tool/treetap/treetap_iron.json deleted file mode 100644 index e0dda6b..0000000 --- a/src/main/resources/assets/productionline/models/item/tool/treetap/treetap_iron.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/tool/treetap/iron" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/tool/treetap/treetap_lead.json b/src/main/resources/assets/productionline/models/item/tool/treetap/treetap_lead.json deleted file mode 100644 index bfb8561..0000000 --- a/src/main/resources/assets/productionline/models/item/tool/treetap/treetap_lead.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/tool/treetap/lead" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/item/tool/treetap/treetap_steel.json b/src/main/resources/assets/productionline/models/item/tool/treetap/treetap_steel.json deleted file mode 100644 index 2c8fe1c..0000000 --- a/src/main/resources/assets/productionline/models/item/tool/treetap/treetap_steel.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "productionline:item/tool/treetap/steel" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/sounds/record_MusicSpring.ogg b/src/main/resources/assets/productionline/sounds/record_MusicSpring.ogg deleted file mode 100644 index 08a3eaa7b4aa68cdbb77d29edec4a6fefec6f53b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 243484 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

*w%0 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

-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 z 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�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 Y&o`%>?LDgLb)B6vJY?^G{{MgcA2IgsO8@`> diff --git a/src/main/resources/assets/productionline/textures/blocks/adv_solar_side.png b/src/main/resources/assets/productionline/textures/blocks/adv_solar_side.png deleted file mode 100644 index 3cdd4106aaec11bf849cd7dc6769b4ab51285b17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18611 zcmeI4c{r5a`@kPdg|fU#L@|xlx5g~SGLwBBMPye=W9GqRwr0jMilnqDOSWW5Q6i*X zMY2^y+2Sn~ii#wAl0^CrDw=A3UDxmX`{#GfT-TWAKKHrr`<&0Y&;6X4>v|lu+H5K= zCNBm6fVdgX$eQyBnS6@~a{i9X^`>w>MCmvuCIHM|IQbR;PAA9#fS3iz(9p`tgT|sU zJ!o`@nV}(s&Y-!G$RGgtHYM8lI7W^v)@dC9CG8EK3|xsN?+2jDnIe@^PUoaf0{DYc z(t72=N5t$G$^4aovnvaFB!){o@-lf%zPtXhBU?l4wrln&wWMA1_v`QN9eX@h*qP8d zUdyhN4E#%aRmAIay8w)Juom`-QkW&K>|RlzpbV}}7$Wt$>bCowasU_*V*3WLa&*T9 zF4F)(fc{8jg>=P>F9!;&RyhEW2%rrr-8o+%+#0A-B=Aw}IqLJ*bLsX|_P1 z({+@oU|`W4z&q42TvBf*5Ey5$z8ZjN3Ic|T3u}ZR=0eGchLW~)7kY3$P5>yaimr*> z)S$X3Kl*{Z&%1%Pm&;$?CSNhY%dVAj6K#hk#KtQx#B~ap*De46`O*4Y6Pmi=ov+(p zymsp(_rEVcH{m%zgX%0FY@H}PE+`C0ZLaHYa_Q)36rxuM;aF~QD@a= z(d4aS5Bx?$*qY;dib-d!Dz%m^6`Mc5cctsuBE+i@oiC~{Xl)?@A2`~HX1@Vo_i4Sj ztkRSNpLgS_-r3fnomIjHNa{$Z@tCX;Y+o;PY|!y&z7^D>f_=j}!f5%u z=$F!6`%r^QF`q>veZ+yxLzbnRug|+yMJ^5K6A%oMaBT1f^a6%p$K~fo08;K~6ng{! zB1=ZY^wtRgHL@b5-AR z#pOvWcdV9J=n{!rA#v|y`)0A_E5lJ{^UXYQ%{W-9O{z|V6e+=cRd+b$-t%^mtAUx2 z*oeGv$#Bb)WB2Z~=PkmPA9-mmdTxbvYLxUwHBh%h`1~1^L0odimYVdWhawqAuxGZK zQIfr_;5LWT7oxpRudIn*Y*>{FOL_F*G|8Pb;sNhs6^K4NplBTXAhyBt&AhJ8t^@CV z7Kk4bKTv^lU9-e<$(|)?a(PSOapo81{2LorX^VJ_QiyXuC3%Ww=lJ)BzxT>S+?S5V zM%zaRM0aM`+A-~PAF(s$+g`GhytKpK|AL9#KUS~OMISD{^eBCq-OY6M>{@Fd>oBXj zEiNg=E}w%w5yY<^3N}eTgiEm{gaaWdGRzQ|UlV4MD zlWQ-dcX4lbQ@_Q;xLwi9q|$^P%qe05M0pgRrglsUqUy#OLX}Dute9hdedRb z`;=kXxBZR%^-3BDw1|565;9VgFi;&%c;k7BlwUt^@WsWysyqrJ$~;o)%~Dq9uj)JO z{z}bPR>v)qw$wEf{TyuZ)WW-xP|c}jspaj(YipuBPrDV==l;v8uC83)lKCX_UQa0I zQG#a@zW8Zj^Z1G2^Tr9~8$;AXDq@;q_Eyb_v4|PTJY}zA&$b`7f1GL7xV?LQH>J^m zY^C53zaSnPUv>RrR(w{OcRZza(aS|)Ya7-M+fbX3J>xxMJ*Ru-_F_KZKdk&f`B1m4 zda3lX#tp0udl@XRYHu>Vusihy`c8UT`kgKZcLn#e%)}uz*$bP(tE6MSV`Xh9X~)v2 zXZ)(7JLLNc8m|32oDzRCz9s7^<>9kx?Q;K1V-_m$3iq7vX!q;C9~g0bxx4yRVp@FK z?V<2a_zv$KPCLem6fOTrSe4X>pj0-OZEGv4+Ord@qYZwl?GnE@66%i3&qe@ z?PBGC#(=nhdE-fA8$MNi4*OX0g8gps;O03y1#Ss+2o&v?-~W%0r;w6xobdU1YI9D^ zxj7fUKu5-4fvC8X5+jmUD*H}hl%U$;zW#K*%zcqWnXL++5Y?;96&wEwJya*sDiuJx zFlydaeO=^8n<@E7z7lCkob0IoqP2gcGF0Af$+cnaW{s?G%xrfWb1w=V3`;+LV?*<< z>kM!A%w1$_GNC6vKQKQdf4}eHkH&+s(yWCmM0=06mpv)dKKhC&*hxOEn$UjQHikvW z?r1r8L-uu7ZB>$wmXn%O_+HK6Q_`_lbvq6~46NXCmK|wSi)9Pn9gGjQG%h}O;@p-i zdHEZ)PQFgGkN%+fY=ghyCyzsxCSG?{MJ=t@u_Kn8yrDc~VQwiBo>>)FRt_5 zCb!KuA6JCi`cSpiZQ|{y^8BF1dyB$ztnzdId6MtzG}s0$F}}H2ImAZRM+NC@T|o3D z4K(;yc~o7E`E2#l(c13aE_TbiQ0oH?=g%9i3vxh5r$^nZqGrF}dV?T?k0#pn?}~l2 z&3@nCve7P?^vsLdA9GCdU%zzN?DA;uFq_iU^n7F9{oZa|cWO5^bHu6S^2VZF`i~wQ z8W7J?7(CIT;6mB>oORZ3*KlY}Zq5A~AvL^O@3!jena%Ics;7MLOWfyNW&b(rQeN@X zRZWd0&wTa_NgP-vv*CGvR8Qfxb-oUsMaKTa)P}yGXJPWL3I!#v1D@rZ`dF4Hh3z@N zXWj?n{_b5Y8oA|iNy$}FinaO)MI4si5g$lvitjz`bB(_BZ;9Lb9k*7uUf8?mmDQWG zwRc+X)U?L!%NrKy#=Ejp=vdL6W~S??{nH`Mq4yYJJk(nrk4A0MkYpJ5mE z-|bPzqpo_kG=F8m@JH_ty|O-HedaCBeqp|s$BUajzn%9<^6kFdi7Q|!rS0R+(w%j8 zoFw}tL=PuTM1A@9@QVi1YSTx`Cdwzm5|xw`#N~_L5o;q~q+Ly0Sa(0b{tLUCd8xDY z^UJYKb&lgt2Ih~3)Rknj(}x)Sm(nj|E0img3TxTggBQlLYMcH0^ZN^0D~goj){N^- zSPj*GB2=V3upH6p+&eK2A2~QQwzA=jDgbOSA=x^z94*YT1R6yJPo%kmD!vpt=NJkA zTDrb;Ji!xWL0mz15>*@8f3pM%ArZBq4r&$%3%VibLBjblKpVf!wgf*<0)`0H)e+P3 z#c~`_Ko%b2OCeL4SYK`ElwU08da@Y~g-mr}d1^!TCj&wpEvz7hGzJJ!Q&EQzkgA#x z4U7s>4Wo%duZN%zNOd>@14p7^2qYGP!6J~5uP>;M80SihL3G1f8<~6!$C0$59xN6e z3y1so_^9}(s?Zqja3ltUfg@0G6bi=a0b{bMEW9s_%2b|q^39JC$RsdGbQXz5g-rUz zyVAT^+ED0Zpzp7*^P7DU2#OS%_>JO!9YfP-X^!imY` z*dc#82Nua~W^sO)!ldT6;Xq%~Z_Fk&(`HktFug)roczNYGC(|w#;~Q)$U4(mHuLR? z^W}+?RT_{r4kRj(=EGd81?M)IS??Kdpb?%0>P%X~5UMaF$`+}KMWC@L)pZEY1!9(y z>7HCZEI7GO#Ix{!;^l|F+je!vmpeqKCz#vqSsHsW*X#SIHBO1YLG7mVer#C*4M&P*r zo>o{@45*=@hQh-T8VFYy5(#R+H1R|=7>EM#s%mIW1gJ^)7HF2Up8{DjIA>!jo;<71 zDe9peVN!d%r*>YT!XR)=9g&Rjq>H&-_V0mOp@%(oD~aPw0r9Er)vCibi> z4eYgB-M*4X<{|v#j|5@h0kKyA1QhBBSw5zFJzjwlMpBZhAd`+*#jt z>(4t;Yo@Y%s|5O-$~L)SnLlR4)P^;{yZ_iaIqa|b^R0Yn5HT8PH3SGFqA{*8Rdr7J zz@rd&m^z3@VUR>kw5mGte@eQkx;j~lFc=hGRg-{%p-`^sFq8%w&vB-ThH0v+X{e$I zYG_rW>#vYq%Zl?Gqt*0Jj5qcWx@GKn?1@8{R=~QH&VL z_Hn%b)W+T4ak7?@y{7tWpb(rF969;-tLbbtx2Y3v)7ffn(-})UDv71Txf@Oml&g7` z)#UjEJH^?CbCd>kI8)acyqKBMf72_MFMbd%AiPCBF5Y~&w0vA#KzNIM zT)g>kY5BOgfbbUixOns7((-X}0pTt3aq;HErRC$|0>WG5d|bTwaB2Ct zxPb5$`M7xV;nMPPaRK2i@^SIz!=>fp;sU~3SNaZ{c>%)2Ub=1Erhx6Dhgn+ZQ006(001$Wp07k!XKDz+G z3jqLccLD(R6adK5PP&wv0DxeqnUTJ&Z&R7Q1x+3)<$tGdZP9t@oAE{%+k+Q#zZ6%D zho*`fXGPiO49pJ<_SZh%d#$KeofM2cCi3Lf=-vRrD8uKl&3%#8G26fRCv7$p!39bM z0`DU~bZ0;P;_GJ(N-c6u>$CPi3jjBZw$wg5>1ZR^WMgvMCBsN6FyFZqtKHF}y5HrJ zOyH%Ap!`Y!y4_`gLS5bd1xL~rNI?yxs|w~?$pkYs883V$mK@Z(3!Z0<317?hzlIPB zDh2JjL_78C?2Pr3N%EIP@-s7bQ0QA?R)`+MwUwq)gvJUS7XYsUCbVx%>_%M~4wt)d zP*2YGEp256UGcp(`pb(?pQ24uK#3B+Blzc4T;?eVr|t{zfxwUw}>-);vbC4s#KMPBP9hcJOpS@NU3${R+` zE-P0IzDzw-URJC4w0ESYxNG7ZA)se7di*-&*+wR!VX3^s9j%~SITu%37+(noos>3x zIhy^s;aOd$S@lPXreat@pSOFYf~igOv%bzDrmoQWEIAX&v%1l=5aSroDdvPpVnj#A zjz+Jb5LVL~A%(@8yzIgv%nOLeJbH{5ej2&i+Po&~xp)qFYn0TX2voqDeW6YBuk1yp-qu& zm8B9zB_X>cM2keK@1UZo=GXK5zQ2Ed&&>18++#hPDF$Yi3B?mGw9ydknzul9e+p z-MvrBRY7r1JkF(L=Tj+M!oId7?OboO1N+tR($Ub+NuSOkdGwq7V|dK1{_vcpkFwD>lVlwk_i6)(;b3H7*+ zuoew1m<9wKagUg7x)BJCHP?9nfDA6x#-0}L>B!Q1Aq`G-Ws0om0L`|G_rJ8Q+54kZRGPj~Iq|k~{vJtj zv%3=V_yw4Ka|lQ3z*Q1Tu}8$gcpUOrXbPx%pTZh&>0MTeXu7%2QBR!aI|xeweR#d; zNJPV35aPh-fqZLt)Q&4_#GZ)yo8Cy%P(4tV#IEKbXM2W5pYg3$%~m%Ky?!ROdetj` z4zTUO5n^aHT!wP!Iez`2y;d9dyQ?lLpG)j?N4bWhi1XbI0u2L3q=ox%J)ia z*d=?LwlgBa+TGUOB2BATGg~fC!c8)47yR~OaAcZ&wpOs*a7hpWb2-9&MaH5x3)B}R zYHe67BkvW7TPSnySjTFq1zHgZo0&GgxCR^~#VG|_BTJ39UDOldcdw~K;!0=+DCTHR z#Ow(BW1sKc>Bv#Ql| zaDY1PO_xXdpVX?1n`=>#0!e=Q=p@yfIE|5vFbx^C+gq_tlKkNB_P>c0GG5Z9=#eM0=rCSw`-j_R$IqrHq z5@<8UU-^5-{oeyepZ!Zpkuhh!!=&X zgihkf38o1;34<6v%#goio_^k%yxn;X{tsVc9}|1H-I9a%2W7fnR9g@FeMlZu zdfi{!U#(#PLrUmJsL%qeotOJFfQG8;j^7?oZ3ClJI4KH9|nfp+crOFPe_eRz5PC- z3%Vg-gU5!?1?u)!;}<2?!u;+wl&othsMxX*gEc0PRCSAC%dn!Sf=}%&JXZ*AHZIf* zsSSw@nK7F9dHG1im+((Tt=xBW->#mvQRJ3Lr%1sL)g4#Ge8n`xW5v(TKutS5?dEjo zEUcpWEJ>|Jo=ZFu^j8_OGfuCoHX zGkj={G-7XDZfNfL+#NxCKUuwvk>kiOlTEo7 zL+NFARYhW;kq62nVyofq6LK+EOgh6r<_=J0`_5Fl-F*3XyW)1+TNR!;d}ht%oZOX0 z$6hA59{*_gV)-_UkxhH-SNNCdN!mLu;~rHxc0=>MovUSSQ^v#Ro1a6_QSnjn$&S+0 z=KQ=ImLEWjo!F$J3+kRnW6Oti3^0#2+WQ^!vm-UFW)e zsnT(;3}!}J)~8D=a$mN&t@e7lb&%^YkJ-~ldj_O4 z)!rWNRP*v%*~B>=>@#?zGQ0AAr5Fm2>Rb2VdPc*$)B4FDgA=xUR=9r2ypU7)d{KRE z(Tl(>?`6W~D=u&9kLu08wk*iax4>%KAid_z&KKdT1hu@Pmmx25tpn{#6T`Qh-7@2& zRez5Uhe2z+SX6XH($7)N8cdOY1|-=p$@p|Z|EojE3G+A1w=T^27Sa!IC;FG8!rc;+610uq z4tMN~Y)>VnCMK*lF@6%;$Q`mBjrH|h<5}Qs@i5UuiSx!b$7|@``=+jN&w+gA2k;P~ zK`Uofrg4_BbqMoIEAHYtMh|(YqR-7Ji}S&*XL)u1Jh@(=HaxPIgIurG8qe`))? z>Y@8+-N4M@gAa?cxasd%{TI?NV#+nkHS(*t#&6G!W>z(9>(A}aYc4O)h}9l7{p#?( zdW2Y>`pA9=+qL!UD0FDo`_Ec6r}O||`3kDDJICG57DHtC>EcNY0$Df6kICDH0)UZ8 z5ED=IC38RovNx4(4DP>K1O`z_#$Y#;9n6ktLEc2g1+&Ob!K0J31P$RL!iK7S$qAp)rbLcrkqP#78tM?zq53=EBd!9m|YV5}7H%!oyzU>q%1d=JNyjKP~Y93}<| z4Gav_4b;AhM-du?XF}n+Fz8>5?Cb=a`T70PlFhLS;9bf0k^M0s z+nLKGLmkO%hCho)whAEAIhudE2|E#x#EoM-HO?#cWJ7VK$x$6EkGQ%Rh_-i;U+mSk4Rv4Lgx#lTS~) zhbLZE8Gy9isB{t|kiEnR%5O3`-;>_RmUs>sJ7x)i=|SKKXSg8-riVcqEQ9e*U{jn- z^yKql$IE>Zo`e4vFTeEV_roAjDcpbZGTHN2A9i*a8#=%K29f9f zXIfzpdMFf8pF)Db3}6HZ98NZX7~)AN2pK`f>!FZ_FtQ=>N1!RrehXyJ;_Z#;c-oXc zV`Cxlf{_f+NVox<0HNTCWC+0kNr4cMBmzVq0Vj}&6q3F^p7bNcAKd&F3P)x0vWYt- z%XqmqUU{6zn}2Qnp`cO6D+m+MVw1-frZM=(%KTY!epZw*oACvX!4t=750*HVzGU7d z{?a;mSwAhmn^AwC&VNHN;eU$x-(v)BBGUz>|AedYUVnGOW>7eRcox~ro0lQ~vN9*U z{%XeW-UvEYt7+8#gNb0{1O9i@@NcW?|HU*+W-)OSp6*R1VWB?~_(#LP&D_L%{<^Y$ ztk&OGqS0h!`B4eXc$IBz!LonNi17t$j`#kxb?mag=g*JwVL(C~AW<+fgoH#BAbR>p zeFz=_!$b7Rcmx_wGDPa>!~dtG8?UQlwFr$y;PniN2nYf}(1#!lka(UmJtV|XA7!A2 zAfk|ZB*LGaO|<@c!A8)38}1Y;77QALWyc_qvAp^{X+7CIIV)4Fc>ggvO#H=&Wjk7% zgKVrU^xry^WxgjZ=D#-TE=S8qBK) z`0?7u^Zr{Ke}DI}T1xXD?{9#B@jg)a*zb4KscL>x55cBW)%>QDmM(NE2aEU~jjwr% z)!6<7GtSwGx0NPic|+rG;_vN14IfCv_a zxCHaz(+Y9%0TC<;aS7(brxoJj10q-y;u6e1ME;sYXB6yg%hhfgcS#Ro*ND8wb051&?uiw}rkQHV=0A3m)R7atJ8 zq7av0K73jsElW;e{?T4tuaM#H zu5Tr;E*5>ep5h$tS=J`);NEZxj(*$B}dn#&N87n!>Q^?2q9SSvVm znpAH_!ZnXNrmQNH;_kT*+&E`eEdjZ_KZdE@w(>!hj_m8iCUjcF^I+vhQymclTjezM z+f_2>!_P+7NhrebY6%AK;@?JFOequfn<3HhtLRZ?7y#KJdkwOxEk@$o8%PxhmX87IV+ zCp>=Pcs{yJv1r;(_g(v&lGiD?!15y<@ZQ@pN7Jv~ja?;A*$T+7GQPh;TGT9agrZ=w z_wuT;`zvO@O510>UD%x6^*8!ghLyod?! z6xv1Rt?q|c6867+vqa0fb_6&LZ^E97Y`wNBLF9sKAtElZuSc;LE>vAfDGF7%NCl{}}A8PTH()Ot-sL~qJcVFvu0p-?h z&Mh!IimJ)9=Z2kKDXnl#!zYAvSR0KPQ6@iIo=h_|EK>t@JtH1!a=uErVavsoU9KwK zU~1PFe5opSnYPnM_#5e4@0VY`IWjVICzaS}a!%e`k_9Sjh$^hk%QiD8gP-l%Py;|) z;AK&(HTq9A*CsVZhU9)b_}=h>V!*X~PCk!ocPnqKex5fnSaD%+u#FrO)7-zsf3&D6 d>zfMT{MuJ?#>Ml;#@>~;v081JWxjFee*pQ}dAtAs diff --git a/src/main/resources/assets/productionline/textures/blocks/air_brake_casing_front.png b/src/main/resources/assets/productionline/textures/blocks/air_brake_casing_front.png deleted file mode 100644 index 46a9d9f9b8c6edd45a596a4581e696caab3d2a76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18551 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 F{{c65yXgP` diff --git a/src/main/resources/assets/productionline/textures/blocks/air_brake_casing_side.png b/src/main/resources/assets/productionline/textures/blocks/air_brake_casing_side.png deleted file mode 100644 index d50721aa9348c10ef70594cb89d8ece174f962ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17509 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 Sik~4$?&L7T{;2JO75@PoO{(kw diff --git a/src/main/resources/assets/productionline/textures/blocks/carbonize_furnace_left.png b/src/main/resources/assets/productionline/textures/blocks/carbonize_furnace_left.png deleted file mode 100644 index 50f43b68bab1d11e062c16eec8cc237fbe0c19d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21533 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 diff --git a/src/main/resources/assets/productionline/textures/blocks/carbonize_furnace_left_active.png b/src/main/resources/assets/productionline/textures/blocks/carbonize_furnace_left_active.png deleted file mode 100644 index 89cf45a82be154b02bd23757e1ae35276535817a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21533 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 diff --git a/src/main/resources/assets/productionline/textures/blocks/carbonize_furnace_up.png b/src/main/resources/assets/productionline/textures/blocks/carbonize_furnace_up.png deleted file mode 100644 index ed0263368bb26f1609ef92d8435a9b6a044ecb17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21533 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 Qin?ZRJJ;r<)zY>90eX7ti2wiq diff --git a/src/main/resources/assets/productionline/textures/blocks/carbonize_furnace_up_active.png b/src/main/resources/assets/productionline/textures/blocks/carbonize_furnace_up_active.png deleted file mode 100644 index a739d31f169935fbb7646ccf697e4c452fce31a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20635 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 diff --git a/src/main/resources/assets/productionline/textures/blocks/cseu_back.png b/src/main/resources/assets/productionline/textures/blocks/cseu_back.png deleted file mode 100644 index 203e9280aab2bcfae79e5369c75d930a2cc8c478..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18110 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 diff --git a/src/main/resources/assets/productionline/textures/blocks/cseu_top.png b/src/main/resources/assets/productionline/textures/blocks/cseu_top.png deleted file mode 100644 index 253dd2bd20278c8b3830d444754685b9e6d25b90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18076 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 P^R+NrZ<=nrZQuU^rgtM* diff --git a/src/main/resources/assets/productionline/textures/blocks/cutter_front.png b/src/main/resources/assets/productionline/textures/blocks/cutter_front.png deleted file mode 100644 index 1cfc7551f9fba7b3b115a24182e835a2f2168d0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3249 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 diff --git a/src/main/resources/assets/productionline/textures/blocks/cutter_front_active.png b/src/main/resources/assets/productionline/textures/blocks/cutter_front_active.png deleted file mode 100644 index 15ed5819a9ca8659bce1fde19836be36da19e50d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3249 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 diff --git a/src/main/resources/assets/productionline/textures/blocks/cutter_top.png b/src/main/resources/assets/productionline/textures/blocks/cutter_top.png deleted file mode 100644 index 5b704252d47cbc3b6c6fbc37a2c20b502b9bc473..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3208 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 diff --git a/src/main/resources/assets/productionline/textures/blocks/dehydrated_water_hyacinth_block.png b/src/main/resources/assets/productionline/textures/blocks/dehydrated_water_hyacinth_block.png deleted file mode 100644 index 18aa8d3fa03cfadc54b74888ea97791113a3fa05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3103 zcmV+)4B+#LP)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0Zd6mK~#9!MA6%B(?Ar3;VfULSE;-dabD%d*Fi~P{66VrS!Ss*uB z_SCfW`e+!{_`(wdS%A3UyfM*$)_u^El81(8Dxx5Pk&=$T)Kp}8F&eXwY(Dcy5(EY& zG9_1fwqRf|MkzZ6&NPB%wH7IuxKOZNAopm9a#n45nk^mH81qfXKt&)DrD%*w96z*H zjO4|g3)A|sNEWk1SqU-&yS2-_E~PbnWMp#BHfF6Y(+XMpbYrBVAQ7ePPFTXV)c((` tVF2aIj8dMpHl(%hj~MIH0<^sU8vt8frs8u%tDgV>002ovPDHLkV1kdt>URJD diff --git a/src/main/resources/assets/productionline/textures/blocks/evsu_front.png b/src/main/resources/assets/productionline/textures/blocks/evsu_front.png deleted file mode 100644 index 253897166b249a68f123559011021059a5e2e200..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18372 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 MdW}_%#l{`~4?v2#>i_@% diff --git a/src/main/resources/assets/productionline/textures/blocks/evsu_side.png b/src/main/resources/assets/productionline/textures/blocks/evsu_side.png deleted file mode 100644 index 61d8fe9a81fe733f02345177f780d45409d85a50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18418 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 diff --git a/src/main/resources/assets/productionline/textures/blocks/evsu_top.png b/src/main/resources/assets/productionline/textures/blocks/evsu_top.png deleted file mode 100644 index c4262d0e64058a6ea2c8d00510fc74d9f45a838e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18571 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πLPEY^CjRG{SxJ% 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 z zZQZ4u+_gqWUne`qd^CK%D%gD3XRqBFzq>lpb_6Znkwr(ZtG~xPThzVaS3TSM42C|I zbSx>IAWMzCs`UhsvpmPnOG_(Sww3pq{y-&q--E$c^&!sthWWHGo9gtdglv1c1vcnv*!?m__J{S?$@57uo=!bm z;%YZI@Ayk8#+}dNpUM9B;+ovo%`Ud?wc7`H^!oZ2YjYlScj7uTIvM;y*P;t+3$~cn zKHS?YdtRmQaGQ!deeDbG$)GI*5fxV}9#lx^k@UJZlwadF^q!DD^!&M; z!e^TGbw$quw!N3zy=4BX7d^+i^8e8abnz{)3?5+Ayxa9WQrSZ#ujqBi^IWR{yE`e7 z+fHqp`O&hca|@SAYrIfYbXl5C&_Aq-!?4;CLz(r7-3bBzu-5-2cgwWx=ATWcw{L5) ze{-_(cH`}eruZE>15%who>mQ}$d3<8r>7d9Ea-W2C_Q<}rX^N|IiEv%kS%1tQoTr* zl+@(q#(hJryP{h%Ju_31ZC4vVj&I}*+Kj~ex~+37@HVeXS*^rn#2_DHwh zeAWl(phts7&fn*avyH7nSfj6S7d9|EDT8I*E=Jkh5BSbi)jf}P3~wo}W3qf)znmEl?(bkE2Cd!Ue26X^&rIgGq00# zuDxlr`P1K3#F3}HvxdT}in4iG@7X=)vMyjs)l1d#D|yC!r$^3LHU#(N_T)8{7O2H9 zA2AuTe_uUJF3o&sH;8TDJ~jd$-1GjEM$HKw0Kg!qjzlgIZ-XH->DnYurUykkkj@fZ zh5~@m>OdBW>`UQ7JSg5&hB36~MiCT3^)!aM=;0A~mN~_TiVI>>9D-~e$w9tkv?p{m zR>mk0BM3mJa7mCrI*q}>1R6sp;$j5Hq@ptX^DXhW3lN(c&p)Q2O`aHK8_fy5xt7z7gX7MIFo zK*r;eJeYo5V<>cdpl^>a^P;o94aDGlVJDyn40JjrkhjY1c=a0Dlh{OKvM zzJCAs=KkGje3O4UdoI;$YH_~v9anzoMhT?;!fjlcbel+p$rUmZ^aInkNdQU~8Sdh3B?6@Zkp#wvr9Fc|?1OlUL zsD&6mm=mU9Lkfk0)-y!I$ol&FFf>J12Zq-1B*FA36tWIU*8r`HMomoed-oqgTQJFf>nA(0dVm?6ni4@N;zNIH7Dh6suw`RhQ_g8eX% z9b0g1%plRG^%5>Hs+QY!m0EPZK#81Nf zFcgl;5o8l@T9yfNZKCoxP_};G`cNT4>(2aEa=ulRai56|jvXRK^NSnx$L0Jz1e5Wnx&L~M03QlNSo%+fn&|cGARML_H-N;Z zn0gB`fx;)#WSP2jH$ zzqfLe>-qi8`np?x+=)h>WQ-S+O($`&R65C<0%tM2jo?#_Q)3!U)gW^wjmgF{Jt9=Xz`{=*U4P{`P59zCnNHI#?I!BP zWUJu9QE<%)|8~*(Lkam-Y5$W4Q#1NcMg_$Z4FUop+!Wyw&IhE5aDjjbH$}LF^8u+M zTp%FAO%X2Pd_bxQ7YK-OQ-n)6ACM}-1p*@66yXxi2c(K{fq)1%MYx3X0jVNfARxj` z5ia3;K&l8A2#9b~giAOdkSf9j0wUZL;S$aVq>6BXfCx85xP zGJroCBu*eg(>4P<{ngt)$(cO$iOq$cM_nP@IQTLy7(KdG2J+%in^Q(+yEl++W$Z`T z!@PT`mJzmXRD}|@zR{&jMKU_cV~f0$Qg~SK0fUwxc5I;wUcqI1&aLKEIyxM4$+YLg zsId<>%~l2Y$M~k-9`xU_t)~$F(8SqQ%kiq(?0qwDFAasCh!jH*`QiTI>s>5v7#-NZ zU%XbDp>mHDK;At2P=@8nqp^FHbHmnWu5i)z)922D;1>)GLqE`V6rJkpT(0xyBMz`m z(N*VUS7SM`T+=iw8oJ`DD%V`evS6&n5d)2gWd#I>aX?NCdK`BYv&f@!umg0I(%rTvD8`@r*BqKEayE!J-9Ki zZm>8)tf`UJaC_gm#cO57W2{_m4E(MCHs8!CgnyAY)~pdaGg7r~5fwH3MlQ*ysx8~v zDk36cWl-n40+f^{z)Oj=DveQod_BlJz%J&wbNGR7Mb18(p~8ZI`UMh&jYHpZXIlJd-VX%$nb4?@H(!4cYdXY`x?X| zJ3gMbmfl(wlLgo-hNU*y+U~izQL`}NP}nG&PHx#T;`Uh;NOQJX6T=EBAHN^k+S1k{ J+idf${{zW{tp)%9 diff --git a/src/main/resources/assets/productionline/textures/blocks/fluid_kinetic_generator_side_active.png b/src/main/resources/assets/productionline/textures/blocks/fluid_kinetic_generator_side_active.png deleted file mode 100644 index 9907132a0fdc9260dd1a21156a27dcebb6891d7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18609 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 diff --git a/src/main/resources/assets/productionline/textures/blocks/fluids/Bio Fuel_still.png b/src/main/resources/assets/productionline/textures/blocks/fluids/Bio Fuel_still.png deleted file mode 100644 index 4c47668deb464d111d7ad47bcd9fb3bfbecf8271..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2930 zcma);`8O1P7so%gno)ynV@bC7R!BtO>{~L*I`$-62s4PWj4hF+gt0gFtr!gVvTH1AwjlzhX$2ViN>_)zDo>$He4;H^$rVfwzx{zK)KFkFU3@JIV!s zps`%DKA42^p=b zJSv=IjA-v}ieThHOfidaEKpkASULb$W5Nc7W2!U`7~XgvU*j`;`8;Rm^xvok6GMZvjhl8 zU;y|FdgmE6KL7`d$4F^Law{kxYKmQECRZ{<*wo4EF-A18fPh469J{6ih`?)0_X3gY zj6mlcS09sz0aL-1p_VCvy-zd=!2rmV^uEm7Lsz*;>7NAxH`bgrUJofs5=DEB=lP*=Ev#h61tw=Z( zHeH#GSO0r;+IuQKeCK$2G#()<6CSr!2*!Rff8=~FmGn|W$zxS@IaJXw`P`@~$tS=K_n3@v_hvhpbNyDBDuf-_mu9JL?i zuEVHPoOd5D`M^&&@a47gHO4@hwYnf&j-twOXPgp8#rh#|d?K@$BSIl1qC{jdj@wkM zqszC1k)Z97Y=;ovkn!bKO1P`Jha2w_k$-mZtWi%c?QxAM(^p1+&G%)(0?$4b_zhwd z*zF=RiaZAeYR{=f)D@Ku-u~r}0b$P)og)V2*j%4~cf9*NR@dRFwSZ(Nuk*aMqGghz zvyk<_0X%}_JVzSjJY#$W*D~bZ6OL9?Bo3!%ZD6faCb2AD%h>?2f<`@&YyC$owamCy zBA9cxJ;+J98fSfzD7h+nPBc&A-al+y_Nj>TY~3kyMy#R|IC=e3`ksh!giMK9iTV(S zdyawR5)R${a}H7yK@`bMuE(+Cj8pcz+ve)Il{?~Q44_5lktJ!Iw-jA8=9ypS%WLBc z%1!$Sd0!#ramx93^w9+YCbDL+1TF>tEQ!8sUL8t_O!4sNEO$3|`UBZTOat^s)H&VE z&zVD>zfLYv7o)ZUPs3thQJn~<3;dq^A^fF$_58AUgI6qHGVxvJSH8&$;@w`bzwoxO zzO-{Glqb1|GhI2|GCe$%zGsZGPDJ&U=8FbN;mYGcdZ;*(usc5{YW|)TRg+w_oXOkjG<)p_!v43>eGdVF_=bh|N!1ssWWt7r#(sGKCF!zjF zsc%>6FVq{mN=c={=CBLs9>LVu9{Qa4uHWW34=UPVu(%dkX~M>9AX_FCWXoq8L_#zn z?tHyE>3Z~gSNv2YZ)g*)%7j$)c9axkvpyx(qWghYJl+f*cv;R4*>FF|eQhX=@_IX2SrBQRu>ElP+- z9vE-b#G96u z8YmihE#VwO*=IgG!h0-xB`ffq&z(zbty=RR|CxLh8ZvA0tFXUqqOETd|EPW&vV_1& z4Jo(y6J?6g1!{#&v|rDQbA|2+={48?4X4S?I{SAjCRybb)VRC`qILPk&haUeSkwArxJ*r2g_M`?e*#7+#n?8mCDzdESs9}lCEXbqE{O~UvK2bxDFn}d7Kou!|R>FU(bqXSv`lg)jJ zq5P}I-=>H&0%-_9umk`RQ2^}zJ?0_+{#O9_?ErxC3jpBWDfS&VkG=W&H?+)y#+HYw zp^T=0>GOfkN9~VBCw=uZ{g|dNDWRIB_^MJekIq2&-%k$R*XKW8`G4z=65m_q&I;yl z@0h7p8Q&w?R0!lv^J}V?@v|XSl)5(=b}8ntRoMTGBma#Y0L|8%Q_ltVXa4Kb*EPCP IsqGN?A3(-*NdN!< diff --git a/src/main/resources/assets/productionline/textures/blocks/fluids/Bio Fuel_still.png.mcmeta b/src/main/resources/assets/productionline/textures/blocks/fluids/Bio Fuel_still.png.mcmeta deleted file mode 100644 index fd840e3..0000000 --- a/src/main/resources/assets/productionline/textures/blocks/fluids/Bio Fuel_still.png.mcmeta +++ /dev/null @@ -1,77 +0,0 @@ -{ - "animation": { - "frametime": 4, - "frames": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 18, - 17, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 31, - 30, - 29, - 28, - 27, - 26, - 25, - 24, - 23, - 22, - 21, - 20, - 19, - 18, - 17, - 16, - 15, - 14, - 13, - 12, - 11, - 10, - 9, - 8, - 7, - 6, - 5, - 4, - 3, - 2, - 1 - ] - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/textures/blocks/fluids/Natural Gas_still.png b/src/main/resources/assets/productionline/textures/blocks/fluids/Natural Gas_still.png deleted file mode 100644 index b0ed43dd136d7c7116c91967fad49c00fbf3d1e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5441 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 K!x96h$o~Vi8+Jti diff --git a/src/main/resources/assets/productionline/textures/blocks/fluids/Natural Gas_still.png.mcmeta b/src/main/resources/assets/productionline/textures/blocks/fluids/Natural Gas_still.png.mcmeta deleted file mode 100644 index 4fadce8..0000000 --- a/src/main/resources/assets/productionline/textures/blocks/fluids/Natural Gas_still.png.mcmeta +++ /dev/null @@ -1,45 +0,0 @@ -{ - "animation": { - "frametime": 4, - "frames": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 18, - 17, - 16, - 15, - 14, - 13, - 12, - 11, - 10, - 9, - 8, - 7, - 6, - 5, - 4, - 3, - 2, - 1 - ] - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/textures/blocks/heat_dryer_front.png b/src/main/resources/assets/productionline/textures/blocks/heat_dryer_front.png deleted file mode 100644 index 9001f08f0a4a200b1dbd250c40c09935deebe048..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21091 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 SPkt|%nuFae+vC=YR{bB*Nm>&C diff --git a/src/main/resources/assets/productionline/textures/blocks/heat_dryer_front_active.png b/src/main/resources/assets/productionline/textures/blocks/heat_dryer_front_active.png deleted file mode 100644 index 6db5649794a4ccb4aa0fd9714547a545f3694527..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21091 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 diff --git a/src/main/resources/assets/productionline/textures/blocks/heat_dryer_side.png b/src/main/resources/assets/productionline/textures/blocks/heat_dryer_side.png deleted file mode 100644 index 8c9670240f49c6263ed915f4956b1c55581aaa35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21091 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 Gn*RVGIbD$e diff --git a/src/main/resources/assets/productionline/textures/blocks/heat_dryer_side_active.png b/src/main/resources/assets/productionline/textures/blocks/heat_dryer_side_active.png deleted file mode 100644 index fb3b643bbed186d75b4005eae1e867bc026cf70f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21091 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 diff --git a/src/main/resources/assets/productionline/textures/blocks/heat_dryer_up.png b/src/main/resources/assets/productionline/textures/blocks/heat_dryer_up.png deleted file mode 100644 index e34d32c5182781474bb973a10ababa39796239de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21091 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 diff --git a/src/main/resources/assets/productionline/textures/blocks/heat_dryer_up_active.png b/src/main/resources/assets/productionline/textures/blocks/heat_dryer_up_active.png deleted file mode 100644 index df5ea244a16fd44d0a7aef935295cf6655ffaf0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21091 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 diff --git a/src/main/resources/assets/productionline/textures/blocks/optical_glass.png b/src/main/resources/assets/productionline/textures/blocks/optical_glass.png deleted file mode 100644 index 7b45410cb5849ebd6a996d174b0c5c56ccc2186e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15486 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 CW#nxD diff --git a/src/main/resources/assets/productionline/textures/blocks/packager_front_active.png b/src/main/resources/assets/productionline/textures/blocks/packager_front_active.png deleted file mode 100644 index caf969e58689883294097e39c877b4bc521de7ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16011 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 XISuD_6{%*>Z=ol~&yL#_lU@2Bb}1ck diff --git a/src/main/resources/assets/productionline/textures/blocks/parallel_space_su_back.png b/src/main/resources/assets/productionline/textures/blocks/parallel_space_su_back.png deleted file mode 100644 index d1b7935525ad283584140a422c07644761e75098..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18061 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 diff --git a/src/main/resources/assets/productionline/textures/blocks/parallel_space_su_front.png b/src/main/resources/assets/productionline/textures/blocks/parallel_space_su_front.png deleted file mode 100644 index 334e16de1341c65db6031cbd5296c4acd07a4a59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18126 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 JZRWY-{{VunIZglo diff --git a/src/main/resources/assets/productionline/textures/blocks/parallel_space_su_side.png b/src/main/resources/assets/productionline/textures/blocks/parallel_space_su_side.png deleted file mode 100644 index 0ef802567af400e393f7e5f9033da9bc21f1fe0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17890 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 diff --git a/src/main/resources/assets/productionline/textures/entity/ray.png b/src/main/resources/assets/productionline/textures/entity/ray.png deleted file mode 100644 index b13d2463b53ff94a82aa7ac1b0b7bf9364b5567f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2993 zcmV;i3r_TjP)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0NzPNK~#9!?3A$zgD@0D-+u&L^8q4mj_!iuEC`a()z!)G$(-5I-Ng@S%I#nyg<4da z7HKn_;Z66D_i`x=A{@mVdU!)m0N#eeAfh}?utrrDt7zZ1CPC;rJkho@O#{?5v=Goj z;F4vy#xcY+0*rx_gbjh?FTnX6&X|=I9KHck5@H(3mH_2xLT0CVnk-ah@e<8Bk&<=< z!XR1%%)Et-Z~$b2K}wp-w)VyL3XnJSbQf6W{}FIa=$i0UP59V?TW$D}CfwVCt_goj n;9EgXzzH}3C*TB5D{vbCbgRoz`EP`X00000NkvXXu0mjfL&mW< diff --git a/src/main/resources/assets/productionline/textures/fluid_kinetic_generator.json b/src/main/resources/assets/productionline/textures/fluid_kinetic_generator.json deleted file mode 100644 index 0d42313..0000000 --- a/src/main/resources/assets/productionline/textures/fluid_kinetic_generator.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "forge_marker": 1, - "defaults": { - "model": "productionline:basic_all", - "textures": { - "front": "productionline:blocks/fluid_kinetic_generator_front", - "back": "productionline:blocks/fluid_kinetic_generator_back", - "down": "productionline:blocks/machine_side_dark", - "up": "productionline:blocks/machine_side" - } - }, - "variants": { - "inventory": [{}], - "active": { - "false": { - "textures": { - "all": "productionline:blocks/fluid_kinetic_generator_side" - } - }, - "true": { - "textures": { - "all": "productionline:blocks/fluid_kinetic_generator_side_active" - } - } - }, - "facing": { - "east": { - "y": 90, - "x": 90, - "uvlock": true - }, - "north": { - "x": 90 - }, - "south": { - "y": 180, - "x": 90, - "uvlock": true - }, - "west": { - "y": 270, - "x": 90, - "uvlock": true - }, - "down": { - "x": 180 - } - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/textures/gui/GuiAdvSolar.png b/src/main/resources/assets/productionline/textures/gui/GuiAdvSolar.png deleted file mode 100644 index 3b98a7783103ba1a8950e07e7c212b171d19db9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4212 zcma)9c{CK>+rKj?OO`B+eHrnks7Pfe>nOWyG1ibR+gQfdAW`=0%b+OH5K<-?M%l*_ zWeH^`4aP3}>-+tl^Sh>As@ogt&GqvHBs!Wdv02jv5wzF71V|fDXAF!~hwnWF$o3V48 z&O?|sM-I>hO3$o0SKDyAf0I))Z4hlzAs_a8vdjTl$9=LFpwQce! zs?Jc<90;a>2{`LK10>lPv|qT@&JNl+L8Zx?JMVntP>557U!W#dKroi?q_v?K0u2aAv`A)FwF8)J zHHj`DC<_JZ{A}G+g1S_Nm--tgN^QNP@dyYYlG3{~Z}wki$ESbh4qRKAm=c=$=uxF+ z4-;o`rkjE1W#$UAA?B%cdrkqsz0=opD65h@KQ}Wu=REI0*=Tuo=)U3wR~A|wKdg_3 zQUezKUdo8=?Cc3iSs0CHK}{s^TLO1 z(f1D$#rvjYs;nhA9nlv2sDn#qCWtrhObM;b2Fp>78e<5^fmygjXO!I=OLgwvv?YS`k$QEFVkSUt+W7W z6h@q@yngaj6FZK`l-I;pPlQ43PiUx~I!jb!Q9Ch%;iZ4dnQ@)#7Eykf`fVi@cj4)r zNtT)>DOtw(30CU}vN!C69cTVW&iaRR)Ysc-+3bbnV^2FI4#RtBVcCh)aC?Nz6HKw- zLM*!xyrtc@7+R|4mV!hGuSxo{%OzN=?k1163rauUe_XFEl@?KLMD-QwuloL_0Qck8 zLcczg3^Njw@yxxCyM|v0^X^$m-_4)?C=m8I(Gk-p#pE3S&E7gbM$_(*1-EG18OK?R zD`rVo9QiD+1#s{X^X)0LXQ6QzwnbW-2P_{wB9oJ~Ep#o^Uy3XW*Ra;nn$tx+kox!s zJoTkPjYu%-PIHihd{wfA7EW|oh+imQ#O4nsHrrIhS*DIBGy3#GBFWM^3_9+JQG{f% zNwIQ2i))^)C^^})MqUyN?R5yUvOK;voOH$qDf3Cn~Z;sNO$fTbyBfp(ZJ^%R~OgqyB8Nw zb#&jO_%$;>XZE}QJh?Ex5Va9_it!<1R2#xUjLV%XgsX(Jmg{1+?hBePnc3~PE)7ZZ zWV>WBXL*@goZC7V%8}B^nl7JimL8ryUv|sX&s1dqUB+BSmMuJBgMjV!Wm(DDaM=1W@SXHb9c2nL{e%qg}?rNP;U3A^3fA25l zFOFpN0^MfkCey#= zzOk}xG3C=WjV;M7`M91uf6*qu#?oewz;Ey-Pc(nNR zCqC?@9cKymda-jy-!1n_K81);`_2j+qx}KTF;168yH=l2k za%p*Kc}2#It{FAwhc4BM)fzaTKcC7tgP!y3~~yQS-wY;W!gm-~}n9 zaowFD*OmS-(p^$@#)09Kg|X?H8+vRl(KxFA`E&L2k>)b#rD+|cdlehE-#c>Hr{6K9 zxMdDlncY7JOSi>&<6c($uGGTMO_}T44uo!^Jx4}<+^FqbA|uGfjJD z-$X|S8@~sJtTRRNaVY$tq%GFJJs)K5PS6b7yw|@R`8|o-fv2u_}2UOIi`=-XPf>Qe-RooZTRzP z&!@3Z-Q(H!Yd2}h2=w`W`9^=7WRYi~(o+KEXM7Qs&xTLCq4p@8A~o&k-*zR*Jiibt zrnI^<6PY?)a;GF8tFNN;HG2%bt-GJ?jx<6NT-1B>RbZ%P-CEo2j`bh&NywFY?+y62 z!>CB@&2ps*CGBwUgGt0|D=)IsHfhORu>!TBM^@;ge7V2tMjY@P`aN_3S%4-`S{He0 z?}>ir#f#K!{tnn$f(6nq>y9CVlY(CFH;f$oI=RdI>we8)l@rl(;b+V+ogsrzT-0TQV_IouyelWFnv)5vO zc!gmnuD7uQUApc|c~$yazD>AIpuPvKwEAMdyk|6wf~VAtw-E%g#r9PX4cGg29otGi z8*D4jhaT=<+VV`FPqCbVL~I0T3(#04556ougy90D%7`0Djp4AfE*Q%bCZ`id4yZ?kFeI@g^G8-VlyAJ|56-mt~wH8_}TD9u%2uT zvZO=Oke)%jYDnQV(1t{^+2`SwD6dqrnz%#m=O8nLX7hyM@aL#K2+F!gu3R}^zoa*K zyaBx~n%xn5_-n#88q_T>AM73g{XVUf95IK}nr?8-5EV`%joiJyR>6_6B;IHpYZ_ux zZ$-AQ=r-K2SoFk#=);ywu`hb;u0E7iPyS{_ftK1WQ;8|DjQ28+R4PEY3|7CJ9vcuI z&QJM4h)Xlh*A+Eth93t7g>8(FQ1(LCl`}}v8A3pX5ffE_yj3jPiSpa)Am1;L-Br=Z zzBlFW2A2pbuz?VJkZiGAP1Q#QCzF1oV2@jh$W$i<3`~v(U|KN24HlC}$Jd$pvFj>d z=ORJ?H74xKTzJ=d-_joiDvCRJwDRMtAtVN{$ARH&KE7gT1Nw->6EVV>bqQiOZU*9H zAJ10Dzi#w7e+f#=M^ahLeNfmRn-K=QO!o(BxiU4b|M_t^oZgc7 zipw)ExR7BsvNXq#-t4W31-+Cof&_^(LCYsJl((o)?BS=UI_hAnB~&@-*acr-AG#)0Qc~jM z>&yCS(h#sMEwErrk9&sdj+?}73-D%;#&}4 zz+$4!YnYSe;hK+=rPk}A%g3(c(E6_$TYFO62~!&zs3n2Tc&(zJ+jAN5a=|3>@I3ULs3 z&?e~O;=*%;DJz@$^{Z316}=@py*iw-dktC{47qAFf5`e5 zHgC?`J;*In4u7QAzIwbPZ=JZNMvt7fhT=$2Q=)3?!be%=Kx%mvm896%Bmotz9yz)A z+8U?@0pwOrC-_|DYfDtEfczs!7L)}{fN!VUWw8P=OI5|!ceDkkQQ^GrT$U15KWhe1`_lgvM0|rI(B3t-n?~8^ z#e9IS$NWWx{gBnPhkRn(7k$XT?8(1dT@~m;Xn{9ok=`S(C+XAHFh>^F(cG@&ucsk4 zNgkoO4)XkNh|hN1aqyjFF$Z$<8(T|OZ<>0%AuCSB16}|QH@@*Lt&)Lv-|Ejqe@FgP uG5=8Kzc&3_TK={B|EH<`b4pb25fxx;D-siS94Y|EOGi^*qe9It^1lF!R8Lv} diff --git a/src/main/resources/assets/productionline/textures/gui/GuiCarbonizeFurnace.png b/src/main/resources/assets/productionline/textures/gui/GuiCarbonizeFurnace.png deleted file mode 100644 index 778bde0e10178f5aa155486d1431d905aefc51ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4457 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 diff --git a/src/main/resources/assets/productionline/textures/gui/GuiEUStorage.png b/src/main/resources/assets/productionline/textures/gui/GuiEUStorage.png deleted file mode 100644 index f87f665faa92cb15a32c11172ceaf7c3527c292d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2138 zcma)73pCqV9=-|UJ(#ie7>YqLMrc!w%9_7cl_)Z642pWx3hEKBiD!x0w$sCS)~HrW z*O=5hI7moQkEZI?dR2{xDVnu}py_x-ve9jK_UxJ2(|gZ7_jiBip6`CY@819Szwwo; zgQA?K8~{KO>v+Zu0GK$00U3mN@{PTZ7f*fO|? z_NtKkI6dQZ@Lw!HG3=|V4&8?5GqP=0O|z@Nu#}*V7{mJOBGG=N}1wJY1WTh%@=0Yi~_G|asQGtPaMy{of zCY4BYbBvzd2=Eo?0ulglAOqe8L6uxpiyN)G3vF&s`pD8K5G@Z1`*j}Br2-VRY?5DB zt-}v$m5JW&&RF9A`=-29GS0fY(RexMEK=oT|^1XC8%|D{v zuc2*u!Lt){2PcXT9_QdgLgJR56h$(pm(@`qlnVKaQaolxmmUv`7ERenHquCeRr+P& zRV{j)DVxS;FFK>sw_o5k>#96D_xt&&Vf?f&%dDxwTjpJ9$IKa9y@DmWT3l##k!L6E zE{82RC8X2x8j3T6(uIOUq!WDqE4~-lAlSHVb#}l&RsFyp!^wbo``9&EZXA|MUe1X-iw|AZyH%3g!!iRV*x8>SYCb>aSXhINyZv!ymAZ^rClq_d+SYW8vdx;Aca zj%6_5?&2NHy}@#d<+`I2l8fCg#YXq)?51)je1BTGCNpTw&|zjEUw*wlJ+;DM+_L0v5KseWXZp*MkLLM+ZUxf77B4Gf z2uPA-WBLD_yx>#SY@|DXD8M(~n%r2{lK~=v@Ob=l^p^TXrS^N%Hzi@yAr85RSz9*$ zXdPeSH&LnccSx3EpaB0!{tAUPmy6U$!`Ug5Y&Hjs%4$V>Ep6>|Ud7g(&N(hIPAJ%k z%uSy-+A?*yW2xH=xckp1^Sf84?MjX^&8!QNIG z*dCatB>26cd^tj<$I-OXN)}FSaitXQ>?E;+Z}owpp`qy^iCWk@lhFmPuy#GcGuR~k}pxn3ZAFXnoP!upWPn@kUs`zVE3-<_@10q^*?#z&%dN7q7)Oe$}- zGZ?FjJwFbEU3t>dbYsv6LO&=h%;daJA6_Py_bJKEsUVSJe|C*Nh$Q!=NtSQ;3O<)p u=s>(x;`cQA-zW6pd*1%%K74yOiVxLf)@YX5E&d3^4Quaurv7xmm45-_%_W1Vj@zcM6{u(ozMa#+8dzI@b+=wn1OvxvM} z%5ecV4Wbm~NBI(T;VqpQB$N$4L(b2%g!|@5(F(u@86qImr(ER-QsxPuz-#D=5KH^) zX=JUQh$-NI1!e?TmT4i02B71LQ3osNI0woNzdWP?$pE+^f^Q3eB6_g8qp3^*MhlZB zIlySn`9do25(3gLX$V1Kb->m*+&~=K_zh&EVFFjk8%rTb^Qx;FP$Y%|_{EzgGQw;D zGVQi_H{ibk1**Jfd&u~;$g-sdurq}=UQso02x!Em^rYS!xW-zO@}0|nYhz~a!rV8v zPq*zjE;Bh$F9@Wkq6E*vm&vqx=>Xu`?{7M}p^~_~v@pBmuvbsd zoTs6sT@!xr9wRj$r+j*C)^jE0U7l{Dr?9zVA8@GCWlU&fK&miE|N z7CdQ>3OkO!+&?Gt>ApBy?55fC8a)B+cEneMS85kJQ|4G!!me)ey*Z{%@}~#rXS$6# zRg{%Dx5m(Q2sDntY`_n|LboMeaM8X3OpY>F5qkh6VfPbYVi3@inl}$X{jYQP3z9js z+Nc0f%MKSUzeP#c#ENcYNN?h)Z{&d5ol%3)2{kG*-9EE`JWuof+?!jRMvd~LGN$9r*{u|1dh?OgpcYVunhRA=oj$j2~0h#wW`rQ%47Cl|1T z%e+SB@vp?N>I<}XJjsI=-gbFq1sB|sc*1(~<$c&e;zS4k)!3uhdJXC1@Xz{WKcK#_ zuLXQuv2EGj{XQ~`R>(IwuKipUyh_Nboc#WKzkGc_NNl`4vR|6P;l-HU{TI>dw$IJD zMB3Ty7tLf%5@hXp%&z;faW`h#5vYWqamcf)RMtk8#cdky>z67>4?ZE_oIjw252=|4Y13L>(P$$vH={*4rtHw5706{A5FR{+C6Z-I+53s*SgSf zxhL86okMMZ#h_1jcZc{SdKBHc8h>*r-8Iv$VXS`Q=w;Lg_4L-eadL6(Z^qvQ<0#%} zzu7~-HBmM}m=H}y(3->d@#1**VN*9fZc`K;N*;x)DkwpfwD_Uir&;G%6D|*2CK`H- zORpZS(yYE)J+pRm*KSvM*L}B-r~5n$&#;1zLhutG-)=uQuX=pmtW0xZOJVbhsUx@J zd+&^GS&onQ5^*f4eyJRW?)kC#9$A67ltr%f+JVYJVlJufTkB+0XpV~cy={@SFY_`80#E~*SR3+@A{ zZV@fsVdnT}eN@v-p`IW2wN|>TsA6U`++u3@oH^4t_Cr`Ni(W0d@>{>c(C4wwp7=0& z!Tit>6Tg{I_~NU=giF;EKS#8Sn}M7CDyjxqQ&bZk5dBAeGnK{XtPu6u^M#ht7NzI& z-q2;Ych}Mv-Wk2|u`gYm%=yZ(w9<>q^j9>OHBSt_5%rcO^|Q)iB>!za$#c4k`5xLl zXSbfBqIA_8a$e@>f2yvztN3~;!z5+*#*{*c>VeZU-8;T**Qj+3#1OAIUw;+c);3Wa z{)z4zdpss_GdVpuJ=cKV`Avn`h*b5ZYF!60u_XEh#FBd#cT#lM-h$x1_x1#vTa;FR zZiPXq9s|3UWPwZ$9i*S2F6=1h{>&ZgUEpoA5_I6Ol49ElRI%9r8^d1 z?b+;79vTx|Qim)}!bCYzY|vilg3>?bcWRdAOm%FAf{6(C@$sK`tGm|laC{!#1HEUC zExU_xxi$3t*#>Pq`bx0?Q&)_72+?C;Jz^?>>j8Hyb}4kKM#EpX zH8UaTLlEVzIsxzEa!_T5P&F{V_Ob zUhmiY-sZ{Xp6Rr(Y9bXLju0D=$NHira^16)-eU;AUgT!*So3H!RG)?tr04B@+hr3> zGqW=;DQ)gAL?q4UKg`d}&{0wPkv56g(>h9XwbHl3II8w#s&M$MYgOCqb#DJ$PO#dj z_u3KIdoUqfeXm5RR7oS$>v$GkX6cE4w1-}+O z!+U*ZN243G`*D5PQbghQ6GCxenS8roJ70Y-LTU5kQAzJa2%&~hJKc`qOS^OgJJH+j zKd^7l|E{~Iyc~RTB)Ru=`%riw>l*2{$!`xg&;}q-7yx7>0Q;vTxdMQ%6ac?%0g!(S z0Eg#mo7Ou3P!ToNZW#rPuTJU4oHys8+^}gaz<0h)iV@1}ZW`nj+S$1fT^>#aVdQ!6 zIdFq(>FRfHeHk_BR2i9$a*oYB?$bO^2nStI$NM_R(ju>wJp#+ry`3w^GLS#nqkgP;8m$rAog#p6i}J zUx?$jtjjo-`6lB6o=Df0c>KTpSep22fkPeT0L z+M~PbLZt<)*KhiqG+|<5e)-ik3rY%>+MLJs3eM%Crepg~xAHedaRT>zH1&Xf)tW&pGQ7V} zaw?|+rE2IrrCOPyMO$R6_XJBL9Zcr(w{1QNd>;db^ z8o5&PwhzZ@D=G*JuZ@#i#v3CxSnjcnIny|#o_?L_A!c&#i-WhT%?GKQ#^>0M&DDZG zZ)!t;@wF>!7yF>~d#Rh*e5Mr5S-QGxTQPq|N<7=c_)Zl&QFgrtRQivOy)nP4ESNXF z+CD}89C^8vb;`-i9Cm8c67_|dqbl_E!&7P?>VEJsv(qp*n#Wa}qGi3}0tOY1R4W7p z6`iQS*uTE`5CVRIXO9Y zkKBHzRqHWgV1pHnbGtI_qBWzF3>S39*Q_EJ)wATvtyO6uK_f1aJLSRsUij#REUM?* zN$*F1q=7jXR;YnX5@)YSNK*iE!2h@OOO94=gt|9;ts7Ij#?Vlh7ZaCbFfUI7(FX){bs!U6x7A}P$s#TyrXpLWWRFLA~pv!Q00L?Uq$TU}Mf?qdIQnv$)NWvU^hE>TXT`5~v=^yK+d zN>QXRdFR2w!GLIZ(j+Z_+ES>_)J)Dq0JseKd&q5UXI7gB!7jP?T9v+TY6;;Cq0e-(nYWa)@fLAmYmQ|IV( zigMx6PV?)U{2&%B(iJ-PNunvfk27h|yKRONqPMb-ZDM50fU?Tk(uZDp3|K#H3^~c< zSeIp4#EAc{>7zgji6PbbQmuA95qnTudfU$0DUbIAGEx7%XqLt0kdrtMJB!3Rkxv?A-Mv3UK}yl@TVOE-a?I>8azdjG`6iD!8UL1K~;6N zZ^UI#_^$Grj4(CwPOkpwunnvgnr&TX>W91X;ZY%$_(dl_iDSpVmmJ*1#X8Gywe!}X zP?3g}h)jHqmx9z=Xt@n`IzcDj5N>(pSREK8hR0n7*-+%wq7nQxJ_d!$K`Pv3e-;s$ zJaTIaMG_DoY*0KDuXt};iZ`Az1RohWJ+b2RT4B+Z27Cm1A={ai<~z@gq2TTVN5^F~ zLf^LH3N3~l6fXv)DPIx=v4J_B%p58I^HG~{?y}*ZLJz|*?VuLa3?yUL9kN5XZ zu62i;O=}7j`n$qNpotM;9u({#4?os2&}a++#V0Sbbm>BABcaHahE4hdGBa{=HXtO; z_MH-ne3}nEOb~9Ma-spEpr9dxZ|%I*yd@JWK!3zdW75~|A7;c$k+=y+#eE?$%G0l` ze*z$SKhB0!=JJT10~tDwvsPAj6q=nh6t=6b?Zw0Dgt0-8r3~n3;T;8>hvRH}7xxb3 z6Lu0pc?5cw7O?EDo=YLA05*XB$=c`*AqUjD5IR3Y0HXkPhGZf903P5{e(34=kBUbp zX?a3m--NNZJZV4yfFne+8ULD4?DBmP{NA)`l$&w2qWLwnQAc+CvZ?|tfvV-m5GV{e zIgYJ~*9$WJYwkoQM>3L?wKIo2+<;?;un+&z#ZXI?n*NFHfNT3%=r=YL#kNf}69RFR{fBO3W2KoO4;Xl9# bZ=XT{cK-Lycu@8_AT>>O9ktTiwh{jWPC6v$ diff --git a/src/main/resources/assets/productionline/textures/gui/GuiHeatDryer.png b/src/main/resources/assets/productionline/textures/gui/GuiHeatDryer.png deleted file mode 100644 index 861ded0cd69c00927f81d764d2620c431f84c4de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4366 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 diff --git a/src/main/resources/assets/productionline/textures/gui/GuiParallelSpaceSU.png b/src/main/resources/assets/productionline/textures/gui/GuiParallelSpaceSU.png deleted file mode 100644 index 26d74fae7751faa095dd6e188d8410ee36355914..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4872 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 U;pVSRkN^Mx07*qoM6N<$g0kX|_y7O^ diff --git a/src/main/resources/assets/productionline/textures/item/crafting/adv_solar_lens_unit.png b/src/main/resources/assets/productionline/textures/item/crafting/adv_solar_lens_unit.png deleted file mode 100644 index 4525cbd83296d62cd35b66b5247b31ed17aead6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2865 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 P00000NkvXXu0mjfVR3WZ diff --git a/src/main/resources/assets/productionline/textures/item/crafting/air_brake_unit.png b/src/main/resources/assets/productionline/textures/item/crafting/air_brake_unit.png deleted file mode 100644 index fbdefde62aeae3b6daad6ba80e4f008817054863..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3331 zcmV+e4gB(nP)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0x(HLK~#9!jFLT1lTjSSfA>C@=cS+)iV;jGLeLO(cXD)76LByMZmw=R>sRm_IIv(s zg2utv(Ku-|n2-oIZ3+rB&_aRs>GS$`s6|mAp5!d|o}Aos&*5uPta}e-jJybW5&Gpc zMl1%zzJ6CIyc0x@r+)H`luxYDMUGKoPSGOq+mNK32s8VV!;+9M#j=gxD-0uFtnOswm7Z#U9iwJQdT12#nC=nqHLxLb6j$_g^ zMURant5+{=E_MxX-CO|R%8gDmOC!+X{{B9ta+zYOL}PcCIF3<45SaHLKb&3v{$mZm z_3GJPZ@h7FVuJAt;|DMGeV=lrLaAKFwrws?PBNIwp_Rf64`ec3VHDb-@7MTNTn3=o zYSC=9C|4>hEibcGtC6HBN-3057!h3C$!5C-^?IM{d7;0vTjNckz-T@Xz{=_>n_F90 zmWAs$c%FyjI2gb+#`Ja#JTEksWg#N$G#UiO;z0zhHO3f3ggB0gq6m|wsa8t${!vWr z{`B;rrk>Bt^x3w(m-&@+qgrL7TI~!e?LfL>+qTo$xj83_qD;3s%d)N=yF{gw_1Bps zNrKi#Z|v3lJV}~zXKJcrV2r_a-6sEua;XIB_b648B;WS!-+%OZVd24%5wzB!>o}R=p`kVq0SRCOJ%9n~YwPO;;7Eg?0|5K2AQqIR1t0(b N002ovPDHLkV1oAaU3dTh diff --git a/src/main/resources/assets/productionline/textures/item/crafting/bamboo_charcoal.png b/src/main/resources/assets/productionline/textures/item/crafting/bamboo_charcoal.png deleted file mode 100644 index 3ebb1db76c088595c385d246d186180430544448..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3266 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 diff --git a/src/main/resources/assets/productionline/textures/item/crafting/calculate_chunk.png b/src/main/resources/assets/productionline/textures/item/crafting/calculate_chunk.png deleted file mode 100644 index d15fb4a0c729cf218ddcdcc7c022c77c2c31d909..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2896 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 Hu0mjf8fl8A diff --git a/src/main/resources/assets/productionline/textures/item/crafting/carbon_tube.png b/src/main/resources/assets/productionline/textures/item/crafting/carbon_tube.png deleted file mode 100644 index 748da0c85371478e5b79d1304936ae68840ebe26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2904 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 diff --git a/src/main/resources/assets/productionline/textures/item/crafting/electronic_circuit_control.png b/src/main/resources/assets/productionline/textures/item/crafting/electronic_circuit_control.png deleted file mode 100644 index 04bd548e8d3e3ea048544cf607119f82602818b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2906 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 KwGug#p#K2kSH!{q diff --git a/src/main/resources/assets/productionline/textures/item/crafting/ender_calculation_crystal.png b/src/main/resources/assets/productionline/textures/item/crafting/ender_calculation_crystal.png deleted file mode 100644 index c06accb36aee3513895969782f0ee7804859169c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2911 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 JPDHLkV1mz1hWr2k diff --git a/src/main/resources/assets/productionline/textures/item/crafting/float_point_calculations_region.png b/src/main/resources/assets/productionline/textures/item/crafting/float_point_calculations_region.png deleted file mode 100644 index 871a6c808f2cfebe003721c48d47b6afcc42a5ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3022 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 Qb^rhX07*qoM6N<$g3pV=c>n+a diff --git a/src/main/resources/assets/productionline/textures/item/crafting/heat_insulation_material.png b/src/main/resources/assets/productionline/textures/item/crafting/heat_insulation_material.png deleted file mode 100644 index 8805ce8a0262b696d83dd4196b671d8cfdd98f6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3047 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 diff --git a/src/main/resources/assets/productionline/textures/item/crafting/heat_insulation_plate.png b/src/main/resources/assets/productionline/textures/item/crafting/heat_insulation_plate.png deleted file mode 100644 index c8a66404725b05b22edd4ad9c27a386f6b27ee5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3033 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 bN!$kj8Ebb{g@@;p00000NkvXXu0mjf^Ss6p diff --git a/src/main/resources/assets/productionline/textures/item/crafting/lazuli_module.png b/src/main/resources/assets/productionline/textures/item/crafting/lazuli_module.png deleted file mode 100644 index de4e043f0ae24ea9877e43a0b350508b8f8ba167..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3034 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 T%n4fZ00000NkvXXu0mjf=fQF( diff --git a/src/main/resources/assets/productionline/textures/item/crafting/mill_wheel.png b/src/main/resources/assets/productionline/textures/item/crafting/mill_wheel.png deleted file mode 100644 index 27fee8777c681e7f48daa8b5d41e0ef6dc93942b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3212 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 diff --git a/src/main/resources/assets/productionline/textures/item/crafting/obsidian_mechanical_frame.png b/src/main/resources/assets/productionline/textures/item/crafting/obsidian_mechanical_frame.png deleted file mode 100644 index ad445f04a990fad8104897887f7883975fd40a2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2956 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 diff --git a/src/main/resources/assets/productionline/textures/item/crafting/parallel_space_converter.png b/src/main/resources/assets/productionline/textures/item/crafting/parallel_space_converter.png deleted file mode 100644 index c4fcc079dacc72f0ded0338183ef284663948139..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2969 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 P00000NkvXXu0mjfKrW^R diff --git a/src/main/resources/assets/productionline/textures/item/crafting/pulse_electronic_circuit_control.png b/src/main/resources/assets/productionline/textures/item/crafting/pulse_electronic_circuit_control.png deleted file mode 100644 index 2d4a6104a7dd3fd176f47678dbe6c4c468564797..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2976 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 diff --git a/src/main/resources/assets/productionline/textures/item/crafting/redstone_module.png b/src/main/resources/assets/productionline/textures/item/crafting/redstone_module.png deleted file mode 100644 index ca997252d57dbd8f7524681477c082bb7b33c26c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3571 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 b8$Sa85&b?N>liTl00000NkvXXu0mjf6TOYl diff --git a/src/main/resources/assets/productionline/textures/item/crafting/rigid_paper_pack.png b/src/main/resources/assets/productionline/textures/item/crafting/rigid_paper_pack.png deleted file mode 100644 index 8e7646ea16b929e06001a4580527766267eaf369..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3113 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 ZgM*Z4US`5`@A9L;RFyTZmMWSB{|jHga9{uc diff --git a/src/main/resources/assets/productionline/textures/item/crafting/rolling_pin.png b/src/main/resources/assets/productionline/textures/item/crafting/rolling_pin.png deleted file mode 100644 index fd20f9fa4a02a7ddb9df38591fe58352872d17e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3101 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 rM2PQio7*hw diff --git a/src/main/resources/assets/productionline/textures/item/crafting/small_compressed_water_hyacinth.png b/src/main/resources/assets/productionline/textures/item/crafting/small_compressed_water_hyacinth.png deleted file mode 100644 index 6cc97545e305c85504bed5f5d679118aa4a76cd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3478 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 diff --git a/src/main/resources/assets/productionline/textures/item/crafting/uu_matter_core.png b/src/main/resources/assets/productionline/textures/item/crafting/uu_matter_core.png deleted file mode 100644 index 7017e76dbb6b193bfc28f591a920260c7ae2a1e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2974 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 Uk_mAt>Hq)$07*qoM6N<$f^=J>;{X5v diff --git a/src/main/resources/assets/productionline/textures/item/food/diamond_apple.png b/src/main/resources/assets/productionline/textures/item/diamond_apple.png similarity index 100% rename from src/main/resources/assets/productionline/textures/item/food/diamond_apple.png rename to src/main/resources/assets/productionline/textures/item/diamond_apple.png diff --git a/src/main/resources/assets/productionline/textures/item/eustorage/ceu.png b/src/main/resources/assets/productionline/textures/item/eustorage/ceu.png deleted file mode 100644 index 3b66d6f91acd832213f332d8ceb0cdd1dbccd8c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3155 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 diff --git a/src/main/resources/assets/productionline/textures/item/eustorage/ceu_1.png b/src/main/resources/assets/productionline/textures/item/eustorage/ceu_1.png deleted file mode 100644 index fa6c6515455405830d36e6605ce6a488f1658bd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3163 zcmV-h45agkP)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0f~m-mUqhp3dVkKn@7%+AhEfXO_bp%v_yppsox#`XHn9QpDT)7mEv% zbr1wOH^p#Df$LUr-D*C{V*JF~!gD&-1iC`N62%usqY;%#Me}1CnTixEW|5E;N6{;@ zP*4yF{y-GH=H`_sP-aGpavi_gN4AP90UFekFl0^~7Gk|c{NdepOf4Y2^`wQQH70}n7Jz@tuQnIZaW=ya&%;*iY;J#*>1-_0|1KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0fb3JK~#9!gp)r@!%!5(e~B-S(x{;s9K=;6feM1sEu$d#36u^6=M1F^B8XJz?B-Vx zgl>I<(9Nw|r_Sl1?Wi>NIW&o{q0uwFKj+?e?#YRvl*0FY3s?g_f$4p9_|@#~Sbzcy zfcxrj+U)JD0%mfqfU=>Kq9dh3gZXmC?DU!c&aT67Q>2@9+XmpK(Etv)J+~Lg_1A6O z!2`Fg762dPF+gnUq~n7Fq?Fmd|L*Y??E>JsWu%nU&oA^6A%0hay}f<%h~w{U9Rxwf zO)y?i;JRg8x15dQZS*0>#jHRJdaAHg6Dbp2FgsL`JY)u9vA|c z&A)d%4^O{Or`ugxd=-WSL6C8Q6_NfdKo-+Dj?<{3M?JmQFcrY6mhD0m+*< xGk2uqIt&ef$EPQCS*sa|VhfnvwcFF50RYgticTj@@?HP{002ovPDHLkV1m0;43q!> diff --git a/src/main/resources/assets/productionline/textures/item/eustorage/ceu_3.png b/src/main/resources/assets/productionline/textures/item/eustorage/ceu_3.png deleted file mode 100644 index c255540f22cea3b7895df6473460a22ef17c5b6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3155 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 RZfUSA1Km@{%e3vT{R;p?+6Djs diff --git a/src/main/resources/assets/productionline/textures/item/ore/cleaned_crushed_iridium.png b/src/main/resources/assets/productionline/textures/item/ore/cleaned_crushed_iridium.png deleted file mode 100644 index ddf7fba6779e1c0132a936d05a2f0f72d1ad0e95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 838 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 qzH diff --git a/src/main/resources/assets/productionline/textures/item/ore/diamond_plate.png b/src/main/resources/assets/productionline/textures/item/ore/diamond_plate.png deleted file mode 100644 index 2b1095a68e6bcc505eb01ac7300a25cb2cd5e6f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3015 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 bdB8CMG}0fVZAj3+00000NkvXXu0mjfn0I+8 diff --git a/src/main/resources/assets/productionline/textures/item/packaged_salt.png b/src/main/resources/assets/productionline/textures/item/packaged_salt.png deleted file mode 100644 index 0622399fd44742b35fbe088a32f6096a931ea51a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3256 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 e2I>Dl({}*6e+|k8l<-;r0000nU9(P diff --git a/src/main/resources/assets/productionline/textures/item/saltwater_bucket.png b/src/main/resources/assets/productionline/textures/item/saltwater_bucket.png deleted file mode 100644 index 10d90dc698ff9d740a479b2e10fdf3f414c81858..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2963 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 JPDHLkV1hx2pGg1! diff --git a/src/main/resources/assets/productionline/textures/item/tool/gravity_ray_pulling_0.png b/src/main/resources/assets/productionline/textures/item/tool/gravity_ray_pulling_0.png deleted file mode 100644 index c3d3fc9a798459909e2f94808cd455e83492d53f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3120 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 N002ovPDHLkV1mSw@O=OP diff --git a/src/main/resources/assets/productionline/textures/item/tool/gravity_ray_pulling_2.png b/src/main/resources/assets/productionline/textures/item/tool/gravity_ray_pulling_2.png deleted file mode 100644 index cfe5fa7a5322d12d915b548629070f0f5ad9ee99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3141 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 diff --git a/src/main/resources/assets/productionline/textures/item/tool/itemIridiumSpade.png b/src/main/resources/assets/productionline/textures/item/tool/itemIridiumSpade.png deleted file mode 100644 index 327a3385a27783c2b9b0567073ad16b238e913aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3026 zcmV;@3oZ1CP)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0RKruK~#9!V*LOAKLaIziGf1ELW<&5t5(6C`}FBkhQh)^Mix>uIy*ZvFfcGMT)A?E z;px+-#JOPAs#X7C8b5yg$nf~_V+I`^9fot~&Jhj+Y?@_dWl0J|#zl)3F~oXl!Zq{r z^D``3w1^=tE{>6?SlGRyox#CSh#@1+n}MI7A1*E|EDT}%|NkE+_B0dy-m{O{}Q`;V-K5m!R;G8g+VFTu%h;KEym>kq#$_V@QQFfcIuFDxu%L{Uh{ zW_&Kh>H>6|iB5@{@;v_)CAb(I422lxZ+}9RW|UYUM>9qkc$$e45fmi?-0CBzH Uz5x$O%>V!Z07*qoM6N<$g5l-FO#lD@ diff --git a/src/main/resources/assets/productionline/textures/item/tool/itemIridiumSword.png b/src/main/resources/assets/productionline/textures/item/tool/itemIridiumSword.png deleted file mode 100644 index 3f3e96e2a7a6c9a8fec45d081264287905d7b740..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3040 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 Date: Wed, 15 Jul 2020 17:24:00 +0800 Subject: [PATCH 05/51] Add some items --- .../client/PLModelRegistry.java | 2 +- .../productionline/init/PLBlocks.java | 4 +-- .../productionline/init/PLItems.java | 11 ++++++- .../assets/productionline/lang/en_us.lang | 29 +++++++++---------- .../assets/productionline/lang/zh_cn.lang | 26 +++++++---------- 5 files changed, 37 insertions(+), 35 deletions(-) diff --git a/src/main/java/com/mcgoodtime/productionline/client/PLModelRegistry.java b/src/main/java/com/mcgoodtime/productionline/client/PLModelRegistry.java index 594ce13..aa28653 100644 --- a/src/main/java/com/mcgoodtime/productionline/client/PLModelRegistry.java +++ b/src/main/java/com/mcgoodtime/productionline/client/PLModelRegistry.java @@ -50,7 +50,7 @@ public class PLModelRegistry { public static void loadBlockModels() { registerBlockModel(PLBlocks.oreIridium); - ModelLoader.setCustomStateMapper(PLBlocks.machine, new StateMap.Builder().withName(BlockMachine.PROPERTY_TYPE).build()); + // ModelLoader.setCustomStateMapper(PLBlocks.machine, new StateMap.Builder().withName(BlockMachine.PROPERTY_TYPE).build()); } public static void loadItemModels() { diff --git a/src/main/java/com/mcgoodtime/productionline/init/PLBlocks.java b/src/main/java/com/mcgoodtime/productionline/init/PLBlocks.java index d7fbc38..13b400a 100644 --- a/src/main/java/com/mcgoodtime/productionline/init/PLBlocks.java +++ b/src/main/java/com/mcgoodtime/productionline/init/PLBlocks.java @@ -46,7 +46,7 @@ public class PLBlocks { public static void init() { oreIridium = new BlockPL(Material.ROCK, "ore_iridium", 10, 20, "pickaxe", 3); - new BlockMisc(); - machine = new BlockMachine(); + //new BlockMisc(); + //machine = new BlockMachine(); } } diff --git a/src/main/java/com/mcgoodtime/productionline/init/PLItems.java b/src/main/java/com/mcgoodtime/productionline/init/PLItems.java index 3b4c2bf..754f236 100644 --- a/src/main/java/com/mcgoodtime/productionline/init/PLItems.java +++ b/src/main/java/com/mcgoodtime/productionline/init/PLItems.java @@ -34,7 +34,7 @@ /** - * The list of all those items in GoodTime-Industrial. + * The list of all those items in Production_Line. */ public class PLItems { @@ -43,7 +43,16 @@ public class PLItems { public static Item itemCrafting; public static Item itemOre; + public static Item upgradleCardSandStorm; + public static Item upgradleCardSpring; + public static Item upgradleCardOasis; + public static Item upgradleCardAnotherWorld; + public static Item sheepCrook; + public static ItemStack ingotIridium; + public static ItemStack aquamarine; + public static ItemStack converterCardBlackCat; + public static ItemStack desertEye; public static void init() { diamondApple = new ItemDiamondApple(); diff --git a/src/main/resources/assets/productionline/lang/en_us.lang b/src/main/resources/assets/productionline/lang/en_us.lang index 328cd1e..42d7829 100644 --- a/src/main/resources/assets/productionline/lang/en_us.lang +++ b/src/main/resources/assets/productionline/lang/en_us.lang @@ -2,19 +2,16 @@ #en_US [Item] -item.super_csrashsag.name=super_csrashsag -item.ender_pearl_powder.name=ender_pearl_powder -item.cpu_mk1.name=cpu_mk1 -item.cpu_mk2.name=cpu_mk2 -item.cpu_mk3.name=cpu_mk3 -item.fake_head.name=fake_head -item.toad_coin.name=toad_coin -item.life_converter.name=life_converter -item.condensed_impurities.name=condensed_impurities -item.heart_of_lava.name=heart_of_lava -item.heart_of_pure_white.name=heart_of_pure_white -item.heart_of_ender.name=heart_of_ender -item.liquid_exp_bucket.name=liquid_exp_bucket -item.ender_pearl_bucket.name=ender_pearl_bucket -item.brine_bucket.name=brine_bucket -item.iridium_ingot.name=iridium_ingot +item.upgradle_card_sand_storm.name = Upgrade Crad:Sand-Strome; +item upgradle_card_spring.name = Upgrade Crad:Spring; +item.upgradle_card_oasis.name = Upgrade Crad:Oasis; +item.upgradle_card_another_world.name = Upgrade Crad:Another-World; +item.sheep_crook.name = Sheep-Crook; + +item.aquamarine.name = Aquamarine; +item.converter_card_black_cat.name = Converter Card:Black-Cat; +item.desert_eye.name = Desert Eye; + + +item.iridium_ingot.name=Iridium-Ingot +item.diamond_apple.name = Diamond Apple; \ No newline at end of file diff --git a/src/main/resources/assets/productionline/lang/zh_cn.lang b/src/main/resources/assets/productionline/lang/zh_cn.lang index d7a70d7..6ce2958 100644 --- a/src/main/resources/assets/productionline/lang/zh_cn.lang +++ b/src/main/resources/assets/productionline/lang/zh_cn.lang @@ -2,19 +2,15 @@ #zh_CN [Item] -item.productionline.super_csrashsag.name=超凡垃圾袋 -item.productionline.ender_pearl_powder.name=末影珍珠粉 -item.productionline.cpu_mk1.name=工业级处理器 -item.productionline.cpu_mk2.name=信息级处理器 -item.productionline.cpu_mk3.name=末影级处理器 -item.productionline.fake_head.name=假的头 -item.productionline.toad_coin.name=虾蟆硬币 -item.productionline.life_converter.name=生命信息超次元转换芯片 -item.productionline.condensed_impurities.name=凝结杂质 -item.productionline.heart_of_lava.name=熔岩之心 -item.productionline.heart_of_pure_white.name=洁白之心 -item.productionline.heart_of_ender.name=末影之心 -item.productionline.liquid_exp_bucket.name=经验液体桶 -item.productionline.ender_pearl_bucket.name=熔融末影珍珠桶 -item.productionline.brine_bucket.name=盐水桶 + item.productionline.iridium_ingot.name=铱锭 +item.productionline.diamond_apple.name=钻石苹果 +item.productionline.upgradle_card_sand_storm.name = 升级卡:沙暴 +item.productionline.upgradle_card_spring.name = 升级卡:清泉 +item.productionline.upgradle_card_oasis.name = 升级卡:绿洲 +item.productionline.upgradle_card_another_world.name = 升级卡:异界 +item.productionline.sheep_crook.name = 牧羊杖 + +item.productionline.aquamarine.name = 水结晶 +item.productionline.converter_card_black_cat.name = 模式转换卡:黑猫 +item.productionline.desert_eye.name = 沙漠之眼 From bf2ecdb6db91af6c486492bdddd23656bd36dc47 Mon Sep 17 00:00:00 2001 From: NightOwl Date: Wed, 15 Jul 2020 17:58:58 +0800 Subject: [PATCH 06/51] Removed unused config --- src/main/resources/META-INF/MANIFEST.MF | 8 -------- src/main/resources/META-INF/productionline_at.cfg | 6 ------ src/main/resources/mixins.productionline.core.json | 12 ------------ 3 files changed, 26 deletions(-) delete mode 100644 src/main/resources/META-INF/MANIFEST.MF delete mode 100644 src/main/resources/META-INF/productionline_at.cfg delete mode 100644 src/main/resources/mixins.productionline.core.json diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF deleted file mode 100644 index 095818d..0000000 --- a/src/main/resources/META-INF/MANIFEST.MF +++ /dev/null @@ -1,8 +0,0 @@ -Manifest-Version: 1.0 -TweakClass: org.spongepowered.asm.launch.MixinTweaker -TweakOrder: 0 -MixinConfigs: mixins.productionline.core.json -FMLCorePlugin: com.mcgoodtime.productionline.core.coremod.PLCore -FMLCorePluginContainsFMLMod: true -FMLAT: gti_at.cfg - diff --git a/src/main/resources/META-INF/productionline_at.cfg b/src/main/resources/META-INF/productionline_at.cfg deleted file mode 100644 index 58aca51..0000000 --- a/src/main/resources/META-INF/productionline_at.cfg +++ /dev/null @@ -1,6 +0,0 @@ -# EntityArrow -public net.minecraft.entity.projectile.EntityArrow field_70254_i # inGround -# ShapedRecipes -public net.minecraft.item.crafting.ShapedRecipes func_77573_a(Lnet/minecraft/inventory/InventoryCrafting;IIZ)Z # checkMatch() - - diff --git a/src/main/resources/mixins.productionline.core.json b/src/main/resources/mixins.productionline.core.json deleted file mode 100644 index 57226b8..0000000 --- a/src/main/resources/mixins.productionline.core.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "required": true, - "minVersion": "0.4.4", - "package": "com.mcgoodtime.productionline.mixin", - "priority": 1111, - "mixins": [ - "MixinTileEntityFurnace" - ], - "compatibilityLevel": "JAVA_8", - "client": [], - "server": [] -} \ No newline at end of file From 2ee144a3b4fe22fd21495d1d5058a8034f9ff5e7 Mon Sep 17 00:00:00 2001 From: NightOwl Date: Wed, 15 Jul 2020 18:24:08 +0800 Subject: [PATCH 07/51] Degrade to ForgeGradle 2.3 because ForgeGradle 3 could not correctly load resource files --- build.gradle | 99 ++++++----------------- gradle.properties | 1 - gradle/wrapper/gradle-wrapper.jar | Bin 54708 -> 52271 bytes gradle/wrapper/gradle-wrapper.properties | 3 +- gradlew | 78 ++++++++---------- gradlew.bat | 14 +++- 6 files changed, 73 insertions(+), 122 deletions(-) diff --git a/build.gradle b/build.gradle index 5df4c0a..48dd4f7 100644 --- a/build.gradle +++ b/build.gradle @@ -14,15 +14,13 @@ buildscript { */ } dependencies { - classpath 'net.minecraftforge.gradle:ForgeGradle:3.+' + classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT' //classpath 'org.spongepowered:mixingradle:0.4-SNAPSHOT' } } -apply plugin: 'net.minecraftforge.gradle' +apply plugin: 'net.minecraftforge.gradle.forge' //apply plugin: 'org.spongepowered.mixin' -apply plugin: 'eclipse' -apply plugin: 'maven-publish' version = "dev.0.6" + getBuildNumber() group= "com.mcgoodtime.productionline" @@ -31,34 +29,16 @@ archivesBaseName = "ProductionLine" sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. minecraft { - // The mappings can be changed at any time, and must be in the following format. - // snapshot_YYYYMMDD Snapshot are built nightly. - // stable_# Stables are built at the discretion of the MCP team. - // Use non-default mappings at your own risk. they may not always work. - // Simply re-run your setup task after changing the mappings to update your workspace. - mappings channel: 'snapshot', version: '20171003-1.12' + version = "1.12.2-14.23.5.2847" + runDir = "run" - // Default run configurations. - runs { - client { - workingDirectory project.file('run') - - // Recommended logging data for a userdev environment - property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' - - // Recommended logging level for the console - property 'forge.logging.console.level', 'debug' - } - - server { - - // Recommended logging data for a userdev environment - property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' - - // Recommended logging level for the console - property 'forge.logging.console.level', 'debug' - } - } + // the mappings can be changed at any time, and must be in the following format. + // snapshot_YYYYMMDD snapshot are built nightly. + // stable_# stables are built at the discretion of the MCP team. + // Use non-default mappings at your own risk. they may not always work. + // simply re-run your setup task after changing the mappings to update your workspace. + mappings = "snapshot_20171003" + // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable. } repositories { @@ -77,55 +57,28 @@ repositories { } dependencies { - minecraft 'net.minecraftforge:forge:1.12.2-14.23.5.2854' compile 'net.industrial-craft:industrialcraft-2:2.8.209-ex112:dev' //adds ic2 to the dev env //compile ('org.spongepowered:mixin:0.6.+') { // exclude module: 'launchwrapper' //} } -jar { - manifest { - attributes ( - "Specification-Title": "Production Line", - "Specification-Vendor": "GoodTime Studio", - "Specification-Version": "1", // We are version 1 of ourselves - "Implementation-Title": project.name, - "Implementation-Version": "${version}", - "Implementation-Vendor" :"GoodTime Studio", - "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") - ) - } -} - -// Example configuration to allow publishing using the maven-publish task -// This is the preferred method to reobfuscate your jar file -jar.finalizedBy('reobfJar') -// However if you are in a multi-project build, dev time needs unobfed jar files, so you can delay the obfuscation until publishing by doing -//publish.dependsOn('reobfJar') - -/* -mixin { - // Specify "notch" or "searge" here - defaultObfuscationEnv searge - add sourceSets.main, "mixins.forge.refmap.json" -} -*/ - -compileJava { - options.encoding = 'UTF-8' -} - -publishing { - publications { - mavenJava(MavenPublication) { - artifact jar - } +processResources { + // this will ensure that this task is redone when the versions change. + inputs.property "version", project.version + inputs.property "mcversion", project.minecraft.version + + // replace stuff in mcmod.info, nothing else + from(sourceSets.main.resources.srcDirs) { + include 'mcmod.info' + + // replace version and mcversion + expand 'version':project.version, 'mcversion':project.minecraft.version } - repositories { - maven { - url "file:///${project.projectDir}/mcmodsrepo" - } + + // copy everything else except the mcmod.info + from(sourceSets.main.resources.srcDirs) { + exclude 'mcmod.info' } } diff --git a/gradle.properties b/gradle.properties index da5e071..fdd743e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,4 @@ # Sets default memory used for gradle commands. Can be overridden by user or command line properties. # This is required to provide enough memory for the Minecraft decompilation process. org.gradle.jvmargs=-Xmx3G -org.gradle.daemon=false \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 7a3265ee94c0ab25cf079ac8ccdf87f41d455d42..30d399d8d2bf522ff5de94bf434a7cc43a9a74b5 100644 GIT binary patch delta 26819 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 delta 29215 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 \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" -warn () { +warn ( ) { echo "$*" } -die () { +die ( ) { echo echo "$*" echo @@ -48,7 +30,6 @@ die () { cygwin=false msys=false darwin=false -nonstop=false case "`uname`" in CYGWIN* ) cygwin=true @@ -59,11 +40,31 @@ case "`uname`" in MINGW* ) msys=true ;; - NONSTOP* ) - nonstop=true - ;; esac +# For Cygwin, ensure paths are in UNIX format before anything is touched. +if $cygwin ; then + [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` +fi + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -89,7 +90,7 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then MAX_FD_LIMIT=`ulimit -H -n` if [ $? -eq 0 ] ; then if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then @@ -113,7 +114,6 @@ fi if $cygwin ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` @@ -154,19 +154,11 @@ if $cygwin ; then esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") } -APP_ARGS=$(save "$@") - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" -fi +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" -exec "$JAVACMD" "$@" +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat index f955316..8a0b282 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -8,14 +8,14 @@ @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome @@ -46,9 +46,10 @@ echo location of your Java installation. goto fail :init -@rem Get command-line arguments, handling Windows variants +@rem Get command-line arguments, handling Windowz variants if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args :win9xME_args @rem Slurp the command line arguments. @@ -59,6 +60,11 @@ set _SKIP=2 if "x%~1" == "x" goto execute set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ :execute @rem Setup the command line From 4e4f5a97453dfddea98b08f77f8f33f8147e075c Mon Sep 17 00:00:00 2001 From: NightOwl Date: Wed, 15 Jul 2020 19:51:58 +0800 Subject: [PATCH 08/51] Fix registration --- .../productionline/core/ProductionLine.java | 24 ++++++++++--------- .../productionline/items/ItemCrafting.java | 1 - .../items/ItemDiamondApple.java | 16 +------------ .../productionline/items/ItemMulti.java | 6 ++++- .../productionline/items/ItemOre.java | 1 - .../models/item/diamond_apple.json | 2 +- 6 files changed, 20 insertions(+), 30 deletions(-) diff --git a/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java b/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java index e841a72..671df0a 100644 --- a/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java +++ b/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java @@ -33,7 +33,6 @@ import com.mcgoodtime.productionline.event.PLEvent; import com.mcgoodtime.productionline.init.*; import com.mcgoodtime.productionline.potion.PLPotion; -import com.mcgoodtime.productionline.worldgen.PLWorldGen; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.creativetab.CreativeTabs; @@ -41,7 +40,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.util.ResourceLocation; -//import net.minecraftforge.common.AchievementPage; +import net.minecraftforge.client.event.ModelRegistryEvent; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.fml.client.registry.RenderingRegistry; @@ -119,10 +118,17 @@ public void registerBlock(RegistryEvent event) { @SubscribeEvent public void registerItem(RegistryEvent event) { - PLSounds.loadRecord(); //register record sound event before register record item. + //PLSounds.loadRecord(); //register record sound event before register record item. PLItems.init(); } + @SubscribeEvent + public void registerModel(ModelRegistryEvent event) + { + PLModelRegistry.loadBlockModels(); + PLModelRegistry.loadItemModels(); + } + @SubscribeEvent public void registerPotion(RegistryEvent event) { PLPotion.init(); @@ -136,11 +142,11 @@ public void init(FMLInitializationEvent event) { //register gui handler NetworkRegistry.INSTANCE.registerGuiHandler(INSTANCE, GuiHandler.getInstance()); //register achievement - PLAchievement.init(); + //PLAchievement.init(); //register achievement page //AchievementPage.registerAchievementPage(PLAchievement.pagePL); //register ore gen bus. 注册矿石生成总线 - PLWorldGen.init(); + //PLWorldGen.init(); proxy.init(); } @@ -160,11 +166,9 @@ private void setupMeta() { } public abstract static class CommonProxy { - void preInit() { - } + abstract void preInit(); - void init() { - } + abstract void init(); CommonProxy() { } @@ -191,8 +195,6 @@ void preInit() { @Override void init() { - PLModelRegistry.loadBlockModels(); - PLModelRegistry.loadItemModels(); RenderingRegistry.registerEntityRenderingHandler(EntityThrownItem.class, manager -> new RenderEntityThrownItem<>(manager, Minecraft.getMinecraft().getRenderItem())); RenderingRegistry.registerEntityRenderingHandler(EntityRay.class, RenderEntityRay::new); } diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemCrafting.java b/src/main/java/com/mcgoodtime/productionline/items/ItemCrafting.java index 4ae0ccc..51cf730 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemCrafting.java +++ b/src/main/java/com/mcgoodtime/productionline/items/ItemCrafting.java @@ -19,7 +19,6 @@ public ItemCrafting() { @Override protected List getInternalNameList() { List list = new ArrayList<>(); - list.add("small_compressed_water_hyacinth"); return list; } diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemDiamondApple.java b/src/main/java/com/mcgoodtime/productionline/items/ItemDiamondApple.java index 96f318f..6c056ce 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemDiamondApple.java +++ b/src/main/java/com/mcgoodtime/productionline/items/ItemDiamondApple.java @@ -29,7 +29,7 @@ * * @author BestOwl */ -public class ItemDiamondApple extends ItemFood implements IItemModelProvider { +public class ItemDiamondApple extends ItemFood { public ItemDiamondApple() { super(1000, 10F, false); @@ -83,18 +83,4 @@ public boolean hasEffect(ItemStack itemStack) { return itemStack.getItemDamage() >= 1; } - @Override - public String getModelResourcePath() { - return "food"; - } - - /** - * Get custom resource name. - * To use default resource name, return null. - * - */ - @Override - public String getModelResourceName(int meta) { - return null; - } } diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemMulti.java b/src/main/java/com/mcgoodtime/productionline/items/ItemMulti.java index f4840ba..a206891 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemMulti.java +++ b/src/main/java/com/mcgoodtime/productionline/items/ItemMulti.java @@ -43,7 +43,11 @@ protected ItemStack next() { */ @Override public String getUnlocalizedName(ItemStack itemStack) { - return "item." + MOD_ID + "." + this.getInternalName(itemStack.getItemDamage()); + if (internalNameList.size() > 0) { + return "item." + MOD_ID + "." + this.getInternalName(itemStack.getItemDamage()); + } else { + return super.getUnlocalizedName(itemStack); + } } public String getInternalName(int meta) { diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemOre.java b/src/main/java/com/mcgoodtime/productionline/items/ItemOre.java index db8e27b..9fbb82a 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemOre.java +++ b/src/main/java/com/mcgoodtime/productionline/items/ItemOre.java @@ -22,7 +22,6 @@ public ItemOre() { protected List getInternalNameList() { List list = new ArrayList(); list.add("ingot_iridium"); - list.add("dust_iridium"); return list; } diff --git a/src/main/resources/assets/productionline/models/item/diamond_apple.json b/src/main/resources/assets/productionline/models/item/diamond_apple.json index 881c52e..a2214a0 100644 --- a/src/main/resources/assets/productionline/models/item/diamond_apple.json +++ b/src/main/resources/assets/productionline/models/item/diamond_apple.json @@ -1,6 +1,6 @@ { "parent": "item/generated", "textures": { - "layer0": "productionline:item/food/diamond_apple" + "layer0": "productionline:item/diamond_apple" } } \ No newline at end of file From 3ff2cd29e7671d6545ddf38c4cbed9c2b2776cd0 Mon Sep 17 00:00:00 2001 From: _JAVA10 <563622979@qq.com> Date: Wed, 15 Jul 2020 20:03:55 +0800 Subject: [PATCH 09/51] Add new item type "Card". --- .../productionline/init/PLItems.java | 29 +++++++++++----- .../productionline/items/ItemCard.java | 34 +++++++++++++++++++ .../productionline/items/ItemCrafting.java | 7 +++- 3 files changed, 60 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/mcgoodtime/productionline/items/ItemCard.java diff --git a/src/main/java/com/mcgoodtime/productionline/init/PLItems.java b/src/main/java/com/mcgoodtime/productionline/init/PLItems.java index 754f236..99398a4 100644 --- a/src/main/java/com/mcgoodtime/productionline/init/PLItems.java +++ b/src/main/java/com/mcgoodtime/productionline/init/PLItems.java @@ -24,13 +24,12 @@ */ package com.mcgoodtime.productionline.init; +import com.mcgoodtime.productionline.items.ItemCard; import com.mcgoodtime.productionline.items.ItemCrafting; import com.mcgoodtime.productionline.items.ItemDiamondApple; import com.mcgoodtime.productionline.items.ItemOre; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraftforge.fml.common.IFuelHandler; -import net.minecraftforge.fml.common.registry.GameRegistry; /** @@ -38,28 +37,40 @@ */ public class PLItems { + + public static Item diamondApple; - public static Item itemCrafting; - public static Item itemOre; - public static Item upgradleCardSandStorm; - public static Item upgradleCardSpring; - public static Item upgradleCardOasis; - public static Item upgradleCardAnotherWorld; + + + public static Item sheepCrook; + //ore + public static Item itemOre; public static ItemStack ingotIridium; + + //crafting + public static Item itemCrafting; public static ItemStack aquamarine; - public static ItemStack converterCardBlackCat; public static ItemStack desertEye; + //Card + public static Item itemCard; + public static ItemStack converterCardBlackCat; + public static ItemStack upgradleCardSandStorm; + public static ItemStack upgradleCardSpring; + public static ItemStack upgradleCardOasis; + public static ItemStack upgradleCardAnotherWorld; + public static void init() { diamondApple = new ItemDiamondApple(); //MultiMetaItem registry itemOre = new ItemOre(); itemCrafting = new ItemCrafting(); + itemCard = new ItemCard(); } } diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemCard.java b/src/main/java/com/mcgoodtime/productionline/items/ItemCard.java new file mode 100644 index 0000000..3cfe3af --- /dev/null +++ b/src/main/java/com/mcgoodtime/productionline/items/ItemCard.java @@ -0,0 +1,34 @@ +package com.mcgoodtime.productionline.items; + +import com.mcgoodtime.productionline.init.PLItems; + +import java.util.ArrayList; +import java.util.List; + +public class ItemCard extends ItemMulti{ + + public ItemCard() { + super("card"); + PLItems.upgradleCardSandStorm = this.next(); + PLItems.upgradleCardAnotherWorld = this.next(); + PLItems.upgradleCardOasis = this.next(); + PLItems.upgradleCardSpring = this.next(); + PLItems.converterCardBlackCat = this.next(); + } + + @Override + protected List getInternalNameList() { + List list = new ArrayList<>(); + list.add("upgradle_card_sand_storm"); + list.add("upgradle_card_another_world"); + list.add("upgradle_card_oasis"); + list.add("upgradle_card_spring"); + list.add("converter_card_black_cat"); + return list; + } + + @Override + public String getModelResourcePath() { + return "card"; + } +} diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemCrafting.java b/src/main/java/com/mcgoodtime/productionline/items/ItemCrafting.java index 4ae0ccc..fc4577f 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemCrafting.java +++ b/src/main/java/com/mcgoodtime/productionline/items/ItemCrafting.java @@ -14,12 +14,17 @@ public class ItemCrafting extends ItemMulti { public ItemCrafting() { super("crafting"); + PLItems.desertEye = this.next(); + PLItems.aquamarine = this.next(); + + } @Override protected List getInternalNameList() { List list = new ArrayList<>(); - list.add("small_compressed_water_hyacinth"); + list.add("desert_eye"); + list.add("aquarine"); return list; } From 364577d268e1cca3200683765ca318d0910c021e Mon Sep 17 00:00:00 2001 From: NightOwl Date: Wed, 15 Jul 2020 20:24:30 +0800 Subject: [PATCH 10/51] Update language files --- .../assets/productionline/lang/en_us.lang | 26 ++++++++++--------- .../assets/productionline/lang/zh_cn.lang | 25 ++++++++++-------- 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/src/main/resources/assets/productionline/lang/en_us.lang b/src/main/resources/assets/productionline/lang/en_us.lang index 42d7829..0deec74 100644 --- a/src/main/resources/assets/productionline/lang/en_us.lang +++ b/src/main/resources/assets/productionline/lang/en_us.lang @@ -1,17 +1,19 @@ #ProductionLine Language file #en_US -[Item] -item.upgradle_card_sand_storm.name = Upgrade Crad:Sand-Strome; -item upgradle_card_spring.name = Upgrade Crad:Spring; -item.upgradle_card_oasis.name = Upgrade Crad:Oasis; -item.upgradle_card_another_world.name = Upgrade Crad:Another-World; -item.sheep_crook.name = Sheep-Crook; +itemGroup.ProductionLine=Production Line -item.aquamarine.name = Aquamarine; -item.converter_card_black_cat.name = Converter Card:Black-Cat; -item.desert_eye.name = Desert Eye; +# Blocks +tile.productionline.block.ore_iridium.name=Iridium Ore - -item.iridium_ingot.name=Iridium-Ingot -item.diamond_apple.name = Diamond Apple; \ No newline at end of file +# Items +item.productionline.ingot_iridium.name=Iridium Ingot +item.productionline.diamond_apple.name=Diamond Apple +item.productionline.upgradle_card_sand_storm.name=Upgrade Crad: Sand Storm +item.productionline.upgradle_card_spring.name=Upgrade Crad: Spring +item.productionline.upgradle_card_oasis.name=Upgrade Crad: Oasis +item.productionline.upgradle_card_another_world.name=Upgrade Crad: Another World +item.productionline.sheep_crook.name=Sheep Crook +item.productionline.aquamarine.name=Aquamarine +item.productionline.converter_card_black_cat.name=Converter Card: Black-Cat +item.productionline.desert_eye.name=Desert Eye diff --git a/src/main/resources/assets/productionline/lang/zh_cn.lang b/src/main/resources/assets/productionline/lang/zh_cn.lang index 6ce2958..3d26580 100644 --- a/src/main/resources/assets/productionline/lang/zh_cn.lang +++ b/src/main/resources/assets/productionline/lang/zh_cn.lang @@ -1,16 +1,19 @@ #ProductionLine Language file #zh_CN -[Item] +itemGroup.ProductionLine=Production Line -item.productionline.iridium_ingot.name=铱锭 -item.productionline.diamond_apple.name=钻石苹果 -item.productionline.upgradle_card_sand_storm.name = 升级卡:沙暴 -item.productionline.upgradle_card_spring.name = 升级卡:清泉 -item.productionline.upgradle_card_oasis.name = 升级卡:绿洲 -item.productionline.upgradle_card_another_world.name = 升级卡:异界 -item.productionline.sheep_crook.name = 牧羊杖 +# Blocks +tile.productionline.block.ore_iridium.name=铱矿石 -item.productionline.aquamarine.name = 水结晶 -item.productionline.converter_card_black_cat.name = 模式转换卡:黑猫 -item.productionline.desert_eye.name = 沙漠之眼 +# Items +item.productionline.ingot_iridium.name=铱锭 +item.productionline.diamond_apple.name=钻石苹果 +item.productionline.upgradle_card_sand_storm.name=升级卡:沙暴 +item.productionline.upgradle_card_spring.name=升级卡:清泉 +item.productionline.upgradle_card_oasis.name=升级卡:绿洲 +item.productionline.upgradle_card_another_world.name=升级卡:异界 +item.productionline.sheep_crook.name=牧羊杖 +item.productionline.aquamarine.name=水结晶 +item.productionline.converter_card_black_cat.name=模式转换卡:黑猫 +item.productionline.desert_eye.name=沙漠之眼 From 9683a4a2589be2816916867e22cad96fba39b35c Mon Sep 17 00:00:00 2001 From: NightOwl Date: Wed, 15 Jul 2020 20:24:30 +0800 Subject: [PATCH 11/51] Update language files --- .../assets/productionline/lang/en_us.lang | 26 ++++++++++--------- .../assets/productionline/lang/zh_cn.lang | 25 ++++++++++-------- 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/src/main/resources/assets/productionline/lang/en_us.lang b/src/main/resources/assets/productionline/lang/en_us.lang index 42d7829..0deec74 100644 --- a/src/main/resources/assets/productionline/lang/en_us.lang +++ b/src/main/resources/assets/productionline/lang/en_us.lang @@ -1,17 +1,19 @@ #ProductionLine Language file #en_US -[Item] -item.upgradle_card_sand_storm.name = Upgrade Crad:Sand-Strome; -item upgradle_card_spring.name = Upgrade Crad:Spring; -item.upgradle_card_oasis.name = Upgrade Crad:Oasis; -item.upgradle_card_another_world.name = Upgrade Crad:Another-World; -item.sheep_crook.name = Sheep-Crook; +itemGroup.ProductionLine=Production Line -item.aquamarine.name = Aquamarine; -item.converter_card_black_cat.name = Converter Card:Black-Cat; -item.desert_eye.name = Desert Eye; +# Blocks +tile.productionline.block.ore_iridium.name=Iridium Ore - -item.iridium_ingot.name=Iridium-Ingot -item.diamond_apple.name = Diamond Apple; \ No newline at end of file +# Items +item.productionline.ingot_iridium.name=Iridium Ingot +item.productionline.diamond_apple.name=Diamond Apple +item.productionline.upgradle_card_sand_storm.name=Upgrade Crad: Sand Storm +item.productionline.upgradle_card_spring.name=Upgrade Crad: Spring +item.productionline.upgradle_card_oasis.name=Upgrade Crad: Oasis +item.productionline.upgradle_card_another_world.name=Upgrade Crad: Another World +item.productionline.sheep_crook.name=Sheep Crook +item.productionline.aquamarine.name=Aquamarine +item.productionline.converter_card_black_cat.name=Converter Card: Black-Cat +item.productionline.desert_eye.name=Desert Eye diff --git a/src/main/resources/assets/productionline/lang/zh_cn.lang b/src/main/resources/assets/productionline/lang/zh_cn.lang index 6ce2958..3d26580 100644 --- a/src/main/resources/assets/productionline/lang/zh_cn.lang +++ b/src/main/resources/assets/productionline/lang/zh_cn.lang @@ -1,16 +1,19 @@ #ProductionLine Language file #zh_CN -[Item] +itemGroup.ProductionLine=Production Line -item.productionline.iridium_ingot.name=铱锭 -item.productionline.diamond_apple.name=钻石苹果 -item.productionline.upgradle_card_sand_storm.name = 升级卡:沙暴 -item.productionline.upgradle_card_spring.name = 升级卡:清泉 -item.productionline.upgradle_card_oasis.name = 升级卡:绿洲 -item.productionline.upgradle_card_another_world.name = 升级卡:异界 -item.productionline.sheep_crook.name = 牧羊杖 +# Blocks +tile.productionline.block.ore_iridium.name=铱矿石 -item.productionline.aquamarine.name = 水结晶 -item.productionline.converter_card_black_cat.name = 模式转换卡:黑猫 -item.productionline.desert_eye.name = 沙漠之眼 +# Items +item.productionline.ingot_iridium.name=铱锭 +item.productionline.diamond_apple.name=钻石苹果 +item.productionline.upgradle_card_sand_storm.name=升级卡:沙暴 +item.productionline.upgradle_card_spring.name=升级卡:清泉 +item.productionline.upgradle_card_oasis.name=升级卡:绿洲 +item.productionline.upgradle_card_another_world.name=升级卡:异界 +item.productionline.sheep_crook.name=牧羊杖 +item.productionline.aquamarine.name=水结晶 +item.productionline.converter_card_black_cat.name=模式转换卡:黑猫 +item.productionline.desert_eye.name=沙漠之眼 From 22b79c11a2ecfdb346a00b57a17de9eec17a73e5 Mon Sep 17 00:00:00 2001 From: NightOwl Date: Thu, 16 Jul 2020 13:58:41 +0800 Subject: [PATCH 12/51] Add recipe for desert_eye --- .../productionline/recipes/desert_eye.json | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/main/resources/assets/productionline/recipes/desert_eye.json diff --git a/src/main/resources/assets/productionline/recipes/desert_eye.json b/src/main/resources/assets/productionline/recipes/desert_eye.json new file mode 100644 index 0000000..544e81d --- /dev/null +++ b/src/main/resources/assets/productionline/recipes/desert_eye.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": + [ + "xxx", + "yzy", + "xxx" + ], + "key": + { + "x": + { + "item": "minecraft:sand", + "data": 0 + }, + "y": + { + "type": "forge:ore_dict", + "ore": "ingotGold" + }, + "z": + { + "item": "minecraft:diamond" + } + }, + "result": + { + "item": "productionline:crafting", + "count": 1, + "data": 0 + } +} \ No newline at end of file From 0d1ec97f1959f320a6965817b7ed9a23174f556e Mon Sep 17 00:00:00 2001 From: _JAVA10 <563622979@qq.com> Date: Thu, 16 Jul 2020 14:45:01 +0800 Subject: [PATCH 13/51] A little bit this, a little bit that --- .../client/PLModelRegistry.java | 6 + .../productionline/init/PLItems.java | 28 ++-- .../productionline/init/PLRecipes.java | 152 +----------------- .../productionline/items/ItemCard.java | 34 ---- .../productionline/items/ItemCrafting.java | 4 +- .../productionline/items/ItemSeal.java | 33 ++++ .../assets/productionline/lang/en_us.lang | 10 +- .../assets/productionline/lang/zh_cn.lang | 8 +- .../productionline/recipes/aquamarine.json | 31 ++++ .../assets/productionline/recipes/desert_eye | 0 .../enchanting_seal_another_world.json | 27 ++++ .../recipes/enchanting_seal_oasis.json | 31 ++++ .../recipes/enchanting_seal_sand_storm.json | 31 ++++ .../recipes/enchanting_seal_spring.json | 31 ++++ ...esert - \345\211\257\346\234\254 (2).json" | 31 ++++ ...esert - \345\211\257\346\234\254 (3).json" | 31 ++++ ...esert - \345\211\257\346\234\254 (4).json" | 31 ++++ ...esert - \345\211\257\346\234\254 (5).json" | 31 ++++ ...he_desert - \345\211\257\346\234\254.json" | 31 ++++ .../recipes/eye_of_the_desert.json | 33 ++++ 20 files changed, 405 insertions(+), 209 deletions(-) delete mode 100644 src/main/java/com/mcgoodtime/productionline/items/ItemCard.java create mode 100644 src/main/java/com/mcgoodtime/productionline/items/ItemSeal.java create mode 100644 src/main/resources/assets/productionline/recipes/aquamarine.json create mode 100644 src/main/resources/assets/productionline/recipes/desert_eye create mode 100644 src/main/resources/assets/productionline/recipes/enchanting_seal_another_world.json create mode 100644 src/main/resources/assets/productionline/recipes/enchanting_seal_oasis.json create mode 100644 src/main/resources/assets/productionline/recipes/enchanting_seal_sand_storm.json create mode 100644 src/main/resources/assets/productionline/recipes/enchanting_seal_spring.json create mode 100644 "src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (2).json" create mode 100644 "src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (3).json" create mode 100644 "src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (4).json" create mode 100644 "src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (5).json" create mode 100644 "src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254.json" create mode 100644 src/main/resources/assets/productionline/recipes/eye_of_the_desert.json diff --git a/src/main/java/com/mcgoodtime/productionline/client/PLModelRegistry.java b/src/main/java/com/mcgoodtime/productionline/client/PLModelRegistry.java index aa28653..0e38fa1 100644 --- a/src/main/java/com/mcgoodtime/productionline/client/PLModelRegistry.java +++ b/src/main/java/com/mcgoodtime/productionline/client/PLModelRegistry.java @@ -68,6 +68,12 @@ public static void loadItemModels() { registerItemModel(PLItems.itemOre, i); } } + + if(PLItems.itemSeal instanceof ItemMulti){ + for(int i =0; i<((ItemMulti)PLItems.itemSeal).getInternalNameSize();i++){ + registerItemModel(PLItems.itemSeal, i); + } + } } private static ModelResourceLocation getItemModelResLoc(Item item, int meta) { diff --git a/src/main/java/com/mcgoodtime/productionline/init/PLItems.java b/src/main/java/com/mcgoodtime/productionline/init/PLItems.java index 99398a4..044b3b3 100644 --- a/src/main/java/com/mcgoodtime/productionline/init/PLItems.java +++ b/src/main/java/com/mcgoodtime/productionline/init/PLItems.java @@ -24,7 +24,7 @@ */ package com.mcgoodtime.productionline.init; -import com.mcgoodtime.productionline.items.ItemCard; +import com.mcgoodtime.productionline.items.ItemSeal; import com.mcgoodtime.productionline.items.ItemCrafting; import com.mcgoodtime.productionline.items.ItemDiamondApple; import com.mcgoodtime.productionline.items.ItemOre; @@ -37,14 +37,8 @@ */ public class PLItems { - - public static Item diamondApple; - - - - public static Item sheepCrook; //ore @@ -54,15 +48,17 @@ public class PLItems { //crafting public static Item itemCrafting; public static ItemStack aquamarine; - public static ItemStack desertEye; + public static ItemStack eyeOfTheDesert; + + //seal + public static Item itemSeal; + + public static Item cconvertingSealBlackCat; - //Card - public static Item itemCard; - public static ItemStack converterCardBlackCat; - public static ItemStack upgradleCardSandStorm; - public static ItemStack upgradleCardSpring; - public static ItemStack upgradleCardOasis; - public static ItemStack upgradleCardAnotherWorld; + public static ItemStack enchantingSealSandStorm; + public static ItemStack enchantingSealSpring; + public static ItemStack enchantingSealOasis; + public static ItemStack enchantingSealAnotherWorld; public static void init() { diamondApple = new ItemDiamondApple(); @@ -70,7 +66,7 @@ public static void init() { //MultiMetaItem registry itemOre = new ItemOre(); itemCrafting = new ItemCrafting(); - itemCard = new ItemCard(); + itemSeal = new ItemSeal(); } } diff --git a/src/main/java/com/mcgoodtime/productionline/init/PLRecipes.java b/src/main/java/com/mcgoodtime/productionline/init/PLRecipes.java index 85dceb4..b9b8eac 100644 --- a/src/main/java/com/mcgoodtime/productionline/init/PLRecipes.java +++ b/src/main/java/com/mcgoodtime/productionline/init/PLRecipes.java @@ -51,151 +51,14 @@ public class PLRecipes { * Load recipes of GoodTime-Industrial. */ public static void init() { - //disable recipes - //disable(); - - //vanilla recipe registry; -/* - GameRegistry.addRecipe( - ItemStacks.copyStack(PLBlocks.opticalGlass, 5), - "ABA", - "BAB", - "ABA", - 'A', Blocks.QUARTZ_BLOCK, - 'B', Blocks.GLASS - ); - GameRegistry.addRecipe( - PLItems.advSolarLensUnit, - "A A", - "A A", - " A ", - 'A', PLBlocks.opticalGlass - ); - GameRegistry.addRecipe( - PLItems.advSolarLensGroup, - "A A", - "ABA", - "CAC", - 'A', PLItems.advSolarLensUnit, - 'B', IC2Items.getItem("dust", "diamond"), - 'C', IC2Items.getItem("crafting", "carbon_plate") - ); - GameRegistry.addRecipe( - PLItems.advSolarLensCluster, - "ABA", - "ACA", - "DAD", - 'A', PLItems.advSolarLensGroup, - 'B', PLItems.dustIridium, - 'C', IC2Items.getItem("dust", "energium") - ); - GameRegistry.addRecipe( - PLItems.heatInsulationMaterial, - "AAA", - "AAA", - "BBB", - 'A', IC2Items.getItem("rubber"), - 'B', IC2Items.getItem("advIronIngot")); - - GameRegistry.addRecipe( - new ItemStack(PLItems.diamondApple, 1, 1), - "DDD", - "DAD", - "DDD", - 'D', PLItems.diamondApple, - 'A', Blocks.DIAMOND_BLOCK - );*/ //smelting registry GameRegistry.addSmelting(PLBlocks.oreIridium, PLItems.ingotIridium, XP); GameRegistry.addSmelting(IC2Items.getItem("iridiumOre"), PLItems.ingotIridium, XP); - //ic2 recipe registry - /* - Recipes.compressor.addRecipe( - new RecipeInputItemStack(PLItems.getItems(PLItems.smallCompressedWaterHyacinth, 8)), - null, - PLBlocks.compressedWaterHyacinth - ); - Recipes.compressor.addRecipe( - new RecipeInputItemStack(new ItemStack(PLBlocks.waterHyacinth, 8)), - null, - PLItems.smallCompressedWaterHyacinth - ); - Recipes.metalformerRolling.addRecipe( - new RecipeInputItemStack(new ItemStack(Items.diamond)), - null, - PLItems.diamondPlate - ); - Recipes.metalformerRolling.addRecipe( - new RecipeInputItemStack(PLItems.heatInsulationMaterial), - null, - PLItems.heatInsulationPlate - ); - Recipes.compressor.addRecipe( - new RecipeInputItemStack(PLItems.getItems(PLItems.diamondPlate, 9)), - null, - PLItems.denseDiamondPlate - ); - Recipes.compressor.addRecipe( - new RecipeInputItemStack(PLItems.getItems(PLItems.smallDustIridium, 8)), - null, - PLItems.ingotIridium - ); - Recipes.macerator.addRecipe( - new RecipeInputItemStack(new ItemStack(PLBlocks.oreIridium)), - null, - PLItems.getItems(PLItems.crushedIridium, 2) - ); - Recipes.macerator.addRecipe( - new RecipeInputItemStack(PLItems.ingotIridium), - null, - PLItems.dustIridium - ); - Recipes.compressor.addRecipe( - new RecipeInputItemStack(IC2Items.getItem("diamondDust"), 3), - null, - PLItems.carbonCrystal - ); - Recipes.compressor.addRecipe( - new RecipeInputItemStack(IC2Items.getItem("denseplateobsidian"), 8), - null, - PLItems.obsidianPlateGravityField - ); - NBTTagCompound oreWash = new NBTTagCompound(); - oreWash.setInteger("amount", 1000); - Recipes.oreWashing.addRecipe( - new RecipeInputItemStack(PLItems.crushedIridium), - oreWash, - PLItems.cleanedCrushedIridium, - StackUtil.copyWithSize(Ic2Items.smallTinDust, 2) - ); - Recipes.centrifuge.addRecipe( - new RecipeInputItemStack(PLItems.cleanedCrushedIridium), - null, - PLItems.dustIridium, - PLItems.getItems(PLItems.smallDustIridium, 2) - ); - Recipes.cannerBottle.addRecipe( - new RecipeInputItemStack(PLItems.rigidPaperPack), - new RecipeInputItemStack(new ItemStack(PLItems.salt, 9)), - new ItemStack(PLItems.packagedSalt) - ); - AdvRecipe.addAndRegister( - PLBlocks.cseu, - "ABA", - "CCC", - "CCC", - 'A', IC2Items.getItem("insulatedGoldCableItem"), - 'B', IC2Items.getItem("advancedMachine"), - 'C', PLItems.ceu - );*/ + } -/* - private static void disable() { - disableRecipes(Ic2Items.massFabricator); - disableRecipes(IC2Items.getItem("iridiumPlate")); - }*/ + /** * Disable recipes. @@ -203,15 +66,8 @@ private static void disable() { * @param itemStack Disable all recipes of this item. */ @SuppressWarnings("unchecked") - public static void disableRecipes(ItemStack itemStack) {/* - List recipeList = CraftingManager.getInstance().getRecipeList(); - for (int i = 0; i < recipeList.size(); i++) { - IRecipe iRecipe = recipeList.get(i); - ItemStack recipesResult = iRecipe.getRecipeOutput(); - if (ItemStack.areItemStacksEqual(itemStack, recipesResult)) { - recipeList.remove(i--); - } - }*/ + public static void disableRecipes(ItemStack itemStack) { + } @SuppressWarnings({"unchecked", "SuspiciousMethodCalls"}) diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemCard.java b/src/main/java/com/mcgoodtime/productionline/items/ItemCard.java deleted file mode 100644 index 3cfe3af..0000000 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemCard.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.mcgoodtime.productionline.items; - -import com.mcgoodtime.productionline.init.PLItems; - -import java.util.ArrayList; -import java.util.List; - -public class ItemCard extends ItemMulti{ - - public ItemCard() { - super("card"); - PLItems.upgradleCardSandStorm = this.next(); - PLItems.upgradleCardAnotherWorld = this.next(); - PLItems.upgradleCardOasis = this.next(); - PLItems.upgradleCardSpring = this.next(); - PLItems.converterCardBlackCat = this.next(); - } - - @Override - protected List getInternalNameList() { - List list = new ArrayList<>(); - list.add("upgradle_card_sand_storm"); - list.add("upgradle_card_another_world"); - list.add("upgradle_card_oasis"); - list.add("upgradle_card_spring"); - list.add("converter_card_black_cat"); - return list; - } - - @Override - public String getModelResourcePath() { - return "card"; - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemCrafting.java b/src/main/java/com/mcgoodtime/productionline/items/ItemCrafting.java index 3c9dd1c..ca3444e 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemCrafting.java +++ b/src/main/java/com/mcgoodtime/productionline/items/ItemCrafting.java @@ -14,7 +14,7 @@ public class ItemCrafting extends ItemMulti { public ItemCrafting() { super("crafting"); - PLItems.desertEye = this.next(); + PLItems.eyeOfTheDesert = this.next(); PLItems.aquamarine = this.next(); @@ -23,7 +23,7 @@ public ItemCrafting() { @Override protected List getInternalNameList() { List list = new ArrayList<>(); - list.add("desert_eye"); + list.add("eye_of_the_desert"); list.add("aquamarine"); return list; } diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemSeal.java b/src/main/java/com/mcgoodtime/productionline/items/ItemSeal.java new file mode 100644 index 0000000..74f7e64 --- /dev/null +++ b/src/main/java/com/mcgoodtime/productionline/items/ItemSeal.java @@ -0,0 +1,33 @@ +package com.mcgoodtime.productionline.items; + +import com.mcgoodtime.productionline.init.PLItems; + +import java.util.ArrayList; +import java.util.List; + +public class ItemSeal extends ItemMulti{ + + public ItemSeal() { + super("seal"); + PLItems.enchantingSealSandStorm = this.next(); + PLItems.enchantingSealAnotherWorld = this.next(); + PLItems.enchantingSealOasis = this.next(); + PLItems.enchantingSealSpring = this.next(); + + } + + @Override + protected List getInternalNameList() { + List list = new ArrayList<>(); + list.add("enchanting_seal_sand_storm"); + list.add("enchanting_seal_another_world"); + list.add("enchanting_seal_oasis"); + list.add("enchanting_seal_spring"); + return list; + } + + @Override + public String getModelResourcePath() { + return "seal"; + } +} diff --git a/src/main/resources/assets/productionline/lang/en_us.lang b/src/main/resources/assets/productionline/lang/en_us.lang index 0deec74..aaac245 100644 --- a/src/main/resources/assets/productionline/lang/en_us.lang +++ b/src/main/resources/assets/productionline/lang/en_us.lang @@ -9,11 +9,11 @@ tile.productionline.block.ore_iridium.name=Iridium Ore # Items item.productionline.ingot_iridium.name=Iridium Ingot item.productionline.diamond_apple.name=Diamond Apple -item.productionline.upgradle_card_sand_storm.name=Upgrade Crad: Sand Storm -item.productionline.upgradle_card_spring.name=Upgrade Crad: Spring -item.productionline.upgradle_card_oasis.name=Upgrade Crad: Oasis -item.productionline.upgradle_card_another_world.name=Upgrade Crad: Another World +item.productionline.enchanting_seal_sand_storm.name=Enchanting Seal: Sand-Storm +item.productionline.enchanting_seal_spring.name=Enchanting Seal: Spring +item.productionline.enchanting_seal_oasis.name=Enchanting Seal: Oasis +item.productionline.enchanting_seal_another_world.name=Enchanting Seal: Another-World item.productionline.sheep_crook.name=Sheep Crook item.productionline.aquamarine.name=Aquamarine -item.productionline.converter_card_black_cat.name=Converter Card: Black-Cat +item.productionline.converting_seal_black_cat.name=Converting Seal: Black-Cat item.productionline.desert_eye.name=Desert Eye diff --git a/src/main/resources/assets/productionline/lang/zh_cn.lang b/src/main/resources/assets/productionline/lang/zh_cn.lang index 3d26580..46ef667 100644 --- a/src/main/resources/assets/productionline/lang/zh_cn.lang +++ b/src/main/resources/assets/productionline/lang/zh_cn.lang @@ -9,10 +9,10 @@ tile.productionline.block.ore_iridium.name=铱矿石 # Items item.productionline.ingot_iridium.name=铱锭 item.productionline.diamond_apple.name=钻石苹果 -item.productionline.upgradle_card_sand_storm.name=升级卡:沙暴 -item.productionline.upgradle_card_spring.name=升级卡:清泉 -item.productionline.upgradle_card_oasis.name=升级卡:绿洲 -item.productionline.upgradle_card_another_world.name=升级卡:异界 +item.productionline.enchanting_seal_sand_storm.name=增幅法印:沙暴 +item.productionline.enchanting_seal_spring.name=增幅法印:清泉 +item.productionline.enchanting_seal_oasis.name=增幅法印:绿洲 +item.productionline.enchanting_seal_another_world.name=增幅法印:异界 item.productionline.sheep_crook.name=牧羊杖 item.productionline.aquamarine.name=水结晶 item.productionline.converter_card_black_cat.name=模式转换卡:黑猫 diff --git a/src/main/resources/assets/productionline/recipes/aquamarine.json b/src/main/resources/assets/productionline/recipes/aquamarine.json new file mode 100644 index 0000000..96e59be --- /dev/null +++ b/src/main/resources/assets/productionline/recipes/aquamarine.json @@ -0,0 +1,31 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": + [ + "xxx", + "yzy", + "xxx" + ], + "key": + { + "x": + { + "block": "minecraft:sand", + "data": 0 + }, + "y": + { + "item": "minecraft:gold_ingot" + }, + "z": + { + "item": "minecraft:diamond" + } + }, + "result": + { + "item": "productionline:crafting", + "count": 1, + "data": 0 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/recipes/desert_eye b/src/main/resources/assets/productionline/recipes/desert_eye new file mode 100644 index 0000000..e69de29 diff --git a/src/main/resources/assets/productionline/recipes/enchanting_seal_another_world.json b/src/main/resources/assets/productionline/recipes/enchanting_seal_another_world.json new file mode 100644 index 0000000..6a61fce --- /dev/null +++ b/src/main/resources/assets/productionline/recipes/enchanting_seal_another_world.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": + [ + "xxx", + "xyx", + "xxx" + ], + "key": + { + "x": + { + "item": "minecraft:ender_pearl" + }, + "y": + { + "item": "productionline:crafting", + "data": 0 + } + }, + "result": + { + "item": "productionline:seal", + "count": 1, + "data": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/recipes/enchanting_seal_oasis.json b/src/main/resources/assets/productionline/recipes/enchanting_seal_oasis.json new file mode 100644 index 0000000..96e59be --- /dev/null +++ b/src/main/resources/assets/productionline/recipes/enchanting_seal_oasis.json @@ -0,0 +1,31 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": + [ + "xxx", + "yzy", + "xxx" + ], + "key": + { + "x": + { + "block": "minecraft:sand", + "data": 0 + }, + "y": + { + "item": "minecraft:gold_ingot" + }, + "z": + { + "item": "minecraft:diamond" + } + }, + "result": + { + "item": "productionline:crafting", + "count": 1, + "data": 0 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/recipes/enchanting_seal_sand_storm.json b/src/main/resources/assets/productionline/recipes/enchanting_seal_sand_storm.json new file mode 100644 index 0000000..96e59be --- /dev/null +++ b/src/main/resources/assets/productionline/recipes/enchanting_seal_sand_storm.json @@ -0,0 +1,31 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": + [ + "xxx", + "yzy", + "xxx" + ], + "key": + { + "x": + { + "block": "minecraft:sand", + "data": 0 + }, + "y": + { + "item": "minecraft:gold_ingot" + }, + "z": + { + "item": "minecraft:diamond" + } + }, + "result": + { + "item": "productionline:crafting", + "count": 1, + "data": 0 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/recipes/enchanting_seal_spring.json b/src/main/resources/assets/productionline/recipes/enchanting_seal_spring.json new file mode 100644 index 0000000..96e59be --- /dev/null +++ b/src/main/resources/assets/productionline/recipes/enchanting_seal_spring.json @@ -0,0 +1,31 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": + [ + "xxx", + "yzy", + "xxx" + ], + "key": + { + "x": + { + "block": "minecraft:sand", + "data": 0 + }, + "y": + { + "item": "minecraft:gold_ingot" + }, + "z": + { + "item": "minecraft:diamond" + } + }, + "result": + { + "item": "productionline:crafting", + "count": 1, + "data": 0 + } +} \ No newline at end of file diff --git "a/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (2).json" "b/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (2).json" new file mode 100644 index 0000000..96e59be --- /dev/null +++ "b/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (2).json" @@ -0,0 +1,31 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": + [ + "xxx", + "yzy", + "xxx" + ], + "key": + { + "x": + { + "block": "minecraft:sand", + "data": 0 + }, + "y": + { + "item": "minecraft:gold_ingot" + }, + "z": + { + "item": "minecraft:diamond" + } + }, + "result": + { + "item": "productionline:crafting", + "count": 1, + "data": 0 + } +} \ No newline at end of file diff --git "a/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (3).json" "b/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (3).json" new file mode 100644 index 0000000..96e59be --- /dev/null +++ "b/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (3).json" @@ -0,0 +1,31 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": + [ + "xxx", + "yzy", + "xxx" + ], + "key": + { + "x": + { + "block": "minecraft:sand", + "data": 0 + }, + "y": + { + "item": "minecraft:gold_ingot" + }, + "z": + { + "item": "minecraft:diamond" + } + }, + "result": + { + "item": "productionline:crafting", + "count": 1, + "data": 0 + } +} \ No newline at end of file diff --git "a/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (4).json" "b/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (4).json" new file mode 100644 index 0000000..96e59be --- /dev/null +++ "b/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (4).json" @@ -0,0 +1,31 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": + [ + "xxx", + "yzy", + "xxx" + ], + "key": + { + "x": + { + "block": "minecraft:sand", + "data": 0 + }, + "y": + { + "item": "minecraft:gold_ingot" + }, + "z": + { + "item": "minecraft:diamond" + } + }, + "result": + { + "item": "productionline:crafting", + "count": 1, + "data": 0 + } +} \ No newline at end of file diff --git "a/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (5).json" "b/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (5).json" new file mode 100644 index 0000000..96e59be --- /dev/null +++ "b/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (5).json" @@ -0,0 +1,31 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": + [ + "xxx", + "yzy", + "xxx" + ], + "key": + { + "x": + { + "block": "minecraft:sand", + "data": 0 + }, + "y": + { + "item": "minecraft:gold_ingot" + }, + "z": + { + "item": "minecraft:diamond" + } + }, + "result": + { + "item": "productionline:crafting", + "count": 1, + "data": 0 + } +} \ No newline at end of file diff --git "a/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254.json" "b/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254.json" new file mode 100644 index 0000000..96e59be --- /dev/null +++ "b/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254.json" @@ -0,0 +1,31 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": + [ + "xxx", + "yzy", + "xxx" + ], + "key": + { + "x": + { + "block": "minecraft:sand", + "data": 0 + }, + "y": + { + "item": "minecraft:gold_ingot" + }, + "z": + { + "item": "minecraft:diamond" + } + }, + "result": + { + "item": "productionline:crafting", + "count": 1, + "data": 0 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/recipes/eye_of_the_desert.json b/src/main/resources/assets/productionline/recipes/eye_of_the_desert.json new file mode 100644 index 0000000..8efbd16 --- /dev/null +++ b/src/main/resources/assets/productionline/recipes/eye_of_the_desert.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": + [ + "xxx", + "yzy", + "xxx" + ], + "key": + { + "x": + { + "item": "minecraft:sand", + "data": 0 + }, + "y": + { + "type": "forge:ore_dict", + "ore": "ingotGold" + }, + "z": + { + "type": "forge:ore_dict", + "ore": "gemDiamond" + } + }, + "result": + { + "item": "productionline:crafting", + "count": 1, + "data": 0 + } +} \ No newline at end of file From 872b37b0d0fb5dece0fb5ca795cd70c42dc20ea5 Mon Sep 17 00:00:00 2001 From: _JAVA10 <563622979@qq.com> Date: Thu, 16 Jul 2020 14:51:23 +0800 Subject: [PATCH 14/51] Delete crash --- .../productionline/recipes/aquamarine.json | 31 ------------------ .../assets/productionline/recipes/desert_eye | 0 .../productionline/recipes/desert_eye.json | 32 ------------------- .../recipes/enchanting_seal_oasis.json | 31 ------------------ .../recipes/enchanting_seal_sand_storm.json | 31 ------------------ .../recipes/enchanting_seal_spring.json | 31 ------------------ ...esert - \345\211\257\346\234\254 (2).json" | 31 ------------------ ...esert - \345\211\257\346\234\254 (3).json" | 31 ------------------ ...esert - \345\211\257\346\234\254 (4).json" | 31 ------------------ ...esert - \345\211\257\346\234\254 (5).json" | 31 ------------------ ...he_desert - \345\211\257\346\234\254.json" | 31 ------------------ 11 files changed, 311 deletions(-) delete mode 100644 src/main/resources/assets/productionline/recipes/aquamarine.json delete mode 100644 src/main/resources/assets/productionline/recipes/desert_eye delete mode 100644 src/main/resources/assets/productionline/recipes/desert_eye.json delete mode 100644 src/main/resources/assets/productionline/recipes/enchanting_seal_oasis.json delete mode 100644 src/main/resources/assets/productionline/recipes/enchanting_seal_sand_storm.json delete mode 100644 src/main/resources/assets/productionline/recipes/enchanting_seal_spring.json delete mode 100644 "src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (2).json" delete mode 100644 "src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (3).json" delete mode 100644 "src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (4).json" delete mode 100644 "src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (5).json" delete mode 100644 "src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254.json" diff --git a/src/main/resources/assets/productionline/recipes/aquamarine.json b/src/main/resources/assets/productionline/recipes/aquamarine.json deleted file mode 100644 index 96e59be..0000000 --- a/src/main/resources/assets/productionline/recipes/aquamarine.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": - [ - "xxx", - "yzy", - "xxx" - ], - "key": - { - "x": - { - "block": "minecraft:sand", - "data": 0 - }, - "y": - { - "item": "minecraft:gold_ingot" - }, - "z": - { - "item": "minecraft:diamond" - } - }, - "result": - { - "item": "productionline:crafting", - "count": 1, - "data": 0 - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/recipes/desert_eye b/src/main/resources/assets/productionline/recipes/desert_eye deleted file mode 100644 index e69de29..0000000 diff --git a/src/main/resources/assets/productionline/recipes/desert_eye.json b/src/main/resources/assets/productionline/recipes/desert_eye.json deleted file mode 100644 index 544e81d..0000000 --- a/src/main/resources/assets/productionline/recipes/desert_eye.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": - [ - "xxx", - "yzy", - "xxx" - ], - "key": - { - "x": - { - "item": "minecraft:sand", - "data": 0 - }, - "y": - { - "type": "forge:ore_dict", - "ore": "ingotGold" - }, - "z": - { - "item": "minecraft:diamond" - } - }, - "result": - { - "item": "productionline:crafting", - "count": 1, - "data": 0 - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/recipes/enchanting_seal_oasis.json b/src/main/resources/assets/productionline/recipes/enchanting_seal_oasis.json deleted file mode 100644 index 96e59be..0000000 --- a/src/main/resources/assets/productionline/recipes/enchanting_seal_oasis.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": - [ - "xxx", - "yzy", - "xxx" - ], - "key": - { - "x": - { - "block": "minecraft:sand", - "data": 0 - }, - "y": - { - "item": "minecraft:gold_ingot" - }, - "z": - { - "item": "minecraft:diamond" - } - }, - "result": - { - "item": "productionline:crafting", - "count": 1, - "data": 0 - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/recipes/enchanting_seal_sand_storm.json b/src/main/resources/assets/productionline/recipes/enchanting_seal_sand_storm.json deleted file mode 100644 index 96e59be..0000000 --- a/src/main/resources/assets/productionline/recipes/enchanting_seal_sand_storm.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": - [ - "xxx", - "yzy", - "xxx" - ], - "key": - { - "x": - { - "block": "minecraft:sand", - "data": 0 - }, - "y": - { - "item": "minecraft:gold_ingot" - }, - "z": - { - "item": "minecraft:diamond" - } - }, - "result": - { - "item": "productionline:crafting", - "count": 1, - "data": 0 - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/recipes/enchanting_seal_spring.json b/src/main/resources/assets/productionline/recipes/enchanting_seal_spring.json deleted file mode 100644 index 96e59be..0000000 --- a/src/main/resources/assets/productionline/recipes/enchanting_seal_spring.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": - [ - "xxx", - "yzy", - "xxx" - ], - "key": - { - "x": - { - "block": "minecraft:sand", - "data": 0 - }, - "y": - { - "item": "minecraft:gold_ingot" - }, - "z": - { - "item": "minecraft:diamond" - } - }, - "result": - { - "item": "productionline:crafting", - "count": 1, - "data": 0 - } -} \ No newline at end of file diff --git "a/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (2).json" "b/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (2).json" deleted file mode 100644 index 96e59be..0000000 --- "a/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (2).json" +++ /dev/null @@ -1,31 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": - [ - "xxx", - "yzy", - "xxx" - ], - "key": - { - "x": - { - "block": "minecraft:sand", - "data": 0 - }, - "y": - { - "item": "minecraft:gold_ingot" - }, - "z": - { - "item": "minecraft:diamond" - } - }, - "result": - { - "item": "productionline:crafting", - "count": 1, - "data": 0 - } -} \ No newline at end of file diff --git "a/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (3).json" "b/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (3).json" deleted file mode 100644 index 96e59be..0000000 --- "a/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (3).json" +++ /dev/null @@ -1,31 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": - [ - "xxx", - "yzy", - "xxx" - ], - "key": - { - "x": - { - "block": "minecraft:sand", - "data": 0 - }, - "y": - { - "item": "minecraft:gold_ingot" - }, - "z": - { - "item": "minecraft:diamond" - } - }, - "result": - { - "item": "productionline:crafting", - "count": 1, - "data": 0 - } -} \ No newline at end of file diff --git "a/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (4).json" "b/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (4).json" deleted file mode 100644 index 96e59be..0000000 --- "a/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (4).json" +++ /dev/null @@ -1,31 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": - [ - "xxx", - "yzy", - "xxx" - ], - "key": - { - "x": - { - "block": "minecraft:sand", - "data": 0 - }, - "y": - { - "item": "minecraft:gold_ingot" - }, - "z": - { - "item": "minecraft:diamond" - } - }, - "result": - { - "item": "productionline:crafting", - "count": 1, - "data": 0 - } -} \ No newline at end of file diff --git "a/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (5).json" "b/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (5).json" deleted file mode 100644 index 96e59be..0000000 --- "a/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254 (5).json" +++ /dev/null @@ -1,31 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": - [ - "xxx", - "yzy", - "xxx" - ], - "key": - { - "x": - { - "block": "minecraft:sand", - "data": 0 - }, - "y": - { - "item": "minecraft:gold_ingot" - }, - "z": - { - "item": "minecraft:diamond" - } - }, - "result": - { - "item": "productionline:crafting", - "count": 1, - "data": 0 - } -} \ No newline at end of file diff --git "a/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254.json" "b/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254.json" deleted file mode 100644 index 96e59be..0000000 --- "a/src/main/resources/assets/productionline/recipes/eye_of_the_desert - \345\211\257\346\234\254.json" +++ /dev/null @@ -1,31 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": - [ - "xxx", - "yzy", - "xxx" - ], - "key": - { - "x": - { - "block": "minecraft:sand", - "data": 0 - }, - "y": - { - "item": "minecraft:gold_ingot" - }, - "z": - { - "item": "minecraft:diamond" - } - }, - "result": - { - "item": "productionline:crafting", - "count": 1, - "data": 0 - } -} \ No newline at end of file From 90e9234658c947255297207ac704c1d73fa22643 Mon Sep 17 00:00:00 2001 From: NightOwl Date: Sat, 18 Jul 2020 01:59:53 +0800 Subject: [PATCH 15/51] Added water power generator Removed unused code --- .../blocks/BlockContainerPL.java | 2 +- .../productionline/blocks/BlockGenerator.java | 131 ++++++++++++++++++ .../productionline/blocks/BlockPL.java | 56 -------- .../productionline/init/PLBlocks.java | 2 + .../tiles/TileWaterGenerator.java | 92 ++++++++++++ 5 files changed, 226 insertions(+), 57 deletions(-) create mode 100644 src/main/java/com/mcgoodtime/productionline/blocks/BlockGenerator.java create mode 100644 src/main/java/com/mcgoodtime/productionline/tiles/TileWaterGenerator.java diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/BlockContainerPL.java b/src/main/java/com/mcgoodtime/productionline/blocks/BlockContainerPL.java index 8b7bbfc..a8ad888 100644 --- a/src/main/java/com/mcgoodtime/productionline/blocks/BlockContainerPL.java +++ b/src/main/java/com/mcgoodtime/productionline/blocks/BlockContainerPL.java @@ -66,7 +66,7 @@ public boolean eventReceived(IBlockState state, World world, BlockPos pos, int i return tileentity != null && tileentity.receiveClientEvent(id, param); } - protected abstract Class getTileEntityClass(IBlockState state); + protected abstract Class getTileEntityClass(IBlockState state); @Override public TileEntity createTileEntity(World world, IBlockState state) { diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/BlockGenerator.java b/src/main/java/com/mcgoodtime/productionline/blocks/BlockGenerator.java new file mode 100644 index 0000000..313ae86 --- /dev/null +++ b/src/main/java/com/mcgoodtime/productionline/blocks/BlockGenerator.java @@ -0,0 +1,131 @@ +/* + * This file is part of Production Line, licensed under MIT License (MIT). + * + * Copyright (c) 2020 GoodTime Studio + * Copyright (c) contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.mcgoodtime.productionline.blocks; + +import com.mcgoodtime.productionline.core.GuiHandler; +import com.mcgoodtime.productionline.core.ProductionLine; +import com.mcgoodtime.productionline.tiles.TileFacing; +import com.mcgoodtime.productionline.tiles.TileWaterGenerator; +import net.minecraft.block.material.Material; +import net.minecraft.block.properties.PropertyEnum; +import net.minecraft.block.state.BlockStateContainer; +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IStringSerializable; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraftforge.fml.common.registry.GameRegistry; + +import javax.annotation.Nonnull; + +/** + * The energy generator block + * Created by NightOwl on 2020/7/17 + * + * @author NightOwl + * @since 0.6 + */ +public class BlockGenerator extends BlockContainerPL implements IMultiIDBlock> { + + public static final PropertyEnum PROPERTY_TYPE = PropertyEnum.create("type", BlockGenerator.Type.class); + + public enum Type implements IStringSerializable, IBlockType { + WATER_GENERATOR("water_generator", TileWaterGenerator.class, null); + + private final String name; + public final Class tileClass; + public final GuiHandler.EnumGui gui; + + Type(String name, Class tileClass, GuiHandler.EnumGui gui) { + this.name = name; + this.tileClass = tileClass; + this.gui = gui; + } + + @Override + public String getName() { + return this.name; + } + + @Override + public String getTypeName() { + return this.name; + } + } + + public BlockGenerator() { + super(Material.IRON, "generator"); + this.setDefaultState(this.blockState.getBaseState().withProperty(PROPERTY_TYPE, Type.WATER_GENERATOR)); + for (BlockGenerator.Type t : BlockGenerator.Type.values()) { + GameRegistry.registerTileEntity(t.tileClass, new ResourceLocation(ProductionLine.MOD_ID, t.getTypeName())); + } + } + + @Override + protected Class getTileEntityClass(IBlockState state) { + return state.getValue(PROPERTY_TYPE).tileClass; + } + + @Override + public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) { + if (stack.getMetadata() < BlockMachine.Type.values().length) { + world.setBlockState(pos, state.withProperty(PROPERTY_TYPE, BlockGenerator.Type.values()[stack.getMetadata()]), 2); + } + } + + @Override + protected BlockStateContainer createBlockState() { + return new BlockStateContainer(this, PROPERTY_TYPE); + } + + @Nonnull + @Override + public PropertyEnum getBlockTypeContainer() { + return PROPERTY_TYPE; + } + + /** + * Convert the BlockState into the correct metadata value + */ + @Override + public int getMetaFromState(IBlockState state) { + return state.getValue(PROPERTY_TYPE).ordinal(); + } + + /** + * Convert the given metadata into a BlockState for this Block + */ + @Override + public IBlockState getStateFromMeta(int meta) { + if (meta < BlockGenerator.Type.values().length) { + return this.getDefaultState().withProperty(PROPERTY_TYPE, BlockGenerator.Type.values()[meta]); + } + return null; + } +} diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/BlockPL.java b/src/main/java/com/mcgoodtime/productionline/blocks/BlockPL.java index 24f3905..a7e8d3f 100644 --- a/src/main/java/com/mcgoodtime/productionline/blocks/BlockPL.java +++ b/src/main/java/com/mcgoodtime/productionline/blocks/BlockPL.java @@ -89,62 +89,6 @@ public BlockPL(Material material, String name) { PLConfig.gtiLogger.log(Level.INFO, name + ":" + Integer.toString(Block.getIdFromBlock(this))); } - /** - * Called when a user uses the creative pick block button on this block - * - * @param target The full target the player is looking at - * @param player @return A ItemStack to add to the player's inventory, Null if nothing should be added. - */ - @Nonnull - @Override - public ItemStack getPickBlock(@Nonnull IBlockState state, RayTraceResult target, @Nonnull World world, @Nonnull BlockPos pos, EntityPlayer player) { -// if (this instanceof IMultiMetaBlock) { -// Block block = world.getBlockState(pos).getBlock(); -// return new ItemStack(this, 1, block.getMetaFromState(world.getBlockState(pos))); -// } - return super.getPickBlock(state, target, world, pos, player); - } - - /** - * This returns a complete list of items dropped from this block. - * - * @param world The current world - * @param pos Block position in world - * @param state Current state - * @param fortune Breakers fortune level - * @return A ArrayList containing all items this block drops - */ - @Override - @Nonnull - public List getDrops(IBlockAccess world, BlockPos pos, @Nonnull IBlockState state, int fortune) { - return super.getDrops(world, pos, state, fortune); - } - - /** - * Get the Item that this Block should drop when harvested. - * - */ - @Override - public Item getItemDropped(IBlockState state, Random rand, int fortune) { - return super.getItemDropped(state, rand, fortune); - } - -// /** -// * returns a list of items with the same ID, but different meta (eg: dye returns 16 items) -// */ -// @Override -// @SideOnly(Side.CLIENT) -// public void getSubBlocks(@Nonnull Item item, CreativeTabs creativeTabs, List list) { -// if (this instanceof IMultiMetaBlock) { -// for(int meta = 0; meta < ((IMultiMetaBlock) this).getMaxMeta(); ++meta) { -// ItemStack stack = new ItemStack(this, 1, meta); -// list.add(stack); -// } -// } else { -// super.getSubBlocks(item, creativeTabs, list); -// } -// } - /** * Register item block. * Forge recommend register item block separately. diff --git a/src/main/java/com/mcgoodtime/productionline/init/PLBlocks.java b/src/main/java/com/mcgoodtime/productionline/init/PLBlocks.java index 13b400a..4677fba 100644 --- a/src/main/java/com/mcgoodtime/productionline/init/PLBlocks.java +++ b/src/main/java/com/mcgoodtime/productionline/init/PLBlocks.java @@ -43,9 +43,11 @@ public class PLBlocks { public static BlockPL machine; public static BlockPL oreIridium; + public static Block generator; public static void init() { oreIridium = new BlockPL(Material.ROCK, "ore_iridium", 10, 20, "pickaxe", 3); + generator = new BlockGenerator(); //new BlockMisc(); //machine = new BlockMachine(); } diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/TileWaterGenerator.java b/src/main/java/com/mcgoodtime/productionline/tiles/TileWaterGenerator.java new file mode 100644 index 0000000..6305ccd --- /dev/null +++ b/src/main/java/com/mcgoodtime/productionline/tiles/TileWaterGenerator.java @@ -0,0 +1,92 @@ +/* + * This file is part of Production Line, licensed under MIT License (MIT). + * + * Copyright (c) 2020 GoodTime Studio + * Copyright (c) contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.mcgoodtime.productionline.tiles; + +import net.minecraft.init.Blocks; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.ITickable; +import net.minecraft.util.math.BlockPos; +import net.minecraftforge.energy.CapabilityEnergy; +import net.minecraftforge.energy.IEnergyStorage; + +import javax.annotation.Nullable; + +/** + * Created by NightOwl on 2020/7/17 + * + * @author NightOwl + */ +public class TileWaterGenerator extends TileEntity implements ITickable { + + private int energyOutput; + private int timer; + + /** + * Like the old updateEntity(), except more generic. + */ + @Override + public void update() { + if (!this.world.isRemote) { + // for better performance, wait 20 ticks before checking water environment + if (timer == 0) { + energyOutput = 0; + BlockPos pos = this.getPos(); + pos = pos.down(); + + isWater(pos); + isWater(pos.east()); + isWater(pos.south()); + isWater(pos.west()); + isWater(pos.north()); + isWater(pos.north().east()); + isWater(pos.north().west()); + isWater(pos.south().east()); + isWater(pos.south().west()); + + } else if (timer == 20) { + timer = -1; + } + timer += 1; + + TileEntity te = this.world.getTileEntity(this.pos.up()); + if (te == null) { + return; + } + if (te.hasCapability(CapabilityEnergy.ENERGY, EnumFacing.DOWN)) { + IEnergyStorage storage = te.getCapability(CapabilityEnergy.ENERGY, EnumFacing.DOWN); + storage.receiveEnergy(energyOutput, false); + } + } + } + + private void isWater(BlockPos pos) { + if (this.world.getBlockState(pos).getBlock() == Blocks.WATER) { + energyOutput += 1; + } + } + +} From 5406d158ff6c11a9babe9e92c00bf6613afe1ef8 Mon Sep 17 00:00:00 2001 From: NightOwl Date: Sat, 18 Jul 2020 12:40:06 +0800 Subject: [PATCH 16/51] Fixed items appear on other creative tabs --- .../productionline/items/ItemDiamondApple.java | 10 ++++++++-- .../mcgoodtime/productionline/items/ItemMulti.java | 13 ++++++++++--- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemDiamondApple.java b/src/main/java/com/mcgoodtime/productionline/items/ItemDiamondApple.java index 6c056ce..45e5f28 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemDiamondApple.java +++ b/src/main/java/com/mcgoodtime/productionline/items/ItemDiamondApple.java @@ -62,11 +62,17 @@ public void addInformation(ItemStack stack, @Nullable World worldIn, List items) { - for (int i = 0; i < 2; i++) { - items.add(new ItemStack(this, 1, i)); + if (tab == ProductionLine.creativeTabPL) + { + for (int i = 0; i < 2; i++) { + items.add(new ItemStack(this, 1, i)); + } } } diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemMulti.java b/src/main/java/com/mcgoodtime/productionline/items/ItemMulti.java index a206891..8c77f98 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemMulti.java +++ b/src/main/java/com/mcgoodtime/productionline/items/ItemMulti.java @@ -1,6 +1,7 @@ package com.mcgoodtime.productionline.items; import com.mcgoodtime.productionline.client.IItemModelProvider; +import com.mcgoodtime.productionline.core.ProductionLine; import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; @@ -60,11 +61,17 @@ public int getInternalNameSize() { protected abstract List getInternalNameList(); + /** + * returns a list of items with the same ID, but different meta (eg: dye returns 16 items) + */ @Override public void getSubItems(CreativeTabs tab, NonNullList items) { - for(int meta = 0; meta < this.internalNameList.size(); ++meta) { - ItemStack stack = new ItemStack(this, 1, meta); - items.add(stack); + if (tab == ProductionLine.creativeTabPL) + { + for(int meta = 0; meta < this.internalNameList.size(); ++meta) { + ItemStack stack = new ItemStack(this, 1, meta); + items.add(stack); + } } } From 435e91129f282380ab9874a8f9366b8d898b8553 Mon Sep 17 00:00:00 2001 From: NightOwl Date: Sat, 18 Jul 2020 12:43:30 +0800 Subject: [PATCH 17/51] Cleanup codes --- .../productionline/blocks/fluid/BioFuel.java | 21 ------- .../blocks/fluid/FluidBlockGas.java | 35 ----------- .../productionline/blocks/fluid/Gas.java | 39 ------------ .../productionline/core/ProductionLine.java | 2 - .../event/ThrowableUranium238Handler.java | 50 ---------------- .../productionline/mixin/MixinItemMulti.java | 40 ------------- .../mixin/MixinTileEntityFurnace.java | 60 ------------------- 7 files changed, 247 deletions(-) delete mode 100644 src/main/java/com/mcgoodtime/productionline/blocks/fluid/BioFuel.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/blocks/fluid/FluidBlockGas.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/blocks/fluid/Gas.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/event/ThrowableUranium238Handler.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/mixin/MixinItemMulti.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/mixin/MixinTileEntityFurnace.java diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/fluid/BioFuel.java b/src/main/java/com/mcgoodtime/productionline/blocks/fluid/BioFuel.java deleted file mode 100644 index 32dab0e..0000000 --- a/src/main/java/com/mcgoodtime/productionline/blocks/fluid/BioFuel.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.mcgoodtime.productionline.blocks.fluid; - -import com.mcgoodtime.productionline.core.ProductionLine; - -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.fluids.Fluid; - -public class BioFuel extends Fluid{ - public static final ResourceLocation still = new ResourceLocation(ProductionLine.MOD_NAME+":"+"textures/blocks/fluids/Bio Fuel_Still"); - - - public BioFuel() { - super("bioFuel", still, still); - - this.setUnlocalizedName("BioFuel"); - this.setDensity(800); - this.setViscosity(2000); - this.setLuminosity(1); - } - -} diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/fluid/FluidBlockGas.java b/src/main/java/com/mcgoodtime/productionline/blocks/fluid/FluidBlockGas.java deleted file mode 100644 index 4ae8b38..0000000 --- a/src/main/java/com/mcgoodtime/productionline/blocks/fluid/FluidBlockGas.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * This file is part of GoodTime-Industrial, licensed under MIT License (MIT). - * - * Copyright (c) 2015 GoodTime Studio - * Copyright (c) contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package com.mcgoodtime.productionline.blocks.fluid; - -import net.minecraft.block.material.Material; -import net.minecraftforge.fluids.BlockFluidFinite; -import net.minecraftforge.fluids.Fluid; - -public class FluidBlockGas extends BlockFluidFinite { - public FluidBlockGas(Fluid fluid, Material material) { - super(fluid, material); - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/fluid/Gas.java b/src/main/java/com/mcgoodtime/productionline/blocks/fluid/Gas.java deleted file mode 100644 index 8e3308b..0000000 --- a/src/main/java/com/mcgoodtime/productionline/blocks/fluid/Gas.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * This file is part of Production-Line, licensed under MIT License (MIT). - * - * Copyright (c) 2015 GoodTime Studio - * Copyright (c) contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package com.mcgoodtime.productionline.blocks.fluid; - -import static com.mcgoodtime.productionline.core.ProductionLine.loc; -import net.minecraftforge.fluids.Fluid; - -public class Gas extends Fluid { - public static Fluid gasNatural = new Gas("Natural Gas", - "blocks/fluids/Natural Gas_still", - "blocks/fluids/Natural Gas_still"); - - public Gas(String name, String locStill, String locFlow) { - super(name, loc(locStill), loc(locFlow)); - setGaseous(true); - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java b/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java index 671df0a..995e138 100644 --- a/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java +++ b/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java @@ -137,8 +137,6 @@ public void registerPotion(RegistryEvent event) { @Mod.EventHandler public void init(FMLInitializationEvent event) { PLOreDictionary.init(); - // register Recipes. 注册合成 -// PLRecipes.init(); //register gui handler NetworkRegistry.INSTANCE.registerGuiHandler(INSTANCE, GuiHandler.getInstance()); //register achievement diff --git a/src/main/java/com/mcgoodtime/productionline/event/ThrowableUranium238Handler.java b/src/main/java/com/mcgoodtime/productionline/event/ThrowableUranium238Handler.java deleted file mode 100644 index 15a0c4e..0000000 --- a/src/main/java/com/mcgoodtime/productionline/event/ThrowableUranium238Handler.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.mcgoodtime.productionline.event; - -import com.mcgoodtime.productionline.core.PLConfig; -import com.mcgoodtime.productionline.entity.EntityThrownItem; -import ic2.api.item.IC2Items; -import ic2.core.item.ItemMulti; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.SoundEvents; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ActionResult; -import net.minecraft.util.EnumActionResult; -import net.minecraft.util.EnumHand; -import net.minecraft.util.SoundCategory; - -import java.util.Random; - -/** - * Throwable uranium 238 right click handler - * Created by BestOwl on 2016-05-31. - * - * @author BestOwl - */ -public class ThrowableUranium238Handler implements ItemMulti.IItemRightClickHandler { - - public static void registerHandler() { - - } - - @Override - public ActionResult onRightClick(ItemStack itemStack, EntityPlayer entityPlayer, EnumHand hand) { - ItemStack target = IC2Items.getItem("nuclear", "uranium_238"); - if (itemStack.isItemEqual(target)) { - if (PLConfig.instance.throwableUran238) { - if (!entityPlayer.capabilities.isCreativeMode) { - itemStack.shrink(1); - } - - entityPlayer.world.playSound(entityPlayer, entityPlayer.getPosition(), - SoundEvents.ENTITY_ARROW_SHOOT, SoundCategory.PLAYERS, - 0.5F, 0.4F / (new Random().nextFloat() * 0.4F + 0.8F)); - if (!entityPlayer.world.isRemote) { - entityPlayer.world.spawnEntity(new EntityThrownItem(entityPlayer.world, entityPlayer, itemStack)); - } - } - return ActionResult.newResult(EnumActionResult.SUCCESS, itemStack); - } - return ActionResult.newResult(EnumActionResult.PASS, itemStack); - } - -} diff --git a/src/main/java/com/mcgoodtime/productionline/mixin/MixinItemMulti.java b/src/main/java/com/mcgoodtime/productionline/mixin/MixinItemMulti.java deleted file mode 100644 index b15a0a7..0000000 --- a/src/main/java/com/mcgoodtime/productionline/mixin/MixinItemMulti.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.mcgoodtime.productionline.mixin; - -import com.mcgoodtime.productionline.event.ThrowableUranium238Handler; -import ic2.core.block.state.EnumProperty; -import ic2.core.block.state.IIdProvider; -import ic2.core.item.ItemIC2; -import ic2.core.item.ItemMulti; -import ic2.core.item.type.NuclearResourceType;/* -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;*/ - -/** - * ThrowableUranium238Handler registry. - * Created by BestOwl on 2016-06-01. - *//* -@Mixin(ItemMulti.class) -public abstract class MixinItemMulti & IIdProvider> extends ItemIC2 { - - MixinItemMulti() { - super(null); - } - - @Shadow - private EnumProperty typeProperty; - - @Inject(method = "", at = @At("RETURN")) - @SuppressWarnings("unchecked") - private void onInstantiation(CallbackInfo callbackInfo) { - if (this.typeProperty.getValue("type") instanceof NuclearResourceType) { - this.setRightClickHandler((T) NuclearResourceType.uranium_238, new ThrowableUranium238Handler()); - } - } - - @Shadow - public abstract void setRightClickHandler(T type, ItemMulti.IItemRightClickHandler handler); -} -*/ \ No newline at end of file diff --git a/src/main/java/com/mcgoodtime/productionline/mixin/MixinTileEntityFurnace.java b/src/main/java/com/mcgoodtime/productionline/mixin/MixinTileEntityFurnace.java deleted file mode 100644 index d507052..0000000 --- a/src/main/java/com/mcgoodtime/productionline/mixin/MixinTileEntityFurnace.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.mcgoodtime.productionline.mixin; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.init.Items; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemFirework; -import net.minecraft.item.ItemFireworkCharge; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityFurnace;/* -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -*/ -/** - * Created by BestOwl on 2015.12.5.0005. - * - * @author BestOwl - *//* -@Mixin(TileEntityFurnace.class) -public abstract class MixinTileEntityFurnace extends TileEntity { - - @Shadow - private ItemStack[] furnaceItemStacks; - - @Shadow - public abstract boolean isBurning(); - - @Inject(method = "update", at = @At("RETURN")) - private void onUpdate(CallbackInfo callbackInfo) { - if (!this.world.isRemote) { - if (this.isBurning()) { - ItemStack itemStack = this.furnaceItemStacks[0]; - if (itemStack != null) { - if (itemStack.getItem() instanceof ItemBlock) { - Block block = ((ItemBlock) itemStack.getItem()).block; - if (block.getMaterial(block.getStateFromMeta(itemStack.getMetadata())) == Material.TNT) { - this.doExplosion(); - } - } else if (itemStack.getItem() == Items.GUNPOWDER) { - this.doExplosion(); - } else if (itemStack.getItem() instanceof ItemFirework || itemStack.getItem() - instanceof ItemFireworkCharge) { - this.doExplosion(); - } - } - } - } - } - - private void doExplosion() { - this.world.createExplosion(null, this.getPos().getX(), this.getPos().getY(), this.getPos().getZ(), 4.0F, true); - this.world.destroyBlock(this.getPos(), true); - this.invalidate(); - } -} -*/ \ No newline at end of file From 4b2c36533a965e2c1e9617abb61cd55f7e796cc1 Mon Sep 17 00:00:00 2001 From: _JAVA10 <563622979@qq.com> Date: Sat, 18 Jul 2020 13:51:20 +0800 Subject: [PATCH 18/51] Make generator better --- .../productionline/init/PLItems.java | 1 + .../tiles/TileWaterGenerator.java | 39 ++++++++++++------- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/mcgoodtime/productionline/init/PLItems.java b/src/main/java/com/mcgoodtime/productionline/init/PLItems.java index 044b3b3..b1f5206 100644 --- a/src/main/java/com/mcgoodtime/productionline/init/PLItems.java +++ b/src/main/java/com/mcgoodtime/productionline/init/PLItems.java @@ -39,6 +39,7 @@ public class PLItems { public static Item diamondApple; + //tool public static Item sheepCrook; //ore diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/TileWaterGenerator.java b/src/main/java/com/mcgoodtime/productionline/tiles/TileWaterGenerator.java index 6305ccd..7d34609 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/TileWaterGenerator.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/TileWaterGenerator.java @@ -51,23 +51,27 @@ public class TileWaterGenerator extends TileEntity implements ITickable { @Override public void update() { if (!this.world.isRemote) { - // for better performance, wait 20 ticks before checking water environment + // for better performance, wait 300 ticks before checking water environment if (timer == 0) { energyOutput = 0; + BlockPos pos = this.getPos(); - pos = pos.down(); - isWater(pos); - isWater(pos.east()); - isWater(pos.south()); - isWater(pos.west()); - isWater(pos.north()); - isWater(pos.north().east()); - isWater(pos.north().west()); - isWater(pos.south().east()); - isWater(pos.south().west()); + if(isNotWater(pos.east()) && isNotWater(pos.south()) && isNotWater(pos.west()) && isNotWater(pos.north())) + { + BlockPos down = this.getPos().down(); + isWater(down); + isWater(down.east()); + isWater(down.south()); + isWater(down.west()); + isWater(down.north()); + isWater(down.north().east()); + isWater(down.north().west()); + isWater(down.south().east()); + isWater(down.south().west()); + } - } else if (timer == 20) { + } else if (timer == 300) { timer = -1; } timer += 1; @@ -76,7 +80,7 @@ public void update() { if (te == null) { return; } - if (te.hasCapability(CapabilityEnergy.ENERGY, EnumFacing.DOWN)) { + if (te.hasCapability(CapabilityEnergy.ENERGY, EnumFacing.DOWN)&&energyOutput>0) { IEnergyStorage storage = te.getCapability(CapabilityEnergy.ENERGY, EnumFacing.DOWN); storage.receiveEnergy(energyOutput, false); } @@ -89,4 +93,13 @@ private void isWater(BlockPos pos) { } } + private boolean isNotWater(BlockPos pos){ + if (this.world.getBlockState(pos).getBlock() == Blocks.WATER) { + energyOutput = 0; + return true; + }else{ + return false; + } + } + } From 3cfb781c8c087483f844dc8f72acbce48ef9d070 Mon Sep 17 00:00:00 2001 From: NightOwl Date: Sat, 18 Jul 2020 14:01:02 +0800 Subject: [PATCH 19/51] Fixed water generator's logic --- .../productionline/tiles/TileWaterGenerator.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/TileWaterGenerator.java b/src/main/java/com/mcgoodtime/productionline/tiles/TileWaterGenerator.java index 7d34609..163633a 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/TileWaterGenerator.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/TileWaterGenerator.java @@ -94,12 +94,7 @@ private void isWater(BlockPos pos) { } private boolean isNotWater(BlockPos pos){ - if (this.world.getBlockState(pos).getBlock() == Blocks.WATER) { - energyOutput = 0; - return true; - }else{ - return false; - } + return this.world.getBlockState(pos).getBlock() != Blocks.WATER; } } From bda4490c9a617237c325b419260d8d0b87bb4e0f Mon Sep 17 00:00:00 2001 From: NightOwl Date: Sat, 18 Jul 2020 16:21:34 +0800 Subject: [PATCH 20/51] Enable ore generation and cleanup codes --- .../productionline/core/ProductionLine.java | 9 +-- .../productionline/init/PLAchievement.java | 59 ------------------- .../productionline/init/PLOreDictionary.java | 5 -- .../productionline/worldgen/PLWorldGen.java | 6 +- 4 files changed, 8 insertions(+), 71 deletions(-) delete mode 100644 src/main/java/com/mcgoodtime/productionline/init/PLAchievement.java diff --git a/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java b/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java index 995e138..465ac3a 100644 --- a/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java +++ b/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java @@ -33,6 +33,7 @@ import com.mcgoodtime.productionline.event.PLEvent; import com.mcgoodtime.productionline.init.*; import com.mcgoodtime.productionline.potion.PLPotion; +import com.mcgoodtime.productionline.worldgen.PLWorldGen; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.creativetab.CreativeTabs; @@ -139,12 +140,8 @@ public void init(FMLInitializationEvent event) { PLOreDictionary.init(); //register gui handler NetworkRegistry.INSTANCE.registerGuiHandler(INSTANCE, GuiHandler.getInstance()); - //register achievement - //PLAchievement.init(); - //register achievement page - //AchievementPage.registerAchievementPage(PLAchievement.pagePL); - //register ore gen bus. 注册矿石生成总线 - //PLWorldGen.init(); + //register ore gen bus. + PLWorldGen.init(); proxy.init(); } diff --git a/src/main/java/com/mcgoodtime/productionline/init/PLAchievement.java b/src/main/java/com/mcgoodtime/productionline/init/PLAchievement.java deleted file mode 100644 index c057e65..0000000 --- a/src/main/java/com/mcgoodtime/productionline/init/PLAchievement.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * This file is part of GoodTime-Industrial, licensed under MIT License (MIT). - * - * Copyright (c) 2015 GoodTime Studio - * Copyright (c) contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package com.mcgoodtime.productionline.init; - -import com.mcgoodtime.productionline.core.ProductionLine; - -/* - * Created by suhao on 2015/5/17. - */ - -public class PLAchievement { - /** Is the 'ir ore' achievement. *//* - public static Achievement getIrOre = new Achievement("achievement.getIrOre", "getIrOre", 0, 0, - PLBlocks.oreIridium, AchievementList.ACQUIRE_IRON).registerStat();*/ - /** Just for fun, :) *//* - public static Achievement yourHouseBombed = new Achievement("achievement.yourHouseBombed", "yourHouseBombed", 0, 3, - PLItems.yourHouseBombed, null).setSpecial().registerStat().initIndependentStat();*/ - - /** Is the 'getting CarbonizeFurnace' achievement. *//* - public static Achievement getCarbonizeFurnace = new Achievement( - "achievement.getCarbonizeFurnace", - "getCarbonizeFurnace", 0, 1, PLBlocks.carbonizeFurnace, AchievementList.BUILD_FURNACE - ).registerStat();*/ - - /** Is the AchievementPage for ProductionLine *//* - public static AchievementPage pagePL = new AchievementPage( - ProductionLine.MOD_NAME, - getIrOre, - getCarbonizeFurnace, - yourHouseBombed);*/ - - /** - * A stub functions called to make the static initializer for this class run. - */ - public static void init() { - } -} diff --git a/src/main/java/com/mcgoodtime/productionline/init/PLOreDictionary.java b/src/main/java/com/mcgoodtime/productionline/init/PLOreDictionary.java index d85c0f6..6751bf9 100644 --- a/src/main/java/com/mcgoodtime/productionline/init/PLOreDictionary.java +++ b/src/main/java/com/mcgoodtime/productionline/init/PLOreDictionary.java @@ -35,11 +35,6 @@ public class PLOreDictionary { public static void init() { - OreDictionary.registerOre("paper", Items.PAPER); - - //OreDictionary.registerOre("advSolarLens", PLItems.advSolarLensUnit); - //OreDictionary.registerOre("advSolarLens", PLItems.advSolarLensGroup); - //OreDictionary.registerOre("advSolarLens", PLItems.advSolarLensCluster); } } diff --git a/src/main/java/com/mcgoodtime/productionline/worldgen/PLWorldGen.java b/src/main/java/com/mcgoodtime/productionline/worldgen/PLWorldGen.java index 4313c8b..7cde4ad 100644 --- a/src/main/java/com/mcgoodtime/productionline/worldgen/PLWorldGen.java +++ b/src/main/java/com/mcgoodtime/productionline/worldgen/PLWorldGen.java @@ -24,6 +24,7 @@ */ package com.mcgoodtime.productionline.worldgen; +import com.mcgoodtime.productionline.core.ProductionLine; import com.mcgoodtime.productionline.init.PLBlocks; import net.minecraft.block.state.IBlockState; @@ -67,7 +68,10 @@ public PLWorldGen(IBlockState blockState, int ticket, int maxHeight, int genSize public static void init() { new PLWorldGen(PLBlocks.oreIridium.getDefaultState(), 1, 16, 3); - new PLWorldGen(BlockName.resource.getBlockState(ResourceBlock.basalt), 5, 27, 10); + if (ProductionLine.isIC2Loaded) + { + new PLWorldGen(BlockName.resource.getBlockState(ResourceBlock.basalt), 5, 27, 10); + } } private void generateOre(World world, Random rand, int chunkX, int chunkZ) { From 4cede926c08554e44bcc7a7c938ce13a3420d562 Mon Sep 17 00:00:00 2001 From: NightOwl Date: Tue, 21 Jul 2020 17:15:51 +0800 Subject: [PATCH 21/51] Add references to Botania API Please re-run ./gradlew idea to reconfigure the project dependencies * Removed unused import --- build.gradle | 10 ++++++++++ .../com/mcgoodtime/productionline/event/PLEvent.java | 1 - 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 48dd4f7..1ed49e8 100644 --- a/build.gradle +++ b/build.gradle @@ -49,6 +49,14 @@ repositories { maven { name = "sponge" url = "http://repo.spongepowered.org/maven" + } + maven { + name = "botania" + url = "https://maven.blamejared.com/" + } + maven { + name = "baubles" + url = "https://maven.thiakil.com" } maven { name = "jei" @@ -58,6 +66,8 @@ repositories { dependencies { compile 'net.industrial-craft:industrialcraft-2:2.8.209-ex112:dev' //adds ic2 to the dev env + deobfCompile "vazkii.botania:Botania:r1.10-363.148" + deobfCompile "com.azanor.baubles:Baubles:1.12-1.5.2" //compile ('org.spongepowered:mixin:0.6.+') { // exclude module: 'launchwrapper' //} diff --git a/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java b/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java index dd42bb8..7325421 100644 --- a/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java +++ b/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java @@ -27,7 +27,6 @@ import com.google.common.base.Optional; import com.mcgoodtime.productionline.entity.EntityThrownItem; -import com.mcgoodtime.productionline.init.PLAchievement; import com.mcgoodtime.productionline.init.PLBlocks; import com.mcgoodtime.productionline.init.PLItems; import com.mcgoodtime.productionline.potion.PLPotion; From 6d7a1005ffdf7893fb86f50e0918befe8c83581e Mon Sep 17 00:00:00 2001 From: _JAVA10 <563622979@qq.com> Date: Thu, 23 Jul 2020 18:25:13 +0800 Subject: [PATCH 22/51] Plan To Add "The Flower Of Osiris" (Unfinished) --- .../productionline/blocks/FlowerPL.java | 28 +++++++++++++++++++ .../productionline/core/ProductionLine.java | 9 ++++++ .../productionline/init/PLBlocks.java | 23 +++++++++++++++ .../functional/SubTileFlowerOfOsiris.java | 7 +++++ src/main/java/lib/LibBlockNames.java | 5 ++++ 5 files changed, 72 insertions(+) create mode 100644 src/main/java/com/mcgoodtime/productionline/blocks/FlowerPL.java create mode 100644 src/main/java/com/mcgoodtime/productionline/tiles/subtile/functional/SubTileFlowerOfOsiris.java create mode 100644 src/main/java/lib/LibBlockNames.java diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/FlowerPL.java b/src/main/java/com/mcgoodtime/productionline/blocks/FlowerPL.java new file mode 100644 index 0000000..3b33af1 --- /dev/null +++ b/src/main/java/com/mcgoodtime/productionline/blocks/FlowerPL.java @@ -0,0 +1,28 @@ +package com.mcgoodtime.productionline.blocks; + +import com.mcgoodtime.productionline.core.ProductionLine; +import lib.LibBlockNames; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.ItemStack; +import net.minecraft.util.NonNullList; +import vazkii.botania.api.BotaniaAPI; +import vazkii.botania.common.block.BlockSpecialFlower; +import vazkii.botania.common.item.block.ItemBlockSpecialFlower; + +import javax.annotation.Nonnull; + +public class FlowerPL extends BlockSpecialFlower { + + static{ + ProductionLine.subtilesForCreativeMenu.add(LibBlockNames.THE_FLOWER_OF_OSIRIS); + } + + @Override + public void getSubBlocks(CreativeTabs tab, @Nonnull NonNullList stacks) { + for(String s : ProductionLine.subtilesForCreativeMenu) { + stacks.add(ItemBlockSpecialFlower.ofType(s)); + if(BotaniaAPI.miniFlowers.containsKey(s)) + stacks.add(ItemBlockSpecialFlower.ofType(BotaniaAPI.miniFlowers.get(s))); + } + } +} diff --git a/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java b/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java index 465ac3a..e81dd11 100644 --- a/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java +++ b/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java @@ -59,6 +59,8 @@ import net.minecraftforge.fml.relauncher.SideOnly; import java.util.Arrays; +import java.util.LinkedHashSet; +import java.util.Set; import javax.annotation.Nonnull; @@ -78,6 +80,13 @@ public final class ProductionLine { public static final String VERSION = "${version}"; public static final String RESOURCE_DOMAIN = MOD_ID; public static final String GUI_PREFIX = "gui.ProductionLine."; + + public static Set subtilesForCreativeMenu = new LinkedHashSet(); + + public static void addSubTileToCreativeMenu(String key) { + subtilesForCreativeMenu.add(key); + } + public static final CreativeTabs creativeTabPL = new CreativeTabs(MOD_NAME) { @SideOnly(Side.CLIENT) @Override diff --git a/src/main/java/com/mcgoodtime/productionline/init/PLBlocks.java b/src/main/java/com/mcgoodtime/productionline/init/PLBlocks.java index 4677fba..4278b2b 100644 --- a/src/main/java/com/mcgoodtime/productionline/init/PLBlocks.java +++ b/src/main/java/com/mcgoodtime/productionline/init/PLBlocks.java @@ -29,10 +29,14 @@ //import com.mcgoodtime.productionline.blocks.generator.BlockAdvSolar; //import com.mcgoodtime.productionline.blocks.generator.BlockFluidKineticGenerator; //import com.mcgoodtime.productionline.items.ItemWaterHyacinth; +import com.mcgoodtime.productionline.tiles.subtile.functional.SubTileFlowerOfOsiris; +import lib.LibBlockNames; import net.minecraftforge.fml.common.registry.ForgeRegistries; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.item.ItemStack; +import vazkii.botania.api.BotaniaAPI; +import vazkii.botania.api.subtile.SubTileEntity; /** * ProductionLine blocks. @@ -44,11 +48,30 @@ public class PLBlocks { public static BlockPL oreIridium; public static Block generator; + public static Block flower; public static void init() { oreIridium = new BlockPL(Material.ROCK, "ore_iridium", 10, 20, "pickaxe", 3); generator = new BlockGenerator(); + flower = new FlowerPL(); + + initTileEntities(); //new BlockMisc(); //machine = new BlockMachine(); } + + private static void initTileEntities() { + BotaniaAPI.registerSubTile(LibBlockNames.THE_FLOWER_OF_OSIRIS, SubTileFlowerOfOsiris.class); + registerSubTileWithMini(LibBlockNames.THE_FLOWER_OF_OSIRIS, SubTileFlowerOfOsiris.class); + } + + private static void registerSubTileWithMini(String key, Class clazz) { + BotaniaAPI.registerSubTile(key, clazz); + + for(Class innerClazz : clazz.getDeclaredClasses()) + if(innerClazz.getSimpleName().equals("Mini")) + BotaniaAPI.registerMiniSubTile(key + "Chibi", innerClazz, key); + } + + } diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/subtile/functional/SubTileFlowerOfOsiris.java b/src/main/java/com/mcgoodtime/productionline/tiles/subtile/functional/SubTileFlowerOfOsiris.java new file mode 100644 index 0000000..ab00bfa --- /dev/null +++ b/src/main/java/com/mcgoodtime/productionline/tiles/subtile/functional/SubTileFlowerOfOsiris.java @@ -0,0 +1,7 @@ +package com.mcgoodtime.productionline.tiles.subtile.functional; + +import vazkii.botania.api.subtile.SubTileFunctional; + +public class SubTileFlowerOfOsiris extends SubTileFunctional { + +} diff --git a/src/main/java/lib/LibBlockNames.java b/src/main/java/lib/LibBlockNames.java new file mode 100644 index 0000000..a91d1ea --- /dev/null +++ b/src/main/java/lib/LibBlockNames.java @@ -0,0 +1,5 @@ +package lib; + +public class LibBlockNames { + public static final String THE_FLOWER_OF_OSIRIS = "theFlowerOfOsiris"; +} From feba3e6ee0cf690bc3212fa9206a3fe59a876430 Mon Sep 17 00:00:00 2001 From: JamesTangAkaJava9 Date: Fri, 24 Jul 2020 12:41:55 +0800 Subject: [PATCH 23/51] add Generator GUI(Unfinished) --- .../productionline/blocks/BlockGenerator.java | 17 +++++++++++++++++ .../productionline/items/ItemSheepCrook.java | 8 ++++++++ 2 files changed, 25 insertions(+) create mode 100644 src/main/java/com/mcgoodtime/productionline/items/ItemSheepCrook.java diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/BlockGenerator.java b/src/main/java/com/mcgoodtime/productionline/blocks/BlockGenerator.java index 313ae86..ef2a54a 100644 --- a/src/main/java/com/mcgoodtime/productionline/blocks/BlockGenerator.java +++ b/src/main/java/com/mcgoodtime/productionline/blocks/BlockGenerator.java @@ -27,6 +27,7 @@ import com.mcgoodtime.productionline.core.GuiHandler; import com.mcgoodtime.productionline.core.ProductionLine; +import com.mcgoodtime.productionline.init.PLItems; import com.mcgoodtime.productionline.tiles.TileFacing; import com.mcgoodtime.productionline.tiles.TileWaterGenerator; import net.minecraft.block.material.Material; @@ -34,8 +35,11 @@ import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; import net.minecraft.util.IStringSerializable; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; @@ -128,4 +132,17 @@ public IBlockState getStateFromMeta(int meta) { } return null; } + + //Open GUI when player rightClick with sheepCrook + @Override + public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ){ + + if(worldIn.isRemote){ + if(playerIn.getHeldItemMainhand().getItem() == PLItems.sheepCrook){ + //TODO addGUI +// playerIn.openGui(); + } + } + return true; + } } diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemSheepCrook.java b/src/main/java/com/mcgoodtime/productionline/items/ItemSheepCrook.java new file mode 100644 index 0000000..111a5a9 --- /dev/null +++ b/src/main/java/com/mcgoodtime/productionline/items/ItemSheepCrook.java @@ -0,0 +1,8 @@ +package com.mcgoodtime.productionline.items; + +public class ItemSheepCrook extends ItemPL{ + + public ItemSheepCrook(){ + super("sheepcrook"); + } +} From 9e7806b610bd813d8d9cca110facf2877d3b79ce Mon Sep 17 00:00:00 2001 From: _JAVA10 <563622979@qq.com> Date: Fri, 24 Jul 2020 18:38:18 +0800 Subject: [PATCH 24/51] Plan To Add "The Flower Of Osiris" (Unfinished) And Fix Language Files --- .../productionline/blocks/BlockGenerator.java | 5 ++--- .../mcgoodtime/productionline/blocks/FlowerPL.java | 12 ++++++++++++ .../{TileWaterGenerator.java => TefnutTear.java} | 2 +- .../resources/assets/productionline/lang/en_us.lang | 3 ++- .../resources/assets/productionline/lang/zh_cn.lang | 3 ++- 5 files changed, 19 insertions(+), 6 deletions(-) rename src/main/java/com/mcgoodtime/productionline/tiles/{TileWaterGenerator.java => TefnutTear.java} (97%) diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/BlockGenerator.java b/src/main/java/com/mcgoodtime/productionline/blocks/BlockGenerator.java index ef2a54a..de4352c 100644 --- a/src/main/java/com/mcgoodtime/productionline/blocks/BlockGenerator.java +++ b/src/main/java/com/mcgoodtime/productionline/blocks/BlockGenerator.java @@ -28,8 +28,7 @@ import com.mcgoodtime.productionline.core.GuiHandler; import com.mcgoodtime.productionline.core.ProductionLine; import com.mcgoodtime.productionline.init.PLItems; -import com.mcgoodtime.productionline.tiles.TileFacing; -import com.mcgoodtime.productionline.tiles.TileWaterGenerator; +import com.mcgoodtime.productionline.tiles.TefnutTear; import net.minecraft.block.material.Material; import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.state.BlockStateContainer; @@ -60,7 +59,7 @@ public class BlockGenerator extends BlockContainerPL implements IMultiIDBlock PROPERTY_TYPE = PropertyEnum.create("type", BlockGenerator.Type.class); public enum Type implements IStringSerializable, IBlockType { - WATER_GENERATOR("water_generator", TileWaterGenerator.class, null); + WATER_GENERATOR("tefnut_tear", TefnutTear.class, null); private final String name; public final Class tileClass; diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/FlowerPL.java b/src/main/java/com/mcgoodtime/productionline/blocks/FlowerPL.java index 3b33af1..8803954 100644 --- a/src/main/java/com/mcgoodtime/productionline/blocks/FlowerPL.java +++ b/src/main/java/com/mcgoodtime/productionline/blocks/FlowerPL.java @@ -1,18 +1,29 @@ package com.mcgoodtime.productionline.blocks; import com.mcgoodtime.productionline.core.ProductionLine; +import com.mcgoodtime.productionline.init.PLBlocks; import lib.LibBlockNames; import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.util.NonNullList; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.common.registry.ForgeRegistries; import vazkii.botania.api.BotaniaAPI; import vazkii.botania.common.block.BlockSpecialFlower; import vazkii.botania.common.item.block.ItemBlockSpecialFlower; import javax.annotation.Nonnull; +import static com.mcgoodtime.productionline.core.ProductionLine.MOD_ID; +import static com.mcgoodtime.productionline.core.ProductionLine.creativeTabPL; + public class FlowerPL extends BlockSpecialFlower { + public FlowerPL(){ + this.setCreativeTab(creativeTabPL); + } + static{ ProductionLine.subtilesForCreativeMenu.add(LibBlockNames.THE_FLOWER_OF_OSIRIS); } @@ -25,4 +36,5 @@ public void getSubBlocks(CreativeTabs tab, @Nonnull NonNullList stack stacks.add(ItemBlockSpecialFlower.ofType(BotaniaAPI.miniFlowers.get(s))); } } + } diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/TileWaterGenerator.java b/src/main/java/com/mcgoodtime/productionline/tiles/TefnutTear.java similarity index 97% rename from src/main/java/com/mcgoodtime/productionline/tiles/TileWaterGenerator.java rename to src/main/java/com/mcgoodtime/productionline/tiles/TefnutTear.java index 163633a..aeb9555 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/TileWaterGenerator.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/TefnutTear.java @@ -40,7 +40,7 @@ * * @author NightOwl */ -public class TileWaterGenerator extends TileEntity implements ITickable { +public class TefnutTear extends TileEntity implements ITickable { private int energyOutput; private int timer; diff --git a/src/main/resources/assets/productionline/lang/en_us.lang b/src/main/resources/assets/productionline/lang/en_us.lang index aaac245..d459c9e 100644 --- a/src/main/resources/assets/productionline/lang/en_us.lang +++ b/src/main/resources/assets/productionline/lang/en_us.lang @@ -5,6 +5,7 @@ itemGroup.ProductionLine=Production Line # Blocks tile.productionline.block.ore_iridium.name=Iridium Ore +tile.productionline.block.generator.tefnut_tear.name=Tefnut's Tear # Items item.productionline.ingot_iridium.name=Iridium Ingot @@ -16,4 +17,4 @@ item.productionline.enchanting_seal_another_world.name=Enchanting Seal: Another- item.productionline.sheep_crook.name=Sheep Crook item.productionline.aquamarine.name=Aquamarine item.productionline.converting_seal_black_cat.name=Converting Seal: Black-Cat -item.productionline.desert_eye.name=Desert Eye +item.productionline.eye_of_the_desert.name=Desert Eye diff --git a/src/main/resources/assets/productionline/lang/zh_cn.lang b/src/main/resources/assets/productionline/lang/zh_cn.lang index 46ef667..e269bdf 100644 --- a/src/main/resources/assets/productionline/lang/zh_cn.lang +++ b/src/main/resources/assets/productionline/lang/zh_cn.lang @@ -5,6 +5,7 @@ itemGroup.ProductionLine=Production Line # Blocks tile.productionline.block.ore_iridium.name=铱矿石 +tile.productionline.block.generator.tefnut_tear.name=泰芙努特之泪 # Items item.productionline.ingot_iridium.name=铱锭 @@ -16,4 +17,4 @@ item.productionline.enchanting_seal_another_world.name=增幅法印:异界 item.productionline.sheep_crook.name=牧羊杖 item.productionline.aquamarine.name=水结晶 item.productionline.converter_card_black_cat.name=模式转换卡:黑猫 -item.productionline.desert_eye.name=沙漠之眼 +item.productionline.eye_of_the_desert.name=沙漠之眼 From 0f43406a6169f2db60a7334f40915b236302005f Mon Sep 17 00:00:00 2001 From: NightOwl Date: Fri, 24 Jul 2020 20:37:05 +0800 Subject: [PATCH 25/51] Rename to TileTefnutTear Add a boolean field to determine whether Botania is loaded --- .../productionline/blocks/BlockGenerator.java | 4 ++-- .../mcgoodtime/productionline/blocks/BlockPL.java | 1 - .../productionline/core/ProductionLine.java | 15 ++++++++------- .../{TefnutTear.java => TileTefnutTear.java} | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) rename src/main/java/com/mcgoodtime/productionline/tiles/{TefnutTear.java => TileTefnutTear.java} (98%) diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/BlockGenerator.java b/src/main/java/com/mcgoodtime/productionline/blocks/BlockGenerator.java index de4352c..a64b061 100644 --- a/src/main/java/com/mcgoodtime/productionline/blocks/BlockGenerator.java +++ b/src/main/java/com/mcgoodtime/productionline/blocks/BlockGenerator.java @@ -28,7 +28,7 @@ import com.mcgoodtime.productionline.core.GuiHandler; import com.mcgoodtime.productionline.core.ProductionLine; import com.mcgoodtime.productionline.init.PLItems; -import com.mcgoodtime.productionline.tiles.TefnutTear; +import com.mcgoodtime.productionline.tiles.TileTefnutTear; import net.minecraft.block.material.Material; import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.state.BlockStateContainer; @@ -59,7 +59,7 @@ public class BlockGenerator extends BlockContainerPL implements IMultiIDBlock PROPERTY_TYPE = PropertyEnum.create("type", BlockGenerator.Type.class); public enum Type implements IStringSerializable, IBlockType { - WATER_GENERATOR("tefnut_tear", TefnutTear.class, null); + WATER_GENERATOR("tefnut_tear", TileTefnutTear.class, null); private final String name; public final Class tileClass; diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/BlockPL.java b/src/main/java/com/mcgoodtime/productionline/blocks/BlockPL.java index a7e8d3f..61d8c75 100644 --- a/src/main/java/com/mcgoodtime/productionline/blocks/BlockPL.java +++ b/src/main/java/com/mcgoodtime/productionline/blocks/BlockPL.java @@ -80,7 +80,6 @@ public BlockPL(Material material, String name) { this.setCreativeTab(creativeTabPL); this.internalName = name; this.setRegistryName(new ResourceLocation(MOD_ID, this.internalName)); - // TODO register after construction ForgeRegistries.BLOCKS.register(this); this.registerItemBlock(); if (this instanceof IOrientableBlock) { diff --git a/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java b/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java index e81dd11..6916fea 100644 --- a/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java +++ b/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java @@ -1,7 +1,7 @@ /* - * This file is part of GoodTime-Industrial, licensed under MIT License (MIT). + * This file is part of Production Line, licensed under MIT License (MIT). * - * Copyright (c) 2015 GoodTime Studio + * Copyright (c) 2020 GoodTime Studio * Copyright (c) contributors * * Permission is hereby granted, free of charge, to any person obtaining a copy @@ -68,10 +68,9 @@ modid = ProductionLine.MOD_ID, name = ProductionLine.MOD_NAME, version = ProductionLine.VERSION, - /*dependencies = "required-after:" - + "Forge@[14.23.5.2854,);" - + "after:" - + "IC2@[2.8.209,);",*/ + dependencies = "required:forge@[14.23.5.2847,);" + + "after:ic2;" + + "after:botania;", useMetadata = true ) public final class ProductionLine { @@ -103,6 +102,7 @@ public ItemStack getTabIconItem() { private static final ProductionLine INSTANCE = new ProductionLine(); public static boolean isIC2Loaded; + public static boolean isBotaniaLoaded; @SidedProxy public static CommonProxy proxy; @@ -114,7 +114,8 @@ public void construct(FMLConstructionEvent event) { @Mod.EventHandler public void preInit(FMLPreInitializationEvent event) { - isIC2Loaded = Loader.isModLoaded("IndustrialCraft 2"); + isIC2Loaded = Loader.isModLoaded("ic2"); + isBotaniaLoaded = Loader.isModLoaded("botania"); setupMeta(); PLConfig.init(event.getSuggestedConfigurationFile()); PLEntity.init(); diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/TefnutTear.java b/src/main/java/com/mcgoodtime/productionline/tiles/TileTefnutTear.java similarity index 98% rename from src/main/java/com/mcgoodtime/productionline/tiles/TefnutTear.java rename to src/main/java/com/mcgoodtime/productionline/tiles/TileTefnutTear.java index aeb9555..47bcee5 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/TefnutTear.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/TileTefnutTear.java @@ -40,7 +40,7 @@ * * @author NightOwl */ -public class TefnutTear extends TileEntity implements ITickable { +public class TileTefnutTear extends TileEntity implements ITickable { private int energyOutput; private int timer; From 3859bf107f5d41843a96eb2ddf8bb9fdcef182f7 Mon Sep 17 00:00:00 2001 From: NightOwl Date: Fri, 24 Jul 2020 21:03:54 +0800 Subject: [PATCH 26/51] Refactor the flower of osiris Update the mod's dependency Removed unused codes --- .../productionline/blocks/FlowerPL.java | 40 ------------------- .../productionline/core/ProductionLine.java | 19 +++------ .../productionline/init/PLBlocks.java | 40 +++++++------------ .../SubTileFlowerOfOsiris.java | 3 +- src/main/java/lib/LibBlockNames.java | 5 --- 5 files changed, 21 insertions(+), 86 deletions(-) delete mode 100644 src/main/java/com/mcgoodtime/productionline/blocks/FlowerPL.java rename src/main/java/com/mcgoodtime/productionline/tiles/{subtile/functional => }/SubTileFlowerOfOsiris.java (65%) delete mode 100644 src/main/java/lib/LibBlockNames.java diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/FlowerPL.java b/src/main/java/com/mcgoodtime/productionline/blocks/FlowerPL.java deleted file mode 100644 index 8803954..0000000 --- a/src/main/java/com/mcgoodtime/productionline/blocks/FlowerPL.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.mcgoodtime.productionline.blocks; - -import com.mcgoodtime.productionline.core.ProductionLine; -import com.mcgoodtime.productionline.init.PLBlocks; -import lib.LibBlockNames; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.util.NonNullList; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.fml.common.registry.ForgeRegistries; -import vazkii.botania.api.BotaniaAPI; -import vazkii.botania.common.block.BlockSpecialFlower; -import vazkii.botania.common.item.block.ItemBlockSpecialFlower; - -import javax.annotation.Nonnull; - -import static com.mcgoodtime.productionline.core.ProductionLine.MOD_ID; -import static com.mcgoodtime.productionline.core.ProductionLine.creativeTabPL; - -public class FlowerPL extends BlockSpecialFlower { - - public FlowerPL(){ - this.setCreativeTab(creativeTabPL); - } - - static{ - ProductionLine.subtilesForCreativeMenu.add(LibBlockNames.THE_FLOWER_OF_OSIRIS); - } - - @Override - public void getSubBlocks(CreativeTabs tab, @Nonnull NonNullList stacks) { - for(String s : ProductionLine.subtilesForCreativeMenu) { - stacks.add(ItemBlockSpecialFlower.ofType(s)); - if(BotaniaAPI.miniFlowers.containsKey(s)) - stacks.add(ItemBlockSpecialFlower.ofType(BotaniaAPI.miniFlowers.get(s))); - } - } - -} diff --git a/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java b/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java index 6916fea..5619a44 100644 --- a/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java +++ b/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java @@ -31,7 +31,9 @@ import com.mcgoodtime.productionline.entity.EntityThrownItem; import com.mcgoodtime.productionline.entity.PLEntity; import com.mcgoodtime.productionline.event.PLEvent; -import com.mcgoodtime.productionline.init.*; +import com.mcgoodtime.productionline.init.PLBlocks; +import com.mcgoodtime.productionline.init.PLItems; +import com.mcgoodtime.productionline.init.PLOreDictionary; import com.mcgoodtime.productionline.potion.PLPotion; import com.mcgoodtime.productionline.worldgen.PLWorldGen; import net.minecraft.block.Block; @@ -58,19 +60,14 @@ import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.Set; - import javax.annotation.Nonnull; +import java.util.Arrays; @Mod( modid = ProductionLine.MOD_ID, name = ProductionLine.MOD_NAME, version = ProductionLine.VERSION, - dependencies = "required:forge@[14.23.5.2847,);" - + "after:ic2;" - + "after:botania;", + dependencies = "required:forge@[14.23.5.2847,);", useMetadata = true ) public final class ProductionLine { @@ -79,12 +76,6 @@ public final class ProductionLine { public static final String VERSION = "${version}"; public static final String RESOURCE_DOMAIN = MOD_ID; public static final String GUI_PREFIX = "gui.ProductionLine."; - - public static Set subtilesForCreativeMenu = new LinkedHashSet(); - - public static void addSubTileToCreativeMenu(String key) { - subtilesForCreativeMenu.add(key); - } public static final CreativeTabs creativeTabPL = new CreativeTabs(MOD_NAME) { @SideOnly(Side.CLIENT) diff --git a/src/main/java/com/mcgoodtime/productionline/init/PLBlocks.java b/src/main/java/com/mcgoodtime/productionline/init/PLBlocks.java index 4278b2b..d7889b0 100644 --- a/src/main/java/com/mcgoodtime/productionline/init/PLBlocks.java +++ b/src/main/java/com/mcgoodtime/productionline/init/PLBlocks.java @@ -26,17 +26,10 @@ import com.mcgoodtime.productionline.blocks.*; import com.mcgoodtime.productionline.core.ProductionLine; -//import com.mcgoodtime.productionline.blocks.generator.BlockAdvSolar; -//import com.mcgoodtime.productionline.blocks.generator.BlockFluidKineticGenerator; -//import com.mcgoodtime.productionline.items.ItemWaterHyacinth; -import com.mcgoodtime.productionline.tiles.subtile.functional.SubTileFlowerOfOsiris; -import lib.LibBlockNames; -import net.minecraftforge.fml.common.registry.ForgeRegistries; +import com.mcgoodtime.productionline.tiles.SubTileFlowerOfOsiris; import net.minecraft.block.Block; import net.minecraft.block.material.Material; -import net.minecraft.item.ItemStack; import vazkii.botania.api.BotaniaAPI; -import vazkii.botania.api.subtile.SubTileEntity; /** * ProductionLine blocks. @@ -48,30 +41,25 @@ public class PLBlocks { public static BlockPL oreIridium; public static Block generator; - public static Block flower; + + /** + * The internal name of the flower of osiris, used for registration + * This will be null if Botania is not loaded + * */ + public static String flowerOfOsiris; public static void init() { oreIridium = new BlockPL(Material.ROCK, "ore_iridium", 10, 20, "pickaxe", 3); generator = new BlockGenerator(); - flower = new FlowerPL(); - initTileEntities(); + if (ProductionLine.isBotaniaLoaded) + { + flowerOfOsiris = "the_flower_of_osiris"; + BotaniaAPI.registerSubTile(flowerOfOsiris, SubTileFlowerOfOsiris.class); + BotaniaAPI.addSubTileToCreativeMenu(flowerOfOsiris); + } + //new BlockMisc(); //machine = new BlockMachine(); } - - private static void initTileEntities() { - BotaniaAPI.registerSubTile(LibBlockNames.THE_FLOWER_OF_OSIRIS, SubTileFlowerOfOsiris.class); - registerSubTileWithMini(LibBlockNames.THE_FLOWER_OF_OSIRIS, SubTileFlowerOfOsiris.class); - } - - private static void registerSubTileWithMini(String key, Class clazz) { - BotaniaAPI.registerSubTile(key, clazz); - - for(Class innerClazz : clazz.getDeclaredClasses()) - if(innerClazz.getSimpleName().equals("Mini")) - BotaniaAPI.registerMiniSubTile(key + "Chibi", innerClazz, key); - } - - } diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/subtile/functional/SubTileFlowerOfOsiris.java b/src/main/java/com/mcgoodtime/productionline/tiles/SubTileFlowerOfOsiris.java similarity index 65% rename from src/main/java/com/mcgoodtime/productionline/tiles/subtile/functional/SubTileFlowerOfOsiris.java rename to src/main/java/com/mcgoodtime/productionline/tiles/SubTileFlowerOfOsiris.java index ab00bfa..2acfca6 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/subtile/functional/SubTileFlowerOfOsiris.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/SubTileFlowerOfOsiris.java @@ -1,7 +1,8 @@ -package com.mcgoodtime.productionline.tiles.subtile.functional; +package com.mcgoodtime.productionline.tiles; import vazkii.botania.api.subtile.SubTileFunctional; public class SubTileFlowerOfOsiris extends SubTileFunctional { + } diff --git a/src/main/java/lib/LibBlockNames.java b/src/main/java/lib/LibBlockNames.java deleted file mode 100644 index a91d1ea..0000000 --- a/src/main/java/lib/LibBlockNames.java +++ /dev/null @@ -1,5 +0,0 @@ -package lib; - -public class LibBlockNames { - public static final String THE_FLOWER_OF_OSIRIS = "theFlowerOfOsiris"; -} From 992c509ba68017368ab93baae2ce5dec4f6a0697 Mon Sep 17 00:00:00 2001 From: _JAVA10 <563622979@qq.com> Date: Fri, 31 Jul 2020 23:34:31 +0800 Subject: [PATCH 27/51] Try adding features to the flowers --- .../productionline/core/ProductionLine.java | 4 ++ .../tiles/SubTileFlowerOfOsiris.java | 48 ++++++++++++++++++- 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java b/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java index 5619a44..fd93132 100644 --- a/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java +++ b/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java @@ -59,6 +59,8 @@ import net.minecraftforge.fml.common.network.NetworkRegistry; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import javax.annotation.Nonnull; import java.util.Arrays; @@ -76,6 +78,8 @@ public final class ProductionLine { public static final String VERSION = "${version}"; public static final String RESOURCE_DOMAIN = MOD_ID; public static final String GUI_PREFIX = "gui.ProductionLine."; + + public static final Logger LOGGER = LogManager.getLogger(MOD_ID); public static final CreativeTabs creativeTabPL = new CreativeTabs(MOD_NAME) { @SideOnly(Side.CLIENT) diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/SubTileFlowerOfOsiris.java b/src/main/java/com/mcgoodtime/productionline/tiles/SubTileFlowerOfOsiris.java index 2acfca6..e453e25 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/SubTileFlowerOfOsiris.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/SubTileFlowerOfOsiris.java @@ -1,8 +1,54 @@ package com.mcgoodtime.productionline.tiles; + +import com.mcgoodtime.productionline.core.ProductionLine; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockPos; +import vazkii.botania.api.subtile.SubTileEntity; import vazkii.botania.api.subtile.SubTileFunctional; +import vazkii.botania.api.subtile.SubTileGenerating; +import vazkii.botania.common.block.BlockSpecialFlower; +import vazkii.botania.common.block.tile.TileSpecialFlower; + +public class SubTileFlowerOfOsiris extends SubTileFunctional{ + private int consume; + private int growthLevel = 10; + + private int range = 3; + + @Override + public void onUpdate() { + if(!supertile.getWorld().isRemote){ + return; + } + for(BlockPos pos:BlockPos.getAllInBox(getPos().add(-range,0,-range),getPos().add(range,0,range))){ + SubTileGenerating tile = getManaGenerator(pos); + if(tile!=null){ + enhance(tile); + } + } + + } + + private SubTileGenerating getManaGenerator(BlockPos pos) { + if(supertile.getWorld().getBlockState(pos).getBlock() instanceof BlockSpecialFlower){ + TileEntity tile = supertile.getWorld().getTileEntity(pos); + SubTileEntity subTile= ((TileSpecialFlower) tile).getSubTile(); + if(subTile instanceof SubTileGenerating){ + return (SubTileGenerating)subTile; + } + } + return null; + } -public class SubTileFlowerOfOsiris extends SubTileFunctional { + private void enhance(SubTileGenerating stg){ + for(int i=0;i Date: Sat, 1 Aug 2020 21:32:52 +0800 Subject: [PATCH 28/51] Add Mixn lib and create Mixin class --- build.gradle | 110 +++++++++++------- .../mixin/MixinSubTileGenerating.java | 10 ++ 2 files changed, 81 insertions(+), 39 deletions(-) create mode 100644 src/main/java/com/mcgoodtime/productionline/mixin/MixinSubTileGenerating.java diff --git a/build.gradle b/build.gradle index 1ed49e8..aa5dda5 100644 --- a/build.gradle +++ b/build.gradle @@ -1,26 +1,23 @@ buildscript { repositories { + jcenter() maven { - name = "forge" - url = "https://files.minecraftforge.net/maven" + name = 'forge' + url = 'https://files.minecraftforge.net/maven' } - jcenter() - mavenCentral() - /* maven { - name = "sponge" - url = "http://repo.spongepowered.org/maven" + + url = 'http://repo.spongepowered.org/maven' } - */ } dependencies { classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT' - //classpath 'org.spongepowered:mixingradle:0.4-SNAPSHOT' + classpath 'org.spongepowered:mixingradle:0.6-SNAPSHOT' } } apply plugin: 'net.minecraftforge.gradle.forge' -//apply plugin: 'org.spongepowered.mixin' +apply plugin: 'org.spongepowered.mixin' version = "dev.0.6" + getBuildNumber() group= "com.mcgoodtime.productionline" @@ -28,10 +25,37 @@ archivesBaseName = "ProductionLine" sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. +sourceSets { + main { + ext.refMap = 'mixins.productionline.refmap.json' + } +} + +processResources { + // this will ensure that this task is redone when the versions change. + inputs.property "version", project.version + inputs.property "mcversion", project.minecraft.version + + // replace stuff in mcmod.info, nothing else + from(sourceSets.main.resources.srcDirs) { + include 'mcmod.info' + + // replace version and mcversion + expand 'version': project.version, 'mcversion': project.minecraft.version + } + + // copy everything else, thats not the mcmod.info + from(sourceSets.main.resources.srcDirs) { + exclude 'mcmod.info' + } + + rename '(.+_at.cfg)', 'META-INF/$1' +} + minecraft { version = "1.12.2-14.23.5.2847" - runDir = "run" - + runDir = 'run' + // the mappings can be changed at any time, and must be in the following format. // snapshot_YYYYMMDD snapshot are built nightly. // stable_# stables are built at the discretion of the MCP team. @@ -39,16 +63,29 @@ minecraft { // simply re-run your setup task after changing the mappings to update your workspace. mappings = "snapshot_20171003" // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable. + + def args = [ + '-Dfml.coreMods.load=com.productionline.asm.MODCoremod', + '-Dmixin.hotSwap=true', + '-Dmixin.checks.interfaces=true' + ] + clientJvmArgs.addAll(args) + serverJvmArgs.addAll(args) +} + +configurations { + embed + compile.extendsFrom(embed) } repositories { + //mavenCentral() maven { name = "ic2" url = "https://maven.ic2.player.to" } maven { - name = "sponge" - url = "http://repo.spongepowered.org/maven" + url = 'http://repo.spongepowered.org/maven' } maven { name = "botania" @@ -58,40 +95,35 @@ repositories { name = "baubles" url = "https://maven.thiakil.com" } - maven { - name = "jei" - url = "http://dvs1.progwml6.com/files/maven" - } + maven { + name = "jei" + url = "http://dvs1.progwml6.com/files/maven" + } } dependencies { compile 'net.industrial-craft:industrialcraft-2:2.8.209-ex112:dev' //adds ic2 to the dev env deobfCompile "vazkii.botania:Botania:r1.10-363.148" deobfCompile "com.azanor.baubles:Baubles:1.12-1.5.2" - //compile ('org.spongepowered:mixin:0.6.+') { - // exclude module: 'launchwrapper' - //} + embed('org.spongepowered:mixin:0.7.11-SNAPSHOT'){ + transitive = false + } } -processResources { - // this will ensure that this task is redone when the versions change. - inputs.property "version", project.version - inputs.property "mcversion", project.minecraft.version - - // replace stuff in mcmod.info, nothing else - from(sourceSets.main.resources.srcDirs) { - include 'mcmod.info' - - // replace version and mcversion - expand 'version':project.version, 'mcversion':project.minecraft.version - } - - // copy everything else except the mcmod.info - from(sourceSets.main.resources.srcDirs) { - exclude 'mcmod.info' +jar { + from(configurations.embed.collect { it.isDirectory() ? it : zipTree(it) }) { + exclude 'LICENSE.txt', 'META-INF/MANIFSET.MF', 'META-INF/maven/**', 'META-INF/*.RSA', 'META-INF/*.SF' } + + manifest.attributes( + 'FMLCorePluginContainsFMLMod': true, + 'ForceLoadAsMod': true, + 'TweakClass': 'org.spongepowered.asm.launch.MixinTweaker', + 'MixinConfigs': 'mixins.productionline.core.json', + 'FMLCorePlugin': 'com.productionline.asm.MODCoremod' + ) } static def getBuildNumber() { - return "$System.env.BUILD_NUMBER" != "null" ? "." + Integer.parseInt("$System.env.BUILD_NUMBER") : "" -} + return "$System.env.BUILD_NUMBER" != "null" ? "." + Integer.parseInt("$System.env.BUILD_NUMBER") : "" +} \ No newline at end of file diff --git a/src/main/java/com/mcgoodtime/productionline/mixin/MixinSubTileGenerating.java b/src/main/java/com/mcgoodtime/productionline/mixin/MixinSubTileGenerating.java new file mode 100644 index 0000000..897c8dd --- /dev/null +++ b/src/main/java/com/mcgoodtime/productionline/mixin/MixinSubTileGenerating.java @@ -0,0 +1,10 @@ +package com.mcgoodtime.productionline.mixin; + +import org.spongepowered.asm.mixin.Mixin; +import vazkii.botania.api.subtile.SubTileEntity; +import vazkii.botania.api.subtile.SubTileGenerating; + +@Mixin(SubTileGenerating.class) +public abstract class MixinSubTileGenerating extends SubTileEntity { + +} From eafccc14c10d908e7eab5be4b5c6b340523f8c92 Mon Sep 17 00:00:00 2001 From: _JAVA10 <563622979@qq.com> Date: Sun, 2 Aug 2020 14:57:51 +0800 Subject: [PATCH 29/51] Try to use mixin to implement the function, but failed --- .../mixin/ISubTileGenerating.java | 6 +++ .../mixin/MixinSubTileGenerating.java | 51 ++++++++++++++++++- .../tiles/SubTileFlowerOfOsiris.java | 12 +++-- 3 files changed, 63 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/mcgoodtime/productionline/mixin/ISubTileGenerating.java diff --git a/src/main/java/com/mcgoodtime/productionline/mixin/ISubTileGenerating.java b/src/main/java/com/mcgoodtime/productionline/mixin/ISubTileGenerating.java new file mode 100644 index 0000000..9ead22d --- /dev/null +++ b/src/main/java/com/mcgoodtime/productionline/mixin/ISubTileGenerating.java @@ -0,0 +1,6 @@ +package com.mcgoodtime.productionline.mixin; + +public interface ISubTileGenerating { + boolean canEnhance(); + void setGrowth(int growth); +} diff --git a/src/main/java/com/mcgoodtime/productionline/mixin/MixinSubTileGenerating.java b/src/main/java/com/mcgoodtime/productionline/mixin/MixinSubTileGenerating.java index 897c8dd..e33ceb6 100644 --- a/src/main/java/com/mcgoodtime/productionline/mixin/MixinSubTileGenerating.java +++ b/src/main/java/com/mcgoodtime/productionline/mixin/MixinSubTileGenerating.java @@ -1,10 +1,57 @@ package com.mcgoodtime.productionline.mixin; +import net.minecraft.tileentity.TileEntity; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import vazkii.botania.api.mana.IManaCollector; import vazkii.botania.api.subtile.SubTileEntity; import vazkii.botania.api.subtile.SubTileGenerating; -@Mixin(SubTileGenerating.class) -public abstract class MixinSubTileGenerating extends SubTileEntity { +@Mixin(value=SubTileGenerating.class,remap = false) +public abstract class MixinSubTileGenerating extends SubTileEntity implements ISubTileGenerating{ + + @Shadow + protected TileEntity linkedCollector; + + @Shadow + protected int mana; + + private int growth; + + @Shadow + public abstract boolean isValidBinding(); + + @Inject(method = "update",at=@At("HEAD")) + public void onUpdate() { + canEnhance(); + } + + @Overwrite + public void emptyManaIntoCollector() { + if(linkedCollector != null && isValidBinding()) { + IManaCollector collector = (IManaCollector) linkedCollector; + if(!collector.isFull() && mana > 0) { + int manaval = Math.min(mana, collector.getMaxMana() - collector.getCurrentMana()); + mana -= manaval; + collector.recieveMana(manaval+growth); + } + } + } + + public boolean canEnhance(){ + if(this.mana>0){ + return true; + }else{ + return false; + } + } + + public void setGrowth(int growth){ + this.growth = growth; + } + } diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/SubTileFlowerOfOsiris.java b/src/main/java/com/mcgoodtime/productionline/tiles/SubTileFlowerOfOsiris.java index e453e25..c0ebaf7 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/SubTileFlowerOfOsiris.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/SubTileFlowerOfOsiris.java @@ -2,6 +2,8 @@ import com.mcgoodtime.productionline.core.ProductionLine; +import com.mcgoodtime.productionline.mixin.ISubTileGenerating; +import com.mcgoodtime.productionline.mixin.MixinSubTileGenerating; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; import vazkii.botania.api.subtile.SubTileEntity; @@ -24,7 +26,9 @@ public void onUpdate() { for(BlockPos pos:BlockPos.getAllInBox(getPos().add(-range,0,-range),getPos().add(range,0,range))){ SubTileGenerating tile = getManaGenerator(pos); if(tile!=null){ - enhance(tile); + if(((ISubTileGenerating)tile).canEnhance()){ + enhance(tile); + } } } @@ -42,11 +46,11 @@ private SubTileGenerating getManaGenerator(BlockPos pos) { } private void enhance(SubTileGenerating stg){ - for(int i=0;i Date: Mon, 3 Aug 2020 09:49:04 +0800 Subject: [PATCH 30/51] add feature(turn GeneratingFlower to DeadBush when Multi Osiris around it) --- .../mixin/ISubTileGenerating.java | 6 -- .../mixin/MixinSubTileGenerating.java | 57 ------------------- .../tiles/SubTileFlowerOfOsiris.java | 45 ++++++++++++--- 3 files changed, 37 insertions(+), 71 deletions(-) delete mode 100644 src/main/java/com/mcgoodtime/productionline/mixin/ISubTileGenerating.java delete mode 100644 src/main/java/com/mcgoodtime/productionline/mixin/MixinSubTileGenerating.java diff --git a/src/main/java/com/mcgoodtime/productionline/mixin/ISubTileGenerating.java b/src/main/java/com/mcgoodtime/productionline/mixin/ISubTileGenerating.java deleted file mode 100644 index 9ead22d..0000000 --- a/src/main/java/com/mcgoodtime/productionline/mixin/ISubTileGenerating.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.mcgoodtime.productionline.mixin; - -public interface ISubTileGenerating { - boolean canEnhance(); - void setGrowth(int growth); -} diff --git a/src/main/java/com/mcgoodtime/productionline/mixin/MixinSubTileGenerating.java b/src/main/java/com/mcgoodtime/productionline/mixin/MixinSubTileGenerating.java deleted file mode 100644 index e33ceb6..0000000 --- a/src/main/java/com/mcgoodtime/productionline/mixin/MixinSubTileGenerating.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.mcgoodtime.productionline.mixin; - -import net.minecraft.tileentity.TileEntity; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Overwrite; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import vazkii.botania.api.mana.IManaCollector; -import vazkii.botania.api.subtile.SubTileEntity; -import vazkii.botania.api.subtile.SubTileGenerating; - -@Mixin(value=SubTileGenerating.class,remap = false) -public abstract class MixinSubTileGenerating extends SubTileEntity implements ISubTileGenerating{ - - @Shadow - protected TileEntity linkedCollector; - - @Shadow - protected int mana; - - private int growth; - - @Shadow - public abstract boolean isValidBinding(); - - @Inject(method = "update",at=@At("HEAD")) - public void onUpdate() { - canEnhance(); - } - - @Overwrite - public void emptyManaIntoCollector() { - if(linkedCollector != null && isValidBinding()) { - IManaCollector collector = (IManaCollector) linkedCollector; - if(!collector.isFull() && mana > 0) { - int manaval = Math.min(mana, collector.getMaxMana() - collector.getCurrentMana()); - mana -= manaval; - collector.recieveMana(manaval+growth); - } - } - } - - public boolean canEnhance(){ - if(this.mana>0){ - return true; - }else{ - return false; - } - } - - public void setGrowth(int growth){ - this.growth = growth; - } - - -} diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/SubTileFlowerOfOsiris.java b/src/main/java/com/mcgoodtime/productionline/tiles/SubTileFlowerOfOsiris.java index c0ebaf7..9d9a450 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/SubTileFlowerOfOsiris.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/SubTileFlowerOfOsiris.java @@ -2,10 +2,12 @@ import com.mcgoodtime.productionline.core.ProductionLine; -import com.mcgoodtime.productionline.mixin.ISubTileGenerating; -import com.mcgoodtime.productionline.mixin.MixinSubTileGenerating; +import ic2.core.energy.grid.Tile; +import net.minecraft.block.state.IBlockState; +import net.minecraft.init.Blocks; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; +import org.spongepowered.asm.mixin.Overwrite; import vazkii.botania.api.subtile.SubTileEntity; import vazkii.botania.api.subtile.SubTileFunctional; import vazkii.botania.api.subtile.SubTileGenerating; @@ -25,14 +27,15 @@ public void onUpdate() { } for(BlockPos pos:BlockPos.getAllInBox(getPos().add(-range,0,-range),getPos().add(range,0,range))){ SubTileGenerating tile = getManaGenerator(pos); - if(tile!=null){ - if(((ISubTileGenerating)tile).canEnhance()){ - enhance(tile); + if(tile!=null) { +// isNotSameFlower(tile); + hasMultiOsiris(tile); + enhance(tile); } } } - } + private SubTileGenerating getManaGenerator(BlockPos pos) { if(supertile.getWorld().getBlockState(pos).getBlock() instanceof BlockSpecialFlower){ @@ -46,8 +49,10 @@ private SubTileGenerating getManaGenerator(BlockPos pos) { } private void enhance(SubTileGenerating stg){ - ProductionLine.LOGGER.info("我运行了"); - ((ISubTileGenerating)stg).setGrowth(growthData(growthLevel)); + + for(int i=0;i=4){ + GeneratingTile.getWorld().setBlockState(GeneratingTile.getPos(),Blocks.DEADBUSH.getDefaultState(),3); + return true; + }else return false; + + } + + } From 5269f6d4ff98df0db90cd136226676184ff1f291 Mon Sep 17 00:00:00 2001 From: _JAVA10 <563622979@qq.com> Date: Mon, 3 Aug 2020 14:01:50 +0800 Subject: [PATCH 31/51] Comment out the code that is not used temporarily --- .../mixin/ISubTileGenerating.java | 8 +++ .../mixin/MixinSubTileGenerating.java | 60 +++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 src/main/java/com/mcgoodtime/productionline/mixin/ISubTileGenerating.java create mode 100644 src/main/java/com/mcgoodtime/productionline/mixin/MixinSubTileGenerating.java diff --git a/src/main/java/com/mcgoodtime/productionline/mixin/ISubTileGenerating.java b/src/main/java/com/mcgoodtime/productionline/mixin/ISubTileGenerating.java new file mode 100644 index 0000000..2f55bb0 --- /dev/null +++ b/src/main/java/com/mcgoodtime/productionline/mixin/ISubTileGenerating.java @@ -0,0 +1,8 @@ +package com.mcgoodtime.productionline.mixin; + +/* +public interface ISubTileGenerating { + boolean canEnhance(); + void setGrowth(int growth); +} +*/ diff --git a/src/main/java/com/mcgoodtime/productionline/mixin/MixinSubTileGenerating.java b/src/main/java/com/mcgoodtime/productionline/mixin/MixinSubTileGenerating.java new file mode 100644 index 0000000..600352e --- /dev/null +++ b/src/main/java/com/mcgoodtime/productionline/mixin/MixinSubTileGenerating.java @@ -0,0 +1,60 @@ +package com.mcgoodtime.productionline.mixin; + +import net.minecraft.tileentity.TileEntity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import vazkii.botania.api.mana.IManaCollector; +import vazkii.botania.api.subtile.SubTileEntity; +import vazkii.botania.api.subtile.SubTileGenerating; + + +/* +@Mixin(value=SubTileGenerating.class,remap = false) +public abstract class MixinSubTileGenerating extends SubTileEntity implements ISubTileGenerating{ + + @Shadow + protected TileEntity linkedCollector; + + @Shadow + protected int mana; + + private int growth; + + @Shadow + public abstract boolean isValidBinding(); + + @Inject(method = "update",at=@At("HEAD")) + public void onUpdate() { + canEnhance(); + } + + @Overwrite + public void emptyManaIntoCollector() { + if(linkedCollector != null && isValidBinding()) { + IManaCollector collector = (IManaCollector) linkedCollector; + if(!collector.isFull() && mana > 0) { + int manaval = Math.min(mana, collector.getMaxMana() - collector.getCurrentMana()); + mana -= manaval; + collector.recieveMana(manaval+growth); + } + } + } + + public boolean canEnhance(){ + if(this.mana>0){ + return true; + }else{ + return false; + } + } + + public void setGrowth(int growth){ + this.growth = growth; + } + + +} + */ \ No newline at end of file From 2e0a2774beba15c4e3a3331dabffbdc5fdda21ee Mon Sep 17 00:00:00 2001 From: _JAVA10 <563622979@qq.com> Date: Wed, 5 Aug 2020 11:13:31 +0800 Subject: [PATCH 32/51] Change some details --- .../tiles/SubTileFlowerOfOsiris.java | 35 +++++++++---------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/SubTileFlowerOfOsiris.java b/src/main/java/com/mcgoodtime/productionline/tiles/SubTileFlowerOfOsiris.java index 9d9a450..478721e 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/SubTileFlowerOfOsiris.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/SubTileFlowerOfOsiris.java @@ -18,6 +18,8 @@ public class SubTileFlowerOfOsiris extends SubTileFunctional{ private int consume; private int growthLevel = 10; + private int growthData; + private int range = 3; @Override @@ -28,14 +30,12 @@ public void onUpdate() { for(BlockPos pos:BlockPos.getAllInBox(getPos().add(-range,0,-range),getPos().add(range,0,range))){ SubTileGenerating tile = getManaGenerator(pos); if(tile!=null) { -// isNotSameFlower(tile); - hasMultiOsiris(tile); - enhance(tile); + if(!hasMultiOsiris(tile)){ + enhance(tile); } } } - - + } private SubTileGenerating getManaGenerator(BlockPos pos) { if(supertile.getWorld().getBlockState(pos).getBlock() instanceof BlockSpecialFlower){ @@ -49,24 +49,17 @@ private SubTileGenerating getManaGenerator(BlockPos pos) { } private void enhance(SubTileGenerating stg){ - - for(int i=0;i=4){ + if(count >=2){ GeneratingTile.getWorld().setBlockState(GeneratingTile.getPos(),Blocks.DEADBUSH.getDefaultState(),3); return true; - }else return false; - + }else + return false; } + private void calculateGrowthData(int growthLevel){ + this.growthData=(int)Math.ceil((Math.log((5*(growthLevel-0.5)))*1.4)); + } + @Override + public int getMaxMana() { + return 0; + } } From 7137dece248e3491e9ee330a724d2402bf959dcb Mon Sep 17 00:00:00 2001 From: _JAVA10 <563622979@qq.com> Date: Thu, 6 Aug 2020 20:36:00 +0800 Subject: [PATCH 33/51] add lang to Osiris flower --- .../blockstates/the_flower_of_osiris.json | 5 +++++ .../assets/productionline/lang/en_us.lang | 2 ++ .../assets/productionline/lang/zh_cn.lang | 2 ++ .../block/flower_func_the_flower_of_osiris.json | 6 ++++++ .../blocks/flower_func_the_flower_of_osiris.png | Bin 0 -> 3132 bytes 5 files changed, 15 insertions(+) create mode 100644 src/main/resources/assets/productionline/blockstates/the_flower_of_osiris.json create mode 100644 src/main/resources/assets/productionline/models/block/flower_func_the_flower_of_osiris.json create mode 100644 src/main/resources/assets/productionline/textures/blocks/flower_func_the_flower_of_osiris.png diff --git a/src/main/resources/assets/productionline/blockstates/the_flower_of_osiris.json b/src/main/resources/assets/productionline/blockstates/the_flower_of_osiris.json new file mode 100644 index 0000000..6f77e09 --- /dev/null +++ b/src/main/resources/assets/productionline/blockstates/the_flower_of_osiris.json @@ -0,0 +1,5 @@ +{ + "variants": { + "normal": { "model": "productionline:the_flower_of_osiris" } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/lang/en_us.lang b/src/main/resources/assets/productionline/lang/en_us.lang index d459c9e..1600371 100644 --- a/src/main/resources/assets/productionline/lang/en_us.lang +++ b/src/main/resources/assets/productionline/lang/en_us.lang @@ -18,3 +18,5 @@ item.productionline.sheep_crook.name=Sheep Crook item.productionline.aquamarine.name=Aquamarine item.productionline.converting_seal_black_cat.name=Converting Seal: Black-Cat item.productionline.eye_of_the_desert.name=Desert Eye + +tile.botania:flower.the_flower_of_osiris.name=The Flower Of OSIRIS diff --git a/src/main/resources/assets/productionline/lang/zh_cn.lang b/src/main/resources/assets/productionline/lang/zh_cn.lang index e269bdf..c755bf8 100644 --- a/src/main/resources/assets/productionline/lang/zh_cn.lang +++ b/src/main/resources/assets/productionline/lang/zh_cn.lang @@ -18,3 +18,5 @@ item.productionline.sheep_crook.name=牧羊杖 item.productionline.aquamarine.name=水结晶 item.productionline.converter_card_black_cat.name=模式转换卡:黑猫 item.productionline.eye_of_the_desert.name=沙漠之眼 + +tile.botania:flower.the_flower_of_osiris.name=欧西里斯之花 \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/block/flower_func_the_flower_of_osiris.json b/src/main/resources/assets/productionline/models/block/flower_func_the_flower_of_osiris.json new file mode 100644 index 0000000..fe0bd86 --- /dev/null +++ b/src/main/resources/assets/productionline/models/block/flower_func_the_flower_of_osiris.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "productionline:blocks/flower_func_the_flower_of_osiris" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/textures/blocks/flower_func_the_flower_of_osiris.png b/src/main/resources/assets/productionline/textures/blocks/flower_func_the_flower_of_osiris.png new file mode 100644 index 0000000000000000000000000000000000000000..bf95361ccc6dc56595fe76994eb5c3a4eff7c327 GIT binary patch literal 3132 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 z Date: Mon, 10 Aug 2020 13:05:01 +0800 Subject: [PATCH 34/51] Revert commit "Add Mixn lib and create Mixin class" --- build.gradle | 110 ++++++++++++++++++--------------------------------- 1 file changed, 39 insertions(+), 71 deletions(-) diff --git a/build.gradle b/build.gradle index aa5dda5..1ed49e8 100644 --- a/build.gradle +++ b/build.gradle @@ -1,23 +1,26 @@ buildscript { repositories { - jcenter() maven { - name = 'forge' - url = 'https://files.minecraftforge.net/maven' + name = "forge" + url = "https://files.minecraftforge.net/maven" } + jcenter() + mavenCentral() + /* maven { - - url = 'http://repo.spongepowered.org/maven' + name = "sponge" + url = "http://repo.spongepowered.org/maven" } + */ } dependencies { classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT' - classpath 'org.spongepowered:mixingradle:0.6-SNAPSHOT' + //classpath 'org.spongepowered:mixingradle:0.4-SNAPSHOT' } } apply plugin: 'net.minecraftforge.gradle.forge' -apply plugin: 'org.spongepowered.mixin' +//apply plugin: 'org.spongepowered.mixin' version = "dev.0.6" + getBuildNumber() group= "com.mcgoodtime.productionline" @@ -25,37 +28,10 @@ archivesBaseName = "ProductionLine" sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. -sourceSets { - main { - ext.refMap = 'mixins.productionline.refmap.json' - } -} - -processResources { - // this will ensure that this task is redone when the versions change. - inputs.property "version", project.version - inputs.property "mcversion", project.minecraft.version - - // replace stuff in mcmod.info, nothing else - from(sourceSets.main.resources.srcDirs) { - include 'mcmod.info' - - // replace version and mcversion - expand 'version': project.version, 'mcversion': project.minecraft.version - } - - // copy everything else, thats not the mcmod.info - from(sourceSets.main.resources.srcDirs) { - exclude 'mcmod.info' - } - - rename '(.+_at.cfg)', 'META-INF/$1' -} - minecraft { version = "1.12.2-14.23.5.2847" - runDir = 'run' - + runDir = "run" + // the mappings can be changed at any time, and must be in the following format. // snapshot_YYYYMMDD snapshot are built nightly. // stable_# stables are built at the discretion of the MCP team. @@ -63,29 +39,16 @@ minecraft { // simply re-run your setup task after changing the mappings to update your workspace. mappings = "snapshot_20171003" // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable. - - def args = [ - '-Dfml.coreMods.load=com.productionline.asm.MODCoremod', - '-Dmixin.hotSwap=true', - '-Dmixin.checks.interfaces=true' - ] - clientJvmArgs.addAll(args) - serverJvmArgs.addAll(args) -} - -configurations { - embed - compile.extendsFrom(embed) } repositories { - //mavenCentral() maven { name = "ic2" url = "https://maven.ic2.player.to" } maven { - url = 'http://repo.spongepowered.org/maven' + name = "sponge" + url = "http://repo.spongepowered.org/maven" } maven { name = "botania" @@ -95,35 +58,40 @@ repositories { name = "baubles" url = "https://maven.thiakil.com" } - maven { - name = "jei" - url = "http://dvs1.progwml6.com/files/maven" - } + maven { + name = "jei" + url = "http://dvs1.progwml6.com/files/maven" + } } dependencies { compile 'net.industrial-craft:industrialcraft-2:2.8.209-ex112:dev' //adds ic2 to the dev env deobfCompile "vazkii.botania:Botania:r1.10-363.148" deobfCompile "com.azanor.baubles:Baubles:1.12-1.5.2" - embed('org.spongepowered:mixin:0.7.11-SNAPSHOT'){ - transitive = false - } + //compile ('org.spongepowered:mixin:0.6.+') { + // exclude module: 'launchwrapper' + //} } -jar { - from(configurations.embed.collect { it.isDirectory() ? it : zipTree(it) }) { - exclude 'LICENSE.txt', 'META-INF/MANIFSET.MF', 'META-INF/maven/**', 'META-INF/*.RSA', 'META-INF/*.SF' - } +processResources { + // this will ensure that this task is redone when the versions change. + inputs.property "version", project.version + inputs.property "mcversion", project.minecraft.version - manifest.attributes( - 'FMLCorePluginContainsFMLMod': true, - 'ForceLoadAsMod': true, - 'TweakClass': 'org.spongepowered.asm.launch.MixinTweaker', - 'MixinConfigs': 'mixins.productionline.core.json', - 'FMLCorePlugin': 'com.productionline.asm.MODCoremod' - ) + // replace stuff in mcmod.info, nothing else + from(sourceSets.main.resources.srcDirs) { + include 'mcmod.info' + + // replace version and mcversion + expand 'version':project.version, 'mcversion':project.minecraft.version + } + + // copy everything else except the mcmod.info + from(sourceSets.main.resources.srcDirs) { + exclude 'mcmod.info' + } } static def getBuildNumber() { - return "$System.env.BUILD_NUMBER" != "null" ? "." + Integer.parseInt("$System.env.BUILD_NUMBER") : "" -} \ No newline at end of file + return "$System.env.BUILD_NUMBER" != "null" ? "." + Integer.parseInt("$System.env.BUILD_NUMBER") : "" +} From d9ff8ae6e3754f08bd0f31e427054a45dba55819 Mon Sep 17 00:00:00 2001 From: NightOwl Date: Mon, 10 Aug 2020 14:50:25 +0800 Subject: [PATCH 35/51] Load mixin properly --- build.gradle | 24 ++++++++++++------- .../productionline/core/coremod/PLSetup.java | 16 +++++++++---- .../mixin/ISubTileGenerating.java | 3 +-- .../mixin/MixinSubTileGenerating.java | 20 ++++++++-------- src/main/resources/META-INF/MANIFEST.MF | 6 +++++ .../resources/mixins.productionline.core.json | 12 ++++++++++ 6 files changed, 56 insertions(+), 25 deletions(-) create mode 100644 src/main/resources/META-INF/MANIFEST.MF create mode 100644 src/main/resources/mixins.productionline.core.json diff --git a/build.gradle b/build.gradle index 1ed49e8..9f011a8 100644 --- a/build.gradle +++ b/build.gradle @@ -6,21 +6,19 @@ buildscript { } jcenter() mavenCentral() - /* maven { name = "sponge" - url = "http://repo.spongepowered.org/maven" + url = "https://repo.spongepowered.org/maven" } - */ } dependencies { classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT' - //classpath 'org.spongepowered:mixingradle:0.4-SNAPSHOT' + classpath 'org.spongepowered:mixingradle:0.6-SNAPSHOT' } } apply plugin: 'net.minecraftforge.gradle.forge' -//apply plugin: 'org.spongepowered.mixin' +apply plugin: 'org.spongepowered.mixin' version = "dev.0.6" + getBuildNumber() group= "com.mcgoodtime.productionline" @@ -68,9 +66,19 @@ dependencies { compile 'net.industrial-craft:industrialcraft-2:2.8.209-ex112:dev' //adds ic2 to the dev env deobfCompile "vazkii.botania:Botania:r1.10-363.148" deobfCompile "com.azanor.baubles:Baubles:1.12-1.5.2" - //compile ('org.spongepowered:mixin:0.6.+') { - // exclude module: 'launchwrapper' - //} + compile ('org.spongepowered:mixin:0.8') { + exclude module: 'launchwrapper' + } +} + +mixin { + // Specify "notch" or "searge" here + defaultObfuscationEnv searge + add sourceSets.main, "mixins.forge.refmap.json" +} + +compileJava { + options.encoding = 'UTF-8' } processResources { diff --git a/src/main/java/com/mcgoodtime/productionline/core/coremod/PLSetup.java b/src/main/java/com/mcgoodtime/productionline/core/coremod/PLSetup.java index e8e77b1..b9b177a 100644 --- a/src/main/java/com/mcgoodtime/productionline/core/coremod/PLSetup.java +++ b/src/main/java/com/mcgoodtime/productionline/core/coremod/PLSetup.java @@ -25,11 +25,14 @@ package com.mcgoodtime.productionline.core.coremod; import net.minecraftforge.fml.relauncher.IFMLCallHook; -//import org.spongepowered.asm.launch.MixinBootstrap; -//import org.spongepowered.asm.mixin.Mixins; - +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.spongepowered.asm.launch.MixinBootstrap; +import org.spongepowered.asm.mixin.Mixins; import java.util.Map; +import static com.mcgoodtime.productionline.core.ProductionLine.MOD_NAME; + /** * Created by suhao on 2015.10.24.0024. * @@ -41,8 +44,11 @@ public void injectData(Map data) {} @Override public Void call() throws Exception { - //MixinBootstrap.init(); - //Mixins.addConfiguration("mixins.productionline.core.json"); + Logger logger = LogManager.getLogger(MOD_NAME + " Core"); + logger.info("Initializing Mixins"); + MixinBootstrap.init(); + Mixins.addConfiguration("mixins.productionline.core.json"); + logger.info("Mixins config loaded"); return null; } } diff --git a/src/main/java/com/mcgoodtime/productionline/mixin/ISubTileGenerating.java b/src/main/java/com/mcgoodtime/productionline/mixin/ISubTileGenerating.java index 2f55bb0..842a2e3 100644 --- a/src/main/java/com/mcgoodtime/productionline/mixin/ISubTileGenerating.java +++ b/src/main/java/com/mcgoodtime/productionline/mixin/ISubTileGenerating.java @@ -1,8 +1,7 @@ package com.mcgoodtime.productionline.mixin; -/* public interface ISubTileGenerating { boolean canEnhance(); void setGrowth(int growth); } -*/ + diff --git a/src/main/java/com/mcgoodtime/productionline/mixin/MixinSubTileGenerating.java b/src/main/java/com/mcgoodtime/productionline/mixin/MixinSubTileGenerating.java index 600352e..c2627f4 100644 --- a/src/main/java/com/mcgoodtime/productionline/mixin/MixinSubTileGenerating.java +++ b/src/main/java/com/mcgoodtime/productionline/mixin/MixinSubTileGenerating.java @@ -11,8 +11,8 @@ import vazkii.botania.api.subtile.SubTileGenerating; -/* -@Mixin(value=SubTileGenerating.class,remap = false) + +@Mixin(SubTileGenerating.class) public abstract class MixinSubTileGenerating extends SubTileEntity implements ISubTileGenerating{ @Shadow @@ -22,13 +22,18 @@ public abstract class MixinSubTileGenerating extends SubTileEntity implements IS protected int mana; private int growth; + private boolean canEnhance; @Shadow public abstract boolean isValidBinding(); @Inject(method = "update",at=@At("HEAD")) public void onUpdate() { - canEnhance(); + if(this.mana > 0) { + this.canEnhance = true; + } else { + this.canEnhance = false; + } } @Overwrite @@ -44,11 +49,7 @@ public void emptyManaIntoCollector() { } public boolean canEnhance(){ - if(this.mana>0){ - return true; - }else{ - return false; - } + return this.canEnhance; } public void setGrowth(int growth){ @@ -56,5 +57,4 @@ public void setGrowth(int growth){ } -} - */ \ No newline at end of file +} \ No newline at end of file diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF new file mode 100644 index 0000000..91b1ec7 --- /dev/null +++ b/src/main/resources/META-INF/MANIFEST.MF @@ -0,0 +1,6 @@ +Manifest-Version: 1.0 +TweakClass: org.spongepowered.asm.launch.MixinTweaker +TweakOrder: 0 +MixinConfigs: mixins.productionline.core.json +FMLCorePlugin: com.mcgoodtime.productionline.core.coremod.PLCore +FMLCorePluginContainsFMLMod: true diff --git a/src/main/resources/mixins.productionline.core.json b/src/main/resources/mixins.productionline.core.json new file mode 100644 index 0000000..a950cf7 --- /dev/null +++ b/src/main/resources/mixins.productionline.core.json @@ -0,0 +1,12 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "com.mcgoodtime.productionline.mixin", + "priority": 1111, + "mixins": [ + "MixinSubTileGenerating" + ], + "compatibilityLevel": "JAVA_8", + "client": [], + "server": [] +} \ No newline at end of file From 928a1ccdc32f2bdf8eb5ed70741ffb71eaac724e Mon Sep 17 00:00:00 2001 From: _JAVA10 <563622979@qq.com> Date: Tue, 11 Aug 2020 20:28:33 +0800 Subject: [PATCH 36/51] Add event to detect whether the square placed by player can be logistics --- .../productionline/event/PLEvent.java | 59 ++++++++++++------- 1 file changed, 37 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java b/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java index 7325421..217fec8 100644 --- a/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java +++ b/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java @@ -24,31 +24,23 @@ */ package com.mcgoodtime.productionline.event; -import com.google.common.base.Optional; -import com.mcgoodtime.productionline.entity.EntityThrownItem; -import com.mcgoodtime.productionline.init.PLBlocks; -import com.mcgoodtime.productionline.init.PLItems; -import com.mcgoodtime.productionline.potion.PLPotion; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.init.Biomes; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.DamageSource; -import net.minecraft.util.EnumParticleTypes; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.world.biome.Biome; -import net.minecraftforge.event.entity.player.FillBucketEvent; +import ic2.core.item.capability.CapabilityFluidHandlerItem; +import net.minecraft.block.Block; +import net.minecraft.block.state.IBlockState; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.math.BlockPos; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.energy.CapabilityEnergy; +import net.minecraftforge.event.world.BlockEvent; +import net.minecraftforge.fluids.capability.CapabilityFluidHandler; import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.common.eventhandler.Event; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -import net.minecraftforge.fml.common.gameevent.PlayerEvent; - -import ic2.api.item.IC2Items; -import ic2.core.IC2Potion; +import net.minecraftforge.items.CapabilityItemHandler; +import org.apache.commons.lang3.ObjectUtils; /** * Production Line event listener. @@ -129,4 +121,27 @@ private void onImpact(EntityThrownItem entity, RayTraceResult movingObjectPositi entity.getThrowItem().get())); } }*/ + + public Boolean canLogistics; + public BlockPos pos; + + @SubscribeEvent + public void onBlockPlayerPlaced(BlockEvent.EntityPlaceEvent event) { + TileEntity te = event.getWorld().getTileEntity(event.getPos()); + if (te.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null)) { + canLogistics = true; + }else if(te.hasCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY,null) && te.hasCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null)){ + canLogistics = true; + }else if(te.hasCapability(CapabilityEnergy.ENERGY,null)){ + canLogistics = true; + }else{ + canLogistics = false; + } + if(canLogistics){ + this.pos=te.getPos(); + } + + } + + } From 51dc11f21f5c6f60ad08008a701dc7e733c211a2 Mon Sep 17 00:00:00 2001 From: _JAVA10 <563622979@qq.com> Date: Wed, 12 Aug 2020 14:46:56 +0800 Subject: [PATCH 37/51] Create a class for wireless machine registration(Maybe Unfinished) --- .../blocks/BlockWirelessMachine.java | 102 ++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 src/main/java/com/mcgoodtime/productionline/blocks/BlockWirelessMachine.java diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/BlockWirelessMachine.java b/src/main/java/com/mcgoodtime/productionline/blocks/BlockWirelessMachine.java new file mode 100644 index 0000000..b777a97 --- /dev/null +++ b/src/main/java/com/mcgoodtime/productionline/blocks/BlockWirelessMachine.java @@ -0,0 +1,102 @@ +package com.mcgoodtime.productionline.blocks; + +import com.mcgoodtime.productionline.client.IBlockModelProvider; +import com.mcgoodtime.productionline.core.GuiHandler; +import com.mcgoodtime.productionline.core.ProductionLine; +import com.mcgoodtime.productionline.tiles.TileFacing; +import ic2.api.item.IC2Items; +import net.minecraft.block.material.Material; +import net.minecraft.block.properties.PropertyBool; +import net.minecraft.block.properties.PropertyEnum; +import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.IStringSerializable; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraftforge.fml.common.registry.GameRegistry; + +import javax.annotation.Nonnull; +import java.util.Random; + +public class BlockWirelessMachine extends BlockContainerPL implements IOrientableBlock, IMultiIDBlock>, IBlockModelProvider { + + public static final PropertyEnum PROPERTY_TYPE = PropertyEnum.create("type", Type.class); + public static final PropertyBool PROPERTY_ACTIVE = PropertyBool.create("active"); + + public enum Type implements IStringSerializable, IBlockType {; + + private final String name; + public final Class tileClass; + public final GuiHandler.EnumGui gui; + + Type(String name, Class tileClass, GuiHandler.EnumGui gui) { + this.name = name; + this.tileClass = tileClass; + this.gui = gui; + } + + @Override + @Nonnull + public String getName() { + return name; + } + + @Override + public String getTypeName() { + return this.name; + } + } + + + public BlockWirelessMachine(Material material, String name) { + super(Material.IRON, "wireless_machine"); + this.setHardness(2.0F); + this.setLightLevel(10.0F); + this.setDefaultState(this.blockState.getBaseState().withProperty(PROPERTY_FACING, EnumFacing.NORTH) + .withProperty(PROPERTY_ACTIVE, false)); + for (BlockWirelessMachine.Type t : BlockWirelessMachine.Type.values()) { + GameRegistry.registerTileEntity(t.tileClass, t.getName()); + } + } + + @Override + public ModelResourceLocation getModelResourceLocation(int meta) { + ResourceLocation res = new ResourceLocation(ProductionLine.RESOURCE_DOMAIN, BlockWirelessMachine.Type.values()[meta].getTypeName()); + return new ModelResourceLocation(res, "inventory"); + } + + @Override + public Item getItemDropped(IBlockState state, Random rand, int fortune) { + return IC2Items.getItem("wireless_machine").getItem(); + } + + @Override + protected Class getTileEntityClass(IBlockState state) { + return state.getValue(PROPERTY_TYPE).tileClass; + } + + @Nonnull + @Override + public PropertyEnum getBlockTypeContainer(){ + return PROPERTY_TYPE; + } + + @Override + public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) { + if (stack.getMetadata() < BlockMachine.Type.values().length) { + world.setBlockState(pos, state.withProperty(PROPERTY_TYPE, BlockWirelessMachine.Type.values()[stack.getMetadata()]), 2); + } + + TileFacing tile = (TileFacing) world.getTileEntity(pos); + if (tile != null) { + tile.setFacing(placer.getHorizontalFacing().getOpposite()); + } + } + +} From 9e6afc29246cf6e25c4fe10b504b0a426b6a04c3 Mon Sep 17 00:00:00 2001 From: _JAVA10 <563622979@qq.com> Date: Wed, 12 Aug 2020 22:06:56 +0800 Subject: [PATCH 38/51] Deleted useless imports and changed ingot-iridium`s recipe --- .../blocks/BlockContainerPL.java | 1 - .../productionline/blocks/BlockMachine.java | 4 ---- .../productionline/blocks/BlockMisc.java | 3 --- .../productionline/blocks/BlockPL.java | 13 ---------- .../blocks/BlockWirelessMachine.java | 24 ++++++++++++------- .../client/PLModelRegistry.java | 2 -- .../productionline/core/GuiHandler.java | 1 - .../entity/EntityThrownItem.java | 5 +--- .../productionline/event/PLEvent.java | 9 ------- .../productionline/init/PLRecipes.java | 14 ++++------- .../productionline/items/ItemMulti.java | 2 -- .../productionline/items/ItemPL.java | 2 -- .../tiles/SubTileFlowerOfOsiris.java | 5 +--- 13 files changed, 22 insertions(+), 63 deletions(-) diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/BlockContainerPL.java b/src/main/java/com/mcgoodtime/productionline/blocks/BlockContainerPL.java index a8ad888..b00a2bc 100644 --- a/src/main/java/com/mcgoodtime/productionline/blocks/BlockContainerPL.java +++ b/src/main/java/com/mcgoodtime/productionline/blocks/BlockContainerPL.java @@ -26,7 +26,6 @@ package com.mcgoodtime.productionline.blocks; import com.mcgoodtime.productionline.inventory.Inventories; -import com.mcgoodtime.productionline.tiles.TileFacing; import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/BlockMachine.java b/src/main/java/com/mcgoodtime/productionline/blocks/BlockMachine.java index 12ac8a2..e12019f 100644 --- a/src/main/java/com/mcgoodtime/productionline/blocks/BlockMachine.java +++ b/src/main/java/com/mcgoodtime/productionline/blocks/BlockMachine.java @@ -1,10 +1,8 @@ package com.mcgoodtime.productionline.blocks; import com.mcgoodtime.productionline.client.IBlockModelProvider; -import com.mcgoodtime.productionline.PLUtil; import com.mcgoodtime.productionline.core.GuiHandler; import com.mcgoodtime.productionline.core.ProductionLine; -import com.mcgoodtime.productionline.init.PLBlocks; import com.mcgoodtime.productionline.items.ItemBlockPL; import com.mcgoodtime.productionline.tiles.*; import ic2.api.item.IC2Items; @@ -18,7 +16,6 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.*; import net.minecraft.util.math.BlockPos; import net.minecraft.world.ChunkCache; @@ -31,7 +28,6 @@ import java.util.Random; import javax.annotation.Nonnull; -import javax.annotation.Nullable; /** * Created by BestOwl on 2015.11.25.0025. diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/BlockMisc.java b/src/main/java/com/mcgoodtime/productionline/blocks/BlockMisc.java index d61787a..0cc6b7f 100644 --- a/src/main/java/com/mcgoodtime/productionline/blocks/BlockMisc.java +++ b/src/main/java/com/mcgoodtime/productionline/blocks/BlockMisc.java @@ -26,7 +26,6 @@ import com.mcgoodtime.productionline.client.IBlockModelProvider; import com.mcgoodtime.productionline.core.ProductionLine; -import com.mcgoodtime.productionline.init.PLBlocks; import com.mcgoodtime.productionline.items.ItemBlockPL; import net.minecraft.block.material.Material; import net.minecraft.block.properties.PropertyEnum; @@ -34,14 +33,12 @@ import net.minecraft.block.state.IBlockState; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IStringSerializable; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.fml.common.registry.ForgeRegistries; -import net.minecraftforge.fml.common.registry.GameRegistry; import javax.annotation.Nonnull; diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/BlockPL.java b/src/main/java/com/mcgoodtime/productionline/blocks/BlockPL.java index 61d8c75..5f40a3f 100644 --- a/src/main/java/com/mcgoodtime/productionline/blocks/BlockPL.java +++ b/src/main/java/com/mcgoodtime/productionline/blocks/BlockPL.java @@ -25,34 +25,21 @@ package com.mcgoodtime.productionline.blocks; import com.mcgoodtime.productionline.core.PLConfig; -import com.mcgoodtime.productionline.items.ItemBlockPL; import net.minecraft.block.properties.PropertyDirection; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.EnumFacing; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.world.IBlockAccess; import net.minecraftforge.fml.common.registry.ForgeRegistries; -import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraft.block.Block; import net.minecraft.block.material.Material; -import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; -//import net.minecraft.util.MovingObjectPositionsition; import net.minecraft.world.World; -//import net.minecraftforge.fml.common.registry.IForgeRegistryEntry; -import net.minecraftforge.registries.ForgeRegistry; import org.apache.logging.log4j.Level; -import javax.annotation.Nonnull; -import java.util.List; -import java.util.Random; - import static com.mcgoodtime.productionline.core.ProductionLine.*; /** diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/BlockWirelessMachine.java b/src/main/java/com/mcgoodtime/productionline/blocks/BlockWirelessMachine.java index b777a97..ced537f 100644 --- a/src/main/java/com/mcgoodtime/productionline/blocks/BlockWirelessMachine.java +++ b/src/main/java/com/mcgoodtime/productionline/blocks/BlockWirelessMachine.java @@ -3,15 +3,16 @@ import com.mcgoodtime.productionline.client.IBlockModelProvider; import com.mcgoodtime.productionline.core.GuiHandler; import com.mcgoodtime.productionline.core.ProductionLine; +import com.mcgoodtime.productionline.items.ItemBlockPL; import com.mcgoodtime.productionline.tiles.TileFacing; -import ic2.api.item.IC2Items; + import net.minecraft.block.material.Material; import net.minecraft.block.properties.PropertyBool; import net.minecraft.block.properties.PropertyEnum; +import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; @@ -19,10 +20,11 @@ import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; + +import net.minecraftforge.fml.common.registry.ForgeRegistries; import net.minecraftforge.fml.common.registry.GameRegistry; import javax.annotation.Nonnull; -import java.util.Random; public class BlockWirelessMachine extends BlockContainerPL implements IOrientableBlock, IMultiIDBlock>, IBlockModelProvider { @@ -71,11 +73,6 @@ public ModelResourceLocation getModelResourceLocation(int meta) { return new ModelResourceLocation(res, "inventory"); } - @Override - public Item getItemDropped(IBlockState state, Random rand, int fortune) { - return IC2Items.getItem("wireless_machine").getItem(); - } - @Override protected Class getTileEntityClass(IBlockState state) { return state.getValue(PROPERTY_TYPE).tileClass; @@ -99,4 +96,15 @@ public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, Entity } } + @Override + protected void registerItemBlock() { + ForgeRegistries.ITEMS.register(new ItemBlockPL(this)); + } + + @Override + protected BlockStateContainer createBlockState() { + return new BlockStateContainer(this, PROPERTY_FACING, PROPERTY_TYPE, PROPERTY_ACTIVE); + } + + } diff --git a/src/main/java/com/mcgoodtime/productionline/client/PLModelRegistry.java b/src/main/java/com/mcgoodtime/productionline/client/PLModelRegistry.java index 0e38fa1..4f7266d 100644 --- a/src/main/java/com/mcgoodtime/productionline/client/PLModelRegistry.java +++ b/src/main/java/com/mcgoodtime/productionline/client/PLModelRegistry.java @@ -25,14 +25,12 @@ package com.mcgoodtime.productionline.client; -import com.mcgoodtime.productionline.blocks.*; import com.mcgoodtime.productionline.init.PLBlocks; import com.mcgoodtime.productionline.init.PLItems; import com.mcgoodtime.productionline.items.ItemMulti; import net.minecraft.block.Block; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.renderer.block.statemap.IStateMapper; -import net.minecraft.client.renderer.block.statemap.StateMap; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; diff --git a/src/main/java/com/mcgoodtime/productionline/core/GuiHandler.java b/src/main/java/com/mcgoodtime/productionline/core/GuiHandler.java index 1f608a5..15bce5a 100644 --- a/src/main/java/com/mcgoodtime/productionline/core/GuiHandler.java +++ b/src/main/java/com/mcgoodtime/productionline/core/GuiHandler.java @@ -25,7 +25,6 @@ package com.mcgoodtime.productionline.core; -import com.mcgoodtime.productionline.client.gui.*; import net.minecraft.util.math.BlockPos; import net.minecraftforge.fml.common.network.IGuiHandler; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/com/mcgoodtime/productionline/entity/EntityThrownItem.java b/src/main/java/com/mcgoodtime/productionline/entity/EntityThrownItem.java index 9051cf6..7f37f80 100644 --- a/src/main/java/com/mcgoodtime/productionline/entity/EntityThrownItem.java +++ b/src/main/java/com/mcgoodtime/productionline/entity/EntityThrownItem.java @@ -24,14 +24,11 @@ */ package com.mcgoodtime.productionline.entity; -import com.google.common.base.Optional; import com.mcgoodtime.productionline.event.EntityThrowableImpactEvent; import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.datasync.DataParameter; -import net.minecraft.network.datasync.DataSerializers; -import net.minecraft.network.datasync.EntityDataManager; + import net.minecraft.util.math.RayTraceResult; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; diff --git a/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java b/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java index 217fec8..d0a2189 100644 --- a/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java +++ b/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java @@ -24,23 +24,14 @@ */ package com.mcgoodtime.productionline.event; - -import ic2.core.item.capability.CapabilityFluidHandlerItem; -import net.minecraft.block.Block; -import net.minecraft.block.state.IBlockState; -import net.minecraft.inventory.IInventory; -import net.minecraft.inventory.ISidedInventory; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; -import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.energy.CapabilityEnergy; import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.fluids.capability.CapabilityFluidHandler; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.items.CapabilityItemHandler; -import org.apache.commons.lang3.ObjectUtils; /** * Production Line event listener. diff --git a/src/main/java/com/mcgoodtime/productionline/init/PLRecipes.java b/src/main/java/com/mcgoodtime/productionline/init/PLRecipes.java index b9b8eac..047ba3b 100644 --- a/src/main/java/com/mcgoodtime/productionline/init/PLRecipes.java +++ b/src/main/java/com/mcgoodtime/productionline/init/PLRecipes.java @@ -24,20 +24,16 @@ */ package com.mcgoodtime.productionline.init; -import com.mcgoodtime.productionline.items.ItemStacks; -import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.CraftingManager; import net.minecraft.item.crafting.FurnaceRecipes; -import net.minecraft.item.crafting.IRecipe; import net.minecraftforge.fml.common.registry.GameRegistry; import java.util.List; import java.util.Map; import ic2.api.item.IC2Items; +import net.minecraftforge.oredict.OreDictionary; -//import ic2.core.AdvRecipe; /** * The class for loading all the recipes of GoodTime-Industrial. Migrated from old loaders. @@ -51,15 +47,13 @@ public class PLRecipes { * Load recipes of GoodTime-Industrial. */ public static void init() { - //smelting registry GameRegistry.addSmelting(PLBlocks.oreIridium, PLItems.ingotIridium, XP); - GameRegistry.addSmelting(IC2Items.getItem("iridiumOre"), PLItems.ingotIridium, XP); - - + for(ItemStack oreIridium:OreDictionary.getOres("oreIridium")){ + GameRegistry.addSmelting(oreIridium, PLItems.ingotIridium, XP); + } } - /** * Disable recipes. * diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemMulti.java b/src/main/java/com/mcgoodtime/productionline/items/ItemMulti.java index 8c77f98..4d4bce8 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemMulti.java +++ b/src/main/java/com/mcgoodtime/productionline/items/ItemMulti.java @@ -5,8 +5,6 @@ import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.NonNullList; import net.minecraft.world.World; diff --git a/src/main/java/com/mcgoodtime/productionline/items/ItemPL.java b/src/main/java/com/mcgoodtime/productionline/items/ItemPL.java index 5331667..9594593 100644 --- a/src/main/java/com/mcgoodtime/productionline/items/ItemPL.java +++ b/src/main/java/com/mcgoodtime/productionline/items/ItemPL.java @@ -26,13 +26,11 @@ import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import net.minecraftforge.fml.common.registry.ForgeRegistries; -import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/SubTileFlowerOfOsiris.java b/src/main/java/com/mcgoodtime/productionline/tiles/SubTileFlowerOfOsiris.java index 478721e..92852a2 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/SubTileFlowerOfOsiris.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/SubTileFlowerOfOsiris.java @@ -1,13 +1,10 @@ package com.mcgoodtime.productionline.tiles; -import com.mcgoodtime.productionline.core.ProductionLine; -import ic2.core.energy.grid.Tile; -import net.minecraft.block.state.IBlockState; + import net.minecraft.init.Blocks; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; -import org.spongepowered.asm.mixin.Overwrite; import vazkii.botania.api.subtile.SubTileEntity; import vazkii.botania.api.subtile.SubTileFunctional; import vazkii.botania.api.subtile.SubTileGenerating; From 7ca5dc3f2861b4b1997e506e54a550d7b448a667 Mon Sep 17 00:00:00 2001 From: _JAVA10 <563622979@qq.com> Date: Wed, 12 Aug 2020 23:10:04 +0800 Subject: [PATCH 39/51] Add wireless interface --- .../tiles/tilewireless/IWireless.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/IWireless.java diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/IWireless.java b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/IWireless.java new file mode 100644 index 0000000..2329b50 --- /dev/null +++ b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/IWireless.java @@ -0,0 +1,21 @@ +package com.mcgoodtime.productionline.tiles.tilewireless; + +import ibxm.Player; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockPos; + +import java.util.List; + +public interface IWireless { + + String getTerminalName(); + + Player getOwner(); + + int getRange(); + + BlockPos getPos(); + + List getLinkedBlocks(); + +} From 351d2d2a2db4b26a77e40b8c51841d15cef2b09d Mon Sep 17 00:00:00 2001 From: _JAVA10 <563622979@qq.com> Date: Thu, 13 Aug 2020 14:34:04 +0800 Subject: [PATCH 40/51] Little change --- .../productionline/event/PLEvent.java | 84 ++++--------------- .../tiles/tilewireless/IWireless.java | 2 - .../tiles/tilewireless/TileWaterSource.java | 37 ++++++++ 3 files changed, 52 insertions(+), 71 deletions(-) create mode 100644 src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWaterSource.java diff --git a/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java b/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java index d0a2189..d2af8b0 100644 --- a/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java +++ b/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java @@ -24,6 +24,8 @@ */ package com.mcgoodtime.productionline.event; +import com.mcgoodtime.productionline.tiles.TileTefnutTear; +import com.mcgoodtime.productionline.tiles.tilewireless.IWireless; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; import net.minecraftforge.energy.CapabilityEnergy; @@ -46,92 +48,36 @@ public void onPlayerCrafting(PlayerEvent.ItemCraftedEvent event) { event.player.addStat(PLAchievement.getCarbonizeFurnace, 1); } } +*/ - @SubscribeEvent - public void onPlayerPickup(PlayerEvent.ItemPickupEvent event) { - if (event.pickedUp.getEntityItem().isItemEqual(new ItemStack(PLBlocks.oreIridium))) { - event.player.addStat(PLAchievement.getIrOre, 1); - } - } - - @SubscribeEvent - public void onBucketFill(FillBucketEvent event) { - if (event.getEntityPlayer() != null) { - Biome biome = event.getWorld().getBiomeForCoordsBody(event.getTarget().getBlockPos()); - if (biome == Biomes.OCEAN || biome == Biomes.DEEP_OCEAN || biome == Biomes.FROZEN_OCEAN) { - event.setResult(Event.Result.ALLOW); - event.setFilledBucket(new ItemStack(PLItems.saltWaterBucket)); - } - } - } - - @SubscribeEvent - public void onEntityThrowableImpact(EntityThrowableImpactEvent event) { - Optional optItemStack = event.entityThrownItem.getThrowItem(); - if (!optItemStack.isPresent()) { - return; - } - ItemStack stack = optItemStack.get(); - if (stack.getItem().equals(PLItems.packagedSalt)) { - for (int i = 0; i < 8; ++i) { - float fmod = (float) (1.2 - (Math.random() * 2.4)); - float f1mod = (float) (0.5 - (Math.random() * 1.0)); - float f2mod = (float) (1.2 - (Math.random() * 2.4)); - - event.entityThrownItem.world.spawnParticle(EnumParticleTypes.ITEM_CRACK, - event.entityThrownItem.posX + fmod, event.entityThrownItem.posY + f1mod, - event.entityThrownItem.posZ + f2mod, 0.1D, 0.1D, 0.1D, Item.getIdFromItem(PLItems.salt)); - if (!event.entityThrownItem.world.isRemote) { - EntityItem entityItem = new EntityItem(event.entityThrownItem.world, - event.entityThrownItem.posX + fmod, event.entityThrownItem.posY + f1mod, - event.entityThrownItem.posZ + f2mod, new ItemStack(PLItems.salt)); - event.entityThrownItem.world.spawnEntity(entityItem); - } - } - this.onImpact(event.entityThrownItem, event.movingObjectPosition, new PotionEffect(PLPotion.salty, 0, 3)); - } else if (stack.isItemEqual(IC2Items.getItem("Uran238"))) { - this.onImpact(event.entityThrownItem, event.movingObjectPosition, new PotionEffect(IC2Potion.radiation, 200, 0)); - } else { - this.onImpact(event.entityThrownItem, event.movingObjectPosition, null); - } - } - - private void onImpact(EntityThrownItem entity, RayTraceResult movingObjectPosition, PotionEffect potionEffect) { - if (movingObjectPosition.entityHit != null) { - movingObjectPosition.entityHit.attackEntityFrom(DamageSource.causeThrownDamage(entity, entity.getThrower()), 3F); - if (movingObjectPosition.entityHit instanceof EntityLivingBase && potionEffect != null) { - ((EntityLivingBase) movingObjectPosition.entityHit).addPotionEffect(potionEffect); - } - } - entity.world.spawnParticle(EnumParticleTypes.ITEM_CRACK, entity.posX, entity.posY, entity.posZ, 0.1D, 0.1D, - 0.1D, Item.getIdFromItem(entity.getThrowItem().get().getItem())); - if (!entity.world.isRemote) { - entity.setDead(); - entity.world.spawnEntity(new EntityItem(entity.world, entity.posX, entity.posY, entity.posZ, - entity.getThrowItem().get())); - } - }*/ - - public Boolean canLogistics; - public BlockPos pos; + public BlockPos wireLessPos; @SubscribeEvent public void onBlockPlayerPlaced(BlockEvent.EntityPlaceEvent event) { + Boolean canLogistics; TileEntity te = event.getWorld().getTileEntity(event.getPos()); + if(te instanceof IWireless){ + wireLessPos = te.getPos(); + } + + /* if (te.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null)) { canLogistics = true; }else if(te.hasCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY,null) && te.hasCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null)){ canLogistics = true; }else if(te.hasCapability(CapabilityEnergy.ENERGY,null)){ canLogistics = true; - }else{ + }else if(te instanceof TileTefnutTear){ + canLogistics = true; + } + else{ canLogistics = false; } if(canLogistics){ this.pos=te.getPos(); } - +*/ } diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/IWireless.java b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/IWireless.java index 2329b50..05f1a32 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/IWireless.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/IWireless.java @@ -16,6 +16,4 @@ public interface IWireless { BlockPos getPos(); - List getLinkedBlocks(); - } diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWaterSource.java b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWaterSource.java new file mode 100644 index 0000000..f143cc1 --- /dev/null +++ b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWaterSource.java @@ -0,0 +1,37 @@ +package com.mcgoodtime.productionline.tiles.tilewireless; + +import ibxm.Player; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ITickable; +import net.minecraft.util.math.BlockPos; + +import java.util.List; + +public class TileWaterSource extends TileEntity implements IWireless,ITickable { + + @Override + public void update() { + + } + + @Override + public String getTerminalName() { + return null; + } + + @Override + public Player getOwner() { + return null; + } + + @Override + public int getRange() { + return 0; + } + + @Override + public BlockPos getPos() { + return null; + } + +} From 292aea4d047b0512345115fd58785a31d24fb10e Mon Sep 17 00:00:00 2001 From: _JAVA10 <563622979@qq.com> Date: Thu, 13 Aug 2020 22:45:39 +0800 Subject: [PATCH 41/51] Try to realize wireless function(unfinished) --- .../blocks/BlockWirelessMachine.java | 3 +- .../productionline/event/PLEvent.java | 29 +++++---- .../productionline/init/PLRecipes.java | 24 ++++++- .../tiles/tilewireless/IWireless.java | 11 +--- .../tiles/tilewireless/TileWaterSource.java | 24 +------ .../tiles/tilewireless/TileWireless.java | 64 +++++++++++++++++++ 6 files changed, 111 insertions(+), 44 deletions(-) create mode 100644 src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWireless.java diff --git a/src/main/java/com/mcgoodtime/productionline/blocks/BlockWirelessMachine.java b/src/main/java/com/mcgoodtime/productionline/blocks/BlockWirelessMachine.java index ced537f..3d9c24c 100644 --- a/src/main/java/com/mcgoodtime/productionline/blocks/BlockWirelessMachine.java +++ b/src/main/java/com/mcgoodtime/productionline/blocks/BlockWirelessMachine.java @@ -60,8 +60,7 @@ public BlockWirelessMachine(Material material, String name) { super(Material.IRON, "wireless_machine"); this.setHardness(2.0F); this.setLightLevel(10.0F); - this.setDefaultState(this.blockState.getBaseState().withProperty(PROPERTY_FACING, EnumFacing.NORTH) - .withProperty(PROPERTY_ACTIVE, false)); + this.setDefaultState(this.blockState.getBaseState().withProperty(PROPERTY_FACING, EnumFacing.NORTH).withProperty(PROPERTY_ACTIVE, false)); for (BlockWirelessMachine.Type t : BlockWirelessMachine.Type.values()) { GameRegistry.registerTileEntity(t.tileClass, t.getName()); } diff --git a/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java b/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java index d2af8b0..ba59203 100644 --- a/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java +++ b/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java @@ -24,16 +24,14 @@ */ package com.mcgoodtime.productionline.event; -import com.mcgoodtime.productionline.tiles.TileTefnutTear; -import com.mcgoodtime.productionline.tiles.tilewireless.IWireless; +import com.mcgoodtime.productionline.tiles.tilewireless.TileWireless; +import ibxm.Player; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; -import net.minecraftforge.energy.CapabilityEnergy; import net.minecraftforge.event.world.BlockEvent; -import net.minecraftforge.fluids.capability.CapabilityFluidHandler; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -import net.minecraftforge.items.CapabilityItemHandler; /** * Production Line event listener. @@ -50,15 +48,24 @@ public void onPlayerCrafting(PlayerEvent.ItemCraftedEvent event) { } */ - - public BlockPos wireLessPos; - @SubscribeEvent public void onBlockPlayerPlaced(BlockEvent.EntityPlaceEvent event) { - Boolean canLogistics; TileEntity te = event.getWorld().getTileEntity(event.getPos()); - if(te instanceof IWireless){ - wireLessPos = te.getPos(); + if(te instanceof TileWireless){ + TileWireless tw = (TileWireless) te; + + if(!(event.getWorld().isRemote)){ + if(event.getEntity()instanceof EntityPlayer){ + tw.setOwner(event.getEntity()); + } + } + + if(tw.inRange(tw.getPos()) && tw.sameOwner(event.getEntity())){ + tw.link(tw); + }else { + return; + } + } /* diff --git a/src/main/java/com/mcgoodtime/productionline/init/PLRecipes.java b/src/main/java/com/mcgoodtime/productionline/init/PLRecipes.java index 047ba3b..31d4dca 100644 --- a/src/main/java/com/mcgoodtime/productionline/init/PLRecipes.java +++ b/src/main/java/com/mcgoodtime/productionline/init/PLRecipes.java @@ -24,15 +24,18 @@ */ package com.mcgoodtime.productionline.init; +import com.mcgoodtime.productionline.core.ProductionLine; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraftforge.fml.common.registry.GameRegistry; -import java.util.List; import java.util.Map; -import ic2.api.item.IC2Items; import net.minecraftforge.oredict.OreDictionary; +import vazkii.botania.api.BotaniaAPI; +import vazkii.botania.api.recipe.RecipePetals; +import vazkii.botania.common.item.block.ItemBlockSpecialFlower; +import vazkii.botania.common.lib.LibOreDict; /** @@ -40,9 +43,18 @@ * * @author liach */ + public class PLRecipes { private static final float XP = 2F; + static RecipePetals flowerOfOsirisRecipe; + + static final String GREEN = LibOreDict.PETAL[13], RUNESPRING = LibOreDict.RUNE[4], RUNEPRIDE = LibOreDict.RUNE[15]; + + static final ItemStack EYE_OF_THE_DESERT = PLItems.eyeOfTheDesert; + + static final ItemStack AQUAMARINE = PLItems.aquamarine; + /** * Load recipes of GoodTime-Industrial. */ @@ -52,8 +64,16 @@ public static void init() { for(ItemStack oreIridium:OreDictionary.getOres("oreIridium")){ GameRegistry.addSmelting(oreIridium, PLItems.ingotIridium, XP); } + if(ProductionLine.isBotaniaLoaded){ + flowerOfOsirisRecipe = BotaniaAPI.registerPetalRecipe(ItemBlockSpecialFlower.ofType(PLBlocks.flowerOfOsiris), + GREEN, GREEN, GREEN, RUNESPRING, + RUNEPRIDE, EYE_OF_THE_DESERT, EYE_OF_THE_DESERT, AQUAMARINE, + AQUAMARINE, AQUAMARINE, AQUAMARINE, AQUAMARINE, + AQUAMARINE, AQUAMARINE ); + } } + /** * Disable recipes. * diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/IWireless.java b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/IWireless.java index 05f1a32..8bf6abf 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/IWireless.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/IWireless.java @@ -1,19 +1,14 @@ package com.mcgoodtime.productionline.tiles.tilewireless; -import ibxm.Player; +import net.minecraft.entity.Entity; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; - -import java.util.List; public interface IWireless { String getTerminalName(); - Player getOwner(); - - int getRange(); + void setOwner(Entity player); - BlockPos getPos(); + void link(TileEntity tile); } diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWaterSource.java b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWaterSource.java index f143cc1..860476c 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWaterSource.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWaterSource.java @@ -5,33 +5,15 @@ import net.minecraft.util.ITickable; import net.minecraft.util.math.BlockPos; -import java.util.List; +import java.util.Map; +import java.util.UUID; -public class TileWaterSource extends TileEntity implements IWireless,ITickable { +public class TileWaterSource extends TileWireless { @Override public void update() { } - @Override - public String getTerminalName() { - return null; - } - - @Override - public Player getOwner() { - return null; - } - - @Override - public int getRange() { - return 0; - } - - @Override - public BlockPos getPos() { - return null; - } } diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWireless.java b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWireless.java new file mode 100644 index 0000000..22c0321 --- /dev/null +++ b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWireless.java @@ -0,0 +1,64 @@ +package com.mcgoodtime.productionline.tiles.tilewireless; + +import net.minecraft.entity.Entity; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ITickable; +import net.minecraft.util.math.BlockPos; + +import java.util.Map; +import java.util.UUID; + +public class TileWireless extends TileEntity implements IWireless, ITickable { + + Map linkedWirelessDecives; + + private final int X = this.pos.getX(); + private final int Y = this.pos.getY(); + private final int Z = this.pos.getZ(); + + Entity owner; + + @Override + public void update() { + + } + + @Override + public String getTerminalName() { + return null; + } + + @Override + public void setOwner(Entity player) { + this.owner = player; + } + + public boolean sameOwner(Entity player){ + return player.equals(this.owner)?true:false; + } + + public boolean inRange(BlockPos pos) { + boolean x_InRange = pos.getX() <= X+getRange(0) && pos.getX()>=X-getRange(0); + boolean y_InRange = pos.getY() <= Y+getRange(1) && pos.getY()>=Y-getRange(1); + boolean z_InRange = pos.getZ() <= Z+getRange(2) && pos.getZ()>=Z-getRange(2); + boolean notSelf = pos.getX() != X && pos.getY() != Y && pos.getZ() != Z; + + if(x_InRange && y_InRange && z_InRange && notSelf){ + return true; + } + return false; + } + + private int getRange(int index){ + int[] range = {(17-1)/2,(9-1)/2,(17-1)/2}; + return range[index]; + } + + @Override + public void link(TileEntity tile) { + this.linkedWirelessDecives.put(UUID.randomUUID(), tile); + } + + + +} From 6a3241762bdbec37dbabaf1e1d7e5a3301e8399c Mon Sep 17 00:00:00 2001 From: _JAVA10 <563622979@qq.com> Date: Fri, 14 Aug 2020 12:16:03 +0800 Subject: [PATCH 42/51] Make event great again --- .../productionline/event/PLEvent.java | 34 ++++++++++++------- .../tiles/tilewireless/IWireless.java | 2 +- .../tiles/tilewireless/TileWireless.java | 24 ++++++------- 3 files changed, 35 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java b/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java index ba59203..9db78f7 100644 --- a/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java +++ b/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java @@ -25,10 +25,9 @@ package com.mcgoodtime.productionline.event; import com.mcgoodtime.productionline.tiles.tilewireless.TileWireless; -import ibxm.Player; +import net.minecraft.block.ITileEntityProvider; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; @@ -48,26 +47,40 @@ public void onPlayerCrafting(PlayerEvent.ItemCraftedEvent event) { } */ + private TileWireless temp ; + @SubscribeEvent public void onBlockPlayerPlaced(BlockEvent.EntityPlaceEvent event) { TileEntity te = event.getWorld().getTileEntity(event.getPos()); - if(te instanceof TileWireless){ - TileWireless tw = (TileWireless) te; + if (te instanceof ITileEntityProvider && te instanceof TileWireless){ + TileWireless tw = (TileWireless) te; if(!(event.getWorld().isRemote)){ if(event.getEntity()instanceof EntityPlayer){ tw.setOwner(event.getEntity()); } } - - if(tw.inRange(tw.getPos()) && tw.sameOwner(event.getEntity())){ - tw.link(tw); - }else { - return; + if(temp!=null && temp.sameOwner(event.getEntity())){ + if(tw.inRange(temp.getPos())){ + tw.link(temp); + temp.link(tw); + for(TileWireless deciveInOtherTile : temp.getLinkedWirelessDecives()){ + if(tw.inRange(deciveInOtherTile.getPos())){ + tw.link(deciveInOtherTile); + deciveInOtherTile.link(tw); + } + } + } } + temp = tw; + }else { + return; } + } + + /* if (te.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null)) { canLogistics = true; @@ -85,7 +98,4 @@ public void onBlockPlayerPlaced(BlockEvent.EntityPlaceEvent event) { this.pos=te.getPos(); } */ - } - - } diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/IWireless.java b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/IWireless.java index 8bf6abf..af1f999 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/IWireless.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/IWireless.java @@ -9,6 +9,6 @@ public interface IWireless { void setOwner(Entity player); - void link(TileEntity tile); + void link(TileWireless tile); } diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWireless.java b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWireless.java index 22c0321..588a577 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWireless.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWireless.java @@ -5,12 +5,11 @@ import net.minecraft.util.ITickable; import net.minecraft.util.math.BlockPos; -import java.util.Map; -import java.util.UUID; +import java.util.List; public class TileWireless extends TileEntity implements IWireless, ITickable { - Map linkedWirelessDecives; + List linkedWirelessDecives; private final int X = this.pos.getX(); private final int Y = this.pos.getY(); @@ -34,7 +33,7 @@ public void setOwner(Entity player) { } public boolean sameOwner(Entity player){ - return player.equals(this.owner)?true:false; + return player.equals(this.owner) ? true : false; } public boolean inRange(BlockPos pos) { @@ -43,22 +42,23 @@ public boolean inRange(BlockPos pos) { boolean z_InRange = pos.getZ() <= Z+getRange(2) && pos.getZ()>=Z-getRange(2); boolean notSelf = pos.getX() != X && pos.getY() != Y && pos.getZ() != Z; - if(x_InRange && y_InRange && z_InRange && notSelf){ - return true; - } - return false; + return x_InRange && y_InRange && z_InRange && notSelf ? true : false; + } - private int getRange(int index){ + private int getRange(int xyz){ int[] range = {(17-1)/2,(9-1)/2,(17-1)/2}; - return range[index]; + return range[xyz]; } @Override - public void link(TileEntity tile) { - this.linkedWirelessDecives.put(UUID.randomUUID(), tile); + public void link(TileWireless tile) { + this.linkedWirelessDecives.add(tile); } + public List getLinkedWirelessDecives(){ + return linkedWirelessDecives; + } } From 99705fef1121b171c4cc3ecaa6dbe4bf139d9417 Mon Sep 17 00:00:00 2001 From: NightOwl Date: Fri, 14 Aug 2020 17:06:28 +0800 Subject: [PATCH 43/51] Disable MixinSubTileGenerating because it will cause the game crashed --- src/main/resources/mixins.productionline.core.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/mixins.productionline.core.json b/src/main/resources/mixins.productionline.core.json index a950cf7..7847c9d 100644 --- a/src/main/resources/mixins.productionline.core.json +++ b/src/main/resources/mixins.productionline.core.json @@ -4,7 +4,7 @@ "package": "com.mcgoodtime.productionline.mixin", "priority": 1111, "mixins": [ - "MixinSubTileGenerating" + "" ], "compatibilityLevel": "JAVA_8", "client": [], From 97d02b720b4e9d91c50ef7038f60520d8a65d10d Mon Sep 17 00:00:00 2001 From: NightOwl Date: Fri, 14 Aug 2020 17:45:31 +0800 Subject: [PATCH 44/51] Fix mixin config --- src/main/resources/mixins.productionline.core.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/resources/mixins.productionline.core.json b/src/main/resources/mixins.productionline.core.json index 7847c9d..edc0526 100644 --- a/src/main/resources/mixins.productionline.core.json +++ b/src/main/resources/mixins.productionline.core.json @@ -3,9 +3,7 @@ "minVersion": "0.8", "package": "com.mcgoodtime.productionline.mixin", "priority": 1111, - "mixins": [ - "" - ], + "mixins": [], "compatibilityLevel": "JAVA_8", "client": [], "server": [] From c7a6051c5185b95dfc099db23b68e2dba4bdb956 Mon Sep 17 00:00:00 2001 From: NightOwl Date: Fri, 14 Aug 2020 19:18:36 +0800 Subject: [PATCH 45/51] Register model for the flower of Osiris --- .../productionline/client/PLModelRegistry.java | 10 +++++++++- .../blockstates/the_flower_of_osiris.json | 15 ++++++++++++++- .../block/flower_func_the_flower_of_osiris.json | 6 ------ ...er_of_osiris.png => the_flower_of_osiris.png} | Bin 4 files changed, 23 insertions(+), 8 deletions(-) delete mode 100644 src/main/resources/assets/productionline/models/block/flower_func_the_flower_of_osiris.json rename src/main/resources/assets/productionline/textures/blocks/{flower_func_the_flower_of_osiris.png => the_flower_of_osiris.png} (100%) diff --git a/src/main/java/com/mcgoodtime/productionline/client/PLModelRegistry.java b/src/main/java/com/mcgoodtime/productionline/client/PLModelRegistry.java index 4f7266d..5c9f5c4 100644 --- a/src/main/java/com/mcgoodtime/productionline/client/PLModelRegistry.java +++ b/src/main/java/com/mcgoodtime/productionline/client/PLModelRegistry.java @@ -25,6 +25,7 @@ package com.mcgoodtime.productionline.client; +import com.mcgoodtime.productionline.core.ProductionLine; import com.mcgoodtime.productionline.init.PLBlocks; import com.mcgoodtime.productionline.init.PLItems; import com.mcgoodtime.productionline.items.ItemMulti; @@ -35,6 +36,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.ModelLoader; +import vazkii.botania.api.BotaniaAPIClient; import static com.mcgoodtime.productionline.core.ProductionLine.RESOURCE_DOMAIN; @@ -48,6 +50,13 @@ public class PLModelRegistry { public static void loadBlockModels() { registerBlockModel(PLBlocks.oreIridium); + if (ProductionLine.isBotaniaLoaded) + { + BotaniaAPIClient.registerSubtileModel(PLBlocks.flowerOfOsiris, new ModelResourceLocation( + new ResourceLocation(RESOURCE_DOMAIN, PLBlocks.flowerOfOsiris), "" + )); + } + // ModelLoader.setCustomStateMapper(PLBlocks.machine, new StateMap.Builder().withName(BlockMachine.PROPERTY_TYPE).build()); } @@ -115,7 +124,6 @@ private static ModelResourceLocation getItemModelResLoc(Item item, int meta) { // } ResourceLocation ret = new ResourceLocation(RESOURCE_DOMAIN, path + name); - ModelResourceLocation t = new ModelResourceLocation(ret, variant); return new ModelResourceLocation(ret, variant); } diff --git a/src/main/resources/assets/productionline/blockstates/the_flower_of_osiris.json b/src/main/resources/assets/productionline/blockstates/the_flower_of_osiris.json index 6f77e09..b0fefd5 100644 --- a/src/main/resources/assets/productionline/blockstates/the_flower_of_osiris.json +++ b/src/main/resources/assets/productionline/blockstates/the_flower_of_osiris.json @@ -1,5 +1,18 @@ { + "forge_marker": 1, "variants": { - "normal": { "model": "productionline:the_flower_of_osiris" } + "normal": [{ + "model": "botania:shapes/cross_tinted", + "textures": { + "cross": "productionline:blocks/the_flower_of_osiris" + } + }], + "inventory": [{ + "model": "builtin/generated", + "transform": "forge:default-item", + "textures": { + "layer0": "productionline:blocks/the_flower_of_osiris" + } + }] } } \ No newline at end of file diff --git a/src/main/resources/assets/productionline/models/block/flower_func_the_flower_of_osiris.json b/src/main/resources/assets/productionline/models/block/flower_func_the_flower_of_osiris.json deleted file mode 100644 index fe0bd86..0000000 --- a/src/main/resources/assets/productionline/models/block/flower_func_the_flower_of_osiris.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "productionline:blocks/flower_func_the_flower_of_osiris" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/productionline/textures/blocks/flower_func_the_flower_of_osiris.png b/src/main/resources/assets/productionline/textures/blocks/the_flower_of_osiris.png similarity index 100% rename from src/main/resources/assets/productionline/textures/blocks/flower_func_the_flower_of_osiris.png rename to src/main/resources/assets/productionline/textures/blocks/the_flower_of_osiris.png From 3fae9e97c985a153c7b0f9c3a592e0bc36203a3a Mon Sep 17 00:00:00 2001 From: NightOwl Date: Fri, 14 Aug 2020 20:11:08 +0800 Subject: [PATCH 46/51] Remove unnecessary field in PLRecipes and Fix gradle build by removing @Overwrite annotation in MixinSubTileGenerating --- .../productionline/init/PLRecipes.java | 18 ++++++------------ .../mixin/MixinSubTileGenerating.java | 3 +-- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/mcgoodtime/productionline/init/PLRecipes.java b/src/main/java/com/mcgoodtime/productionline/init/PLRecipes.java index 31d4dca..6544890 100644 --- a/src/main/java/com/mcgoodtime/productionline/init/PLRecipes.java +++ b/src/main/java/com/mcgoodtime/productionline/init/PLRecipes.java @@ -37,7 +37,6 @@ import vazkii.botania.common.item.block.ItemBlockSpecialFlower; import vazkii.botania.common.lib.LibOreDict; - /** * The class for loading all the recipes of GoodTime-Industrial. Migrated from old loaders. * @@ -49,14 +48,8 @@ public class PLRecipes { static RecipePetals flowerOfOsirisRecipe; - static final String GREEN = LibOreDict.PETAL[13], RUNESPRING = LibOreDict.RUNE[4], RUNEPRIDE = LibOreDict.RUNE[15]; - - static final ItemStack EYE_OF_THE_DESERT = PLItems.eyeOfTheDesert; - - static final ItemStack AQUAMARINE = PLItems.aquamarine; - /** - * Load recipes of GoodTime-Industrial. + * Load recipes of Production Line. */ public static void init() { //smelting registry @@ -64,12 +57,13 @@ public static void init() { for(ItemStack oreIridium:OreDictionary.getOres("oreIridium")){ GameRegistry.addSmelting(oreIridium, PLItems.ingotIridium, XP); } - if(ProductionLine.isBotaniaLoaded){ + if(ProductionLine.isBotaniaLoaded) { + String GREEN = LibOreDict.PETAL[13], RUNESPRING = LibOreDict.RUNE[4], RUNEPRIDE = LibOreDict.RUNE[15]; flowerOfOsirisRecipe = BotaniaAPI.registerPetalRecipe(ItemBlockSpecialFlower.ofType(PLBlocks.flowerOfOsiris), GREEN, GREEN, GREEN, RUNESPRING, - RUNEPRIDE, EYE_OF_THE_DESERT, EYE_OF_THE_DESERT, AQUAMARINE, - AQUAMARINE, AQUAMARINE, AQUAMARINE, AQUAMARINE, - AQUAMARINE, AQUAMARINE ); + RUNEPRIDE, PLItems.eyeOfTheDesert, PLItems.eyeOfTheDesert, PLItems.aquamarine, + PLItems.aquamarine, PLItems.aquamarine, PLItems.aquamarine, PLItems.aquamarine, + PLItems.aquamarine, PLItems.aquamarine ); } } diff --git a/src/main/java/com/mcgoodtime/productionline/mixin/MixinSubTileGenerating.java b/src/main/java/com/mcgoodtime/productionline/mixin/MixinSubTileGenerating.java index c2627f4..bfa07db 100644 --- a/src/main/java/com/mcgoodtime/productionline/mixin/MixinSubTileGenerating.java +++ b/src/main/java/com/mcgoodtime/productionline/mixin/MixinSubTileGenerating.java @@ -35,8 +35,7 @@ public void onUpdate() { this.canEnhance = false; } } - - @Overwrite + public void emptyManaIntoCollector() { if(linkedCollector != null && isValidBinding()) { IManaCollector collector = (IManaCollector) linkedCollector; From bb11662fd36e416141c1e0cf1604bcc96c4343de Mon Sep 17 00:00:00 2001 From: NightOwl Date: Fri, 14 Aug 2020 20:17:07 +0800 Subject: [PATCH 47/51] Call PLRecipes.init() during mod initialization --- .../java/com/mcgoodtime/productionline/core/ProductionLine.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java b/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java index fd93132..bb016ea 100644 --- a/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java +++ b/src/main/java/com/mcgoodtime/productionline/core/ProductionLine.java @@ -34,6 +34,7 @@ import com.mcgoodtime.productionline.init.PLBlocks; import com.mcgoodtime.productionline.init.PLItems; import com.mcgoodtime.productionline.init.PLOreDictionary; +import com.mcgoodtime.productionline.init.PLRecipes; import com.mcgoodtime.productionline.potion.PLPotion; import com.mcgoodtime.productionline.worldgen.PLWorldGen; import net.minecraft.block.Block; @@ -143,6 +144,7 @@ public void registerPotion(RegistryEvent event) { @Mod.EventHandler public void init(FMLInitializationEvent event) { PLOreDictionary.init(); + PLRecipes.init(); //register gui handler NetworkRegistry.INSTANCE.registerGuiHandler(INSTANCE, GuiHandler.getInstance()); //register ore gen bus. From 4b3c801532e6c25c3b03aee87da4d912b0cf6954 Mon Sep 17 00:00:00 2001 From: _JAVA10 <563622979@qq.com> Date: Fri, 14 Aug 2020 20:30:38 +0800 Subject: [PATCH 48/51] Finished event for block breaked --- .../productionline/event/PLEvent.java | 48 ++++++++++++------- .../tiles/tilewireless/IWireless.java | 2 + .../tiles/tilewireless/TileWireless.java | 6 +++ 3 files changed, 39 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java b/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java index 9db78f7..056872f 100644 --- a/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java +++ b/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java @@ -47,32 +47,30 @@ public void onPlayerCrafting(PlayerEvent.ItemCraftedEvent event) { } */ - private TileWireless temp ; + private TileWireless lastDecive ; @SubscribeEvent public void onBlockPlayerPlaced(BlockEvent.EntityPlaceEvent event) { - TileEntity te = event.getWorld().getTileEntity(event.getPos()); + TileEntity currentPlacedBlock = event.getWorld().getTileEntity(event.getPos()); - if (te instanceof ITileEntityProvider && te instanceof TileWireless){ - TileWireless tw = (TileWireless) te; - if(!(event.getWorld().isRemote)){ - if(event.getEntity()instanceof EntityPlayer){ - tw.setOwner(event.getEntity()); - } + if (event.getPlacedBlock().getBlock() instanceof ITileEntityProvider && currentPlacedBlock instanceof TileWireless){ + TileWireless currentDecive = (TileWireless) currentPlacedBlock; + if(!(event.getWorld().isRemote) && event.getEntity()instanceof EntityPlayer){ + currentDecive.setOwner(event.getEntity()); } - if(temp!=null && temp.sameOwner(event.getEntity())){ - if(tw.inRange(temp.getPos())){ - tw.link(temp); - temp.link(tw); - for(TileWireless deciveInOtherTile : temp.getLinkedWirelessDecives()){ - if(tw.inRange(deciveInOtherTile.getPos())){ - tw.link(deciveInOtherTile); - deciveInOtherTile.link(tw); + if(lastDecive!=null && lastDecive.sameOwner(event.getEntity())){ + if(currentDecive.inRange(lastDecive.getPos())){ + currentDecive.link(lastDecive); + lastDecive.link(currentDecive); + for(TileWireless deciveInOtherTiles : lastDecive.getLinkedWirelessDecives()){ + if(currentDecive.inRange(deciveInOtherTiles.getPos())){ + currentDecive.link(deciveInOtherTiles); + deciveInOtherTiles.link(currentDecive); } } } } - temp = tw; + lastDecive = currentDecive; }else { return; @@ -80,6 +78,22 @@ public void onBlockPlayerPlaced(BlockEvent.EntityPlaceEvent event) { } + @SubscribeEvent + public void onPlayerBreaked(BlockEvent.BreakEvent event){ + TileEntity curretBreakedBlock = event.getWorld().getTileEntity(event.getPos()); + + if(curretBreakedBlock != null && curretBreakedBlock.isInvalid()){ + if(event.getState().getBlock() instanceof ITileEntityProvider && curretBreakedBlock instanceof TileWireless){ + TileWireless curretDecive = (TileWireless) curretBreakedBlock; + for(TileWireless deciveInOtherTiles : curretDecive.getLinkedWirelessDecives()){ + deciveInOtherTiles.unlink(curretDecive); + } + } + }else { + return; + } + } + /* if (te.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null)) { diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/IWireless.java b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/IWireless.java index af1f999..fe70480 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/IWireless.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/IWireless.java @@ -11,4 +11,6 @@ public interface IWireless { void link(TileWireless tile); + void unlink(TileWireless tile); + } diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWireless.java b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWireless.java index 588a577..36f67e3 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWireless.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWireless.java @@ -56,6 +56,12 @@ public void link(TileWireless tile) { this.linkedWirelessDecives.add(tile); } + @Override + public void unlink(TileWireless tile) { + linkedWirelessDecives.remove(tile); + } + + public List getLinkedWirelessDecives(){ return linkedWirelessDecives; } From 2baa528448aaefc7044ce11632373f06b41ec94e Mon Sep 17 00:00:00 2001 From: _JAVA10 <563622979@qq.com> Date: Sat, 15 Aug 2020 09:24:28 +0800 Subject: [PATCH 49/51] Modify energy consumption formula --- .../tiles/SubTileFlowerOfOsiris.java | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/SubTileFlowerOfOsiris.java b/src/main/java/com/mcgoodtime/productionline/tiles/SubTileFlowerOfOsiris.java index 92852a2..17da9ef 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/SubTileFlowerOfOsiris.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/SubTileFlowerOfOsiris.java @@ -11,11 +11,16 @@ import vazkii.botania.common.block.BlockSpecialFlower; import vazkii.botania.common.block.tile.TileSpecialFlower; + /* + Consume the energy in the network to accelerate the surrounding flowers + Energy consume unfinished + */ + public class SubTileFlowerOfOsiris extends SubTileFunctional{ + private int consume; - private int growthLevel = 10; - private int growthData; + private int accelerateLevel = 10; private int range = 3; @@ -28,7 +33,7 @@ public void onUpdate() { SubTileGenerating tile = getManaGenerator(pos); if(tile!=null) { if(!hasMultiOsiris(tile)){ - enhance(tile); + accelerate(tile); } } } @@ -45,9 +50,9 @@ private SubTileGenerating getManaGenerator(BlockPos pos) { return null; } - private void enhance(SubTileGenerating stg){ - calculateGrowthData(growthLevel); - for(int i=0;i Date: Sat, 15 Aug 2020 13:23:17 +0800 Subject: [PATCH 50/51] Further improve the event --- .../productionline/event/PLEvent.java | 44 +++++++++++-------- .../tiles/tilewireless/IWireless.java | 2 + .../tiles/tilewireless/TileTributary.java | 4 ++ .../tiles/tilewireless/TileWaterSource.java | 10 +---- .../tiles/tilewireless/TileWireless.java | 16 +++++-- 5 files changed, 46 insertions(+), 30 deletions(-) create mode 100644 src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileTributary.java diff --git a/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java b/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java index 056872f..21052cd 100644 --- a/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java +++ b/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java @@ -24,7 +24,10 @@ */ package com.mcgoodtime.productionline.event; +import com.mcgoodtime.productionline.tiles.tilewireless.TileTributary; +import com.mcgoodtime.productionline.tiles.tilewireless.TileWaterSource; import com.mcgoodtime.productionline.tiles.tilewireless.TileWireless; +import gnu.trove.map.custom_hash.TObjectByteCustomHashMap; import net.minecraft.block.ITileEntityProvider; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; @@ -32,6 +35,9 @@ import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import java.util.ArrayList; +import java.util.List; + /** * Production Line event listener. * @@ -47,31 +53,31 @@ public void onPlayerCrafting(PlayerEvent.ItemCraftedEvent event) { } */ - private TileWireless lastDecive ; + List playerWaterSources; @SubscribeEvent public void onBlockPlayerPlaced(BlockEvent.EntityPlaceEvent event) { TileEntity currentPlacedBlock = event.getWorld().getTileEntity(event.getPos()); - if (event.getPlacedBlock().getBlock() instanceof ITileEntityProvider && currentPlacedBlock instanceof TileWireless){ - TileWireless currentDecive = (TileWireless) currentPlacedBlock; + if (event.getPlacedBlock().getBlock() instanceof ITileEntityProvider && currentPlacedBlock instanceof TileWireless){ + TileWireless currentDevice = (TileWireless) currentPlacedBlock; if(!(event.getWorld().isRemote) && event.getEntity()instanceof EntityPlayer){ - currentDecive.setOwner(event.getEntity()); + currentDevice.setOwner(event.getEntity()); + } + + if(currentDevice instanceof TileWaterSource){ + playerWaterSources.add((TileWaterSource) currentDevice); } - if(lastDecive!=null && lastDecive.sameOwner(event.getEntity())){ - if(currentDecive.inRange(lastDecive.getPos())){ - currentDecive.link(lastDecive); - lastDecive.link(currentDecive); - for(TileWireless deciveInOtherTiles : lastDecive.getLinkedWirelessDecives()){ - if(currentDecive.inRange(deciveInOtherTiles.getPos())){ - currentDecive.link(deciveInOtherTiles); - deciveInOtherTiles.link(currentDecive); + if(currentDevice instanceof TileTributary){ + if(!playerWaterSources.isEmpty()){ + for (TileWaterSource waterSource : playerWaterSources){ + if(waterSource.sameOwner(currentDevice.getOwner()) && waterSource.inRange(currentDevice.getPos())){ + currentDevice.link(waterSource); + waterSource.link(currentDevice); } } } } - lastDecive = currentDecive; - }else { return; } @@ -81,12 +87,14 @@ public void onBlockPlayerPlaced(BlockEvent.EntityPlaceEvent event) { @SubscribeEvent public void onPlayerBreaked(BlockEvent.BreakEvent event){ TileEntity curretBreakedBlock = event.getWorld().getTileEntity(event.getPos()); - if(curretBreakedBlock != null && curretBreakedBlock.isInvalid()){ if(event.getState().getBlock() instanceof ITileEntityProvider && curretBreakedBlock instanceof TileWireless){ - TileWireless curretDecive = (TileWireless) curretBreakedBlock; - for(TileWireless deciveInOtherTiles : curretDecive.getLinkedWirelessDecives()){ - deciveInOtherTiles.unlink(curretDecive); + TileWireless curretDevice = (TileWireless) curretBreakedBlock; + if(curretBreakedBlock instanceof TileWaterSource){ + playerWaterSources.remove(curretDevice); + } + for(TileWireless deviceInOtherTiles : curretDevice.getLinkedWirelessDecives()){ + deviceInOtherTiles.unlink(curretDevice); } } }else { diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/IWireless.java b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/IWireless.java index fe70480..9b2797f 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/IWireless.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/IWireless.java @@ -9,6 +9,8 @@ public interface IWireless { void setOwner(Entity player); + Entity getOwner(); + void link(TileWireless tile); void unlink(TileWireless tile); diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileTributary.java b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileTributary.java new file mode 100644 index 0000000..f6c03d4 --- /dev/null +++ b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileTributary.java @@ -0,0 +1,4 @@ +package com.mcgoodtime.productionline.tiles.tilewireless; + +public class TileTributary extends TileWireless{ +} diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWaterSource.java b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWaterSource.java index 860476c..ab26026 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWaterSource.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWaterSource.java @@ -1,13 +1,5 @@ package com.mcgoodtime.productionline.tiles.tilewireless; -import ibxm.Player; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ITickable; -import net.minecraft.util.math.BlockPos; - -import java.util.Map; -import java.util.UUID; - public class TileWaterSource extends TileWireless { @Override @@ -16,4 +8,6 @@ public void update() { } + + } diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWireless.java b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWireless.java index 36f67e3..d785a01 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWireless.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWireless.java @@ -6,6 +6,7 @@ import net.minecraft.util.math.BlockPos; import java.util.List; +import java.util.Objects; public class TileWireless extends TileEntity implements IWireless, ITickable { @@ -15,7 +16,7 @@ public class TileWireless extends TileEntity implements IWireless, ITickable { private final int Y = this.pos.getY(); private final int Z = this.pos.getZ(); - Entity owner; + private Entity owner; @Override public void update() { @@ -32,17 +33,24 @@ public void setOwner(Entity player) { this.owner = player; } + @Override + public Entity getOwner() { + return owner; + } + public boolean sameOwner(Entity player){ - return player.equals(this.owner) ? true : false; + return Objects.equals(owner.getUniqueID(),player.getUniqueID()); } public boolean inRange(BlockPos pos) { + + boolean isSelf = pos.getX() != X && pos.getY() != Y && pos.getZ() != Z; boolean x_InRange = pos.getX() <= X+getRange(0) && pos.getX()>=X-getRange(0); boolean y_InRange = pos.getY() <= Y+getRange(1) && pos.getY()>=Y-getRange(1); boolean z_InRange = pos.getZ() <= Z+getRange(2) && pos.getZ()>=Z-getRange(2); - boolean notSelf = pos.getX() != X && pos.getY() != Y && pos.getZ() != Z; - return x_InRange && y_InRange && z_InRange && notSelf ? true : false; + + return isSelf && x_InRange && y_InRange && z_InRange ? true : false; } From aaa554477a33d6f15ea6963e9b2b7af03e57cb1d Mon Sep 17 00:00:00 2001 From: _JAVA10 <563622979@qq.com> Date: Sun, 16 Aug 2020 20:25:00 +0800 Subject: [PATCH 51/51] List initialized --- src/main/java/com/mcgoodtime/productionline/event/PLEvent.java | 2 +- .../productionline/tiles/tilewireless/TileWireless.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java b/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java index 21052cd..cd14788 100644 --- a/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java +++ b/src/main/java/com/mcgoodtime/productionline/event/PLEvent.java @@ -53,7 +53,7 @@ public void onPlayerCrafting(PlayerEvent.ItemCraftedEvent event) { } */ - List playerWaterSources; + List playerWaterSources = new ArrayList<>(); @SubscribeEvent public void onBlockPlayerPlaced(BlockEvent.EntityPlaceEvent event) { diff --git a/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWireless.java b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWireless.java index d785a01..a32340d 100644 --- a/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWireless.java +++ b/src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWireless.java @@ -5,12 +5,13 @@ import net.minecraft.util.ITickable; import net.minecraft.util.math.BlockPos; +import java.util.ArrayList; import java.util.List; import java.util.Objects; public class TileWireless extends TileEntity implements IWireless, ITickable { - List linkedWirelessDecives; + List linkedWirelessDecives = new ArrayList<>(); private final int X = this.pos.getX(); private final int Y = this.pos.getY();