chore: SO MUCH PORTING!

This commit is contained in:
Michael Hillcox 2021-04-19 20:20:23 +01:00
parent cf608e9f16
commit 62b1859abb
45 changed files with 2572 additions and 2610 deletions

View file

@ -10,8 +10,8 @@
package de.ellpeck.actuallyadditions.api.booklet.internal; package de.ellpeck.actuallyadditions.api.booklet.internal;
import net.minecraft.client.gui.IGuiEventListener;
import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.widget.button.Button;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
@ -27,7 +27,7 @@ public abstract class GuiBookletBase extends Screen {
public abstract void renderSplitScaledAsciiString(String text, int x, int y, int color, boolean shadow, float scale, int length); public abstract void renderSplitScaledAsciiString(String text, int x, int y, int color, boolean shadow, float scale, int length);
public abstract List<Button> getButtonList(); public abstract List<IGuiEventListener> getButtonList();
public abstract int getGuiLeft(); public abstract int getGuiLeft();

View file

@ -17,7 +17,8 @@ public class ItemTagsGenerator extends ItemTagsProvider {
@Override @Override
protected void registerTags() { protected void registerTags() {
this.getOrCreateBuilder(ActuallyTags.Items.COFFEE_BEANS).add(ActuallyItems.itemCoffeeBean); this.getOrCreateBuilder(ActuallyTags.Items.COFFEE_BEANS)
.add(ActuallyItems.itemCoffeeBean.get());
// getOrCreateBuilder(ActuallyTags.Items.DRILLS).add( // getOrCreateBuilder(ActuallyTags.Items.DRILLS).add(
// ActuallyItems.DRILL_MAIN.get(), // ActuallyItems.DRILL_MAIN.get(),
// ActuallyItems.DRILL_BLACK.get(), ActuallyItems.DRILL_BLACK.get(), ActuallyItems.DRILL_BLUE.get(), ActuallyItems.DRILL_BROWN.get(), // ActuallyItems.DRILL_BLACK.get(), ActuallyItems.DRILL_BLACK.get(), ActuallyItems.DRILL_BLUE.get(), ActuallyItems.DRILL_BROWN.get(),

View file

@ -10,6 +10,7 @@
package de.ellpeck.actuallyadditions.mod.booklet.button; package de.ellpeck.actuallyadditions.mod.booklet.button;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.platform.GlStateManager;
import de.ellpeck.actuallyadditions.api.booklet.IBookletChapter; import de.ellpeck.actuallyadditions.api.booklet.IBookletChapter;
import de.ellpeck.actuallyadditions.api.booklet.IBookletPage; import de.ellpeck.actuallyadditions.api.booklet.IBookletPage;
@ -24,6 +25,7 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.widget.button.Button; import net.minecraft.client.gui.widget.button.Button;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.text.StringTextComponent;
import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
@ -31,6 +33,7 @@ import net.minecraftforge.fml.client.gui.GuiUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
public class BookmarkButton extends Button { public class BookmarkButton extends Button {
@ -38,45 +41,45 @@ public class BookmarkButton extends Button {
private final GuiBooklet booklet; private final GuiBooklet booklet;
public IBookletPage assignedPage; public IBookletPage assignedPage;
public BookmarkButton(int id, int x, int y, GuiBooklet booklet) { public BookmarkButton(int x, int y, GuiBooklet booklet) {
super(id, x, y, 16, 16, ""); super(x, y, 16, 16, StringTextComponent.EMPTY, btn -> {
this.booklet = booklet; BookmarkButton button = (BookmarkButton) btn;
} if (button.assignedPage != null) {
public void onPressed() {
if (this.assignedPage != null) {
if (Screen.hasShiftDown()) { if (Screen.hasShiftDown()) {
this.assignedPage = null; button.assignedPage = null;
} else if (!(this.booklet instanceof GuiPage) || ((GuiPage) this.booklet).pages[0] != this.assignedPage) { } else if (!(button.booklet instanceof GuiPage) || ((GuiPage) button.booklet).pages[0] != button.assignedPage) {
GuiPage gui = BookletUtils.createPageGui(this.booklet.previousScreen, this.booklet, this.assignedPage); GuiPage gui = BookletUtils.createPageGui(button.booklet.previousScreen, button.booklet, button.assignedPage);
Minecraft.getInstance().displayGuiScreen(gui); Minecraft.getInstance().displayGuiScreen(gui);
} }
} else { } else {
if (this.booklet instanceof GuiPage) { if (button.booklet instanceof GuiPage) {
this.assignedPage = ((GuiPage) this.booklet).pages[0]; button.assignedPage = ((GuiPage) button.booklet).pages[0];
} }
} }
});
this.booklet = booklet;
} }
@Override @Override
public void drawButton(Minecraft minecraft, int x, int y, float f) { public void render(MatrixStack matrices, int mouseX, int mouseY, float partialTicks) {
if (this.visible) { if (this.visible) {
minecraft.getTextureManager().bindTexture(GuiBooklet.RES_LOC_GADGETS); Minecraft.getInstance().getTextureManager().bindTexture(GuiBooklet.RES_LOC_GADGETS);
GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
this.isHovered = x >= this.x && y >= this.y && x < this.x + this.width && y < this.y + this.height; this.isHovered = mouseX >= this.x && mouseY >= this.y && this.x < this.x + this.width && this.y < this.y + this.height;
int k = this.getHoverState(this.hovered); int offset = this.isHovered
if (k == 0) { ? 1
k = 1; : 0;
}
GlStateManager.enableBlend(); GlStateManager.enableBlend();
GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0); GlStateManager.blendFuncSeparate(770, 771, 1, 0);
GlStateManager.blendFunc(770, 771); GlStateManager.blendFunc(770, 771);
int renderHeight = 25; int renderHeight = 25;
this.blit(matrices, this.x, this.y, 224 + (this.assignedPage == null this.blit(matrices, this.x, this.y, 224 + (this.assignedPage == null
? 0 ? 0
: 16), 14 - renderHeight + k * renderHeight, this.width, renderHeight); : 16), 14 - renderHeight + offset * renderHeight, this.width, renderHeight);
this.mouseDragged(minecraft, x, y);
// TODO: FIX THIS
// this.mouseDragged(minecraft, mouseX, mouseY);
if (this.assignedPage != null) { if (this.assignedPage != null) {
ItemStack display = this.assignedPage.getChapter().getDisplayItemStack(); ItemStack display = this.assignedPage.getChapter().getDisplayItemStack();
@ -89,8 +92,8 @@ public class BookmarkButton extends Button {
} }
} }
public void drawHover(int mouseX, int mouseY) { public void drawHover(MatrixStack stack, int mouseX, int mouseY) {
if (this.isMouseOver()) { if (this.isMouseOver(mouseX, mouseY)) {
List<String> list = new ArrayList<>(); List<String> list = new ArrayList<>();
if (this.assignedPage != null) { if (this.assignedPage != null) {
@ -110,7 +113,7 @@ public class BookmarkButton extends Button {
} }
Minecraft mc = Minecraft.getInstance(); Minecraft mc = Minecraft.getInstance();
GuiUtils.drawHoveringText(list, mouseX, mouseY, mc.displayWidth, mc.displayHeight, -1, mc.fontRenderer); GuiUtils.drawHoveringText(stack, list.stream().map(StringTextComponent::new).collect(Collectors.toList()), mouseX, mouseY, mc.currentScreen.width, mc.currentScreen.height, -1, mc.fontRenderer);
} }
} }
} }

View file

@ -20,9 +20,8 @@ public class TrialsButton extends TexturedButton {
private final boolean isTrials; private final boolean isTrials;
public TrialsButton(GuiBooklet gui) { public TrialsButton(GuiBooklet gui, IPressable action) {
super(GuiBooklet.RES_LOC_GADGETS, gui.getGuiLeft() + gui.getSizeX(), gui.getGuiTop() + 10, 0, 204, 52, 16, btn -> { super(GuiBooklet.RES_LOC_GADGETS, gui.getGuiLeft() + gui.getSizeX(), gui.getGuiTop() + 10, 0, 204, 52, 16, action);
});
this.isTrials = gui.areTrialsOpened(); this.isTrials = gui.areTrialsOpened();
this.active = !this.isTrials; this.active = !this.isTrials;
} }

View file

@ -10,6 +10,7 @@
package de.ellpeck.actuallyadditions.mod.booklet.gui; package de.ellpeck.actuallyadditions.mod.booklet.gui;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.platform.GlStateManager;
import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI; import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI;
import de.ellpeck.actuallyadditions.api.booklet.internal.GuiBookletBase; import de.ellpeck.actuallyadditions.api.booklet.internal.GuiBookletBase;
@ -23,20 +24,19 @@ import de.ellpeck.actuallyadditions.mod.inventory.gui.TexturedButton;
import de.ellpeck.actuallyadditions.mod.network.PacketHandlerHelper; import de.ellpeck.actuallyadditions.mod.network.PacketHandlerHelper;
import de.ellpeck.actuallyadditions.mod.util.AssetUtil; import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
import de.ellpeck.actuallyadditions.mod.util.StringUtil; import de.ellpeck.actuallyadditions.mod.util.StringUtil;
import net.java.games.input.Keyboard; import net.minecraft.client.gui.IGuiEventListener;
import net.java.games.input.Mouse;
import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.widget.TextFieldWidget; import net.minecraft.client.gui.widget.TextFieldWidget;
import net.minecraft.client.gui.widget.button.Button; import net.minecraft.client.gui.widget.button.Button;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.StringTextComponent;
import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
import org.apache.commons.lang3.ArrayUtils;
import java.io.IOException;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
public abstract class GuiBooklet extends GuiBookletBase { public abstract class GuiBooklet extends GuiBookletBase {
@ -63,6 +63,8 @@ public abstract class GuiBooklet extends GuiBookletBase {
private float largeFontSize; private float largeFontSize;
public GuiBooklet(Screen previousScreen, GuiBookletBase parentPage) { public GuiBooklet(Screen previousScreen, GuiBookletBase parentPage) {
super(StringTextComponent.EMPTY);
this.previousScreen = previousScreen; this.previousScreen = previousScreen;
this.parentPage = parentPage; this.parentPage = parentPage;
@ -96,37 +98,35 @@ public abstract class GuiBooklet extends GuiBookletBase {
if (this.hasPageLeftButton()) { if (this.hasPageLeftButton()) {
List<String> hoverText = Arrays.asList(TextFormatting.GOLD + "Previous Page", TextFormatting.ITALIC + "Or scroll up"); List<String> hoverText = Arrays.asList(TextFormatting.GOLD + "Previous Page", TextFormatting.ITALIC + "Or scroll up");
this.buttonLeft = new TexturedButton(RES_LOC_GADGETS, this.guiLeft - 12, this.guiTop + this.ySize - 8, 18, 54, 18, 10, hoverText, btn -> { this.buttonLeft = new TexturedButton(RES_LOC_GADGETS, this.guiLeft - 12, this.guiTop + this.ySize - 8, 18, 54, 18, 10, hoverText, btn -> this.onPageLeftButtonPressed());
});
this.addButton(this.buttonLeft); this.addButton(this.buttonLeft);
} }
if (this.hasPageRightButton()) { if (this.hasPageRightButton()) {
List<String> hoverText = Arrays.asList(TextFormatting.GOLD + "Next Page", TextFormatting.ITALIC + "Or scroll down"); List<String> hoverText = Arrays.asList(TextFormatting.GOLD + "Next Page", TextFormatting.ITALIC + "Or scroll down");
this.buttonRight = new TexturedButton(RES_LOC_GADGETS, this.guiLeft + this.xSize - 6, this.guiTop + this.ySize - 8, 0, 54, 18, 10, hoverText, btn -> { this.buttonRight = new TexturedButton(RES_LOC_GADGETS, this.guiLeft + this.xSize - 6, this.guiTop + this.ySize - 8, 0, 54, 18, 10, hoverText, btn -> this.onPageRightButtonPressed());
});
this.addButton(this.buttonRight); this.addButton(this.buttonRight);
} }
if (this.hasBackButton()) { if (this.hasBackButton()) {
List<String> hoverText = Arrays.asList(TextFormatting.GOLD + "Go Back", TextFormatting.ITALIC + "Or right-click", TextFormatting.ITALIC.toString() + TextFormatting.GRAY + "Hold Shift for Main Page"); List<String> hoverText = Arrays.asList(TextFormatting.GOLD + "Go Back", TextFormatting.ITALIC + "Or right-click", TextFormatting.ITALIC.toString() + TextFormatting.GRAY + "Hold Shift for Main Page");
this.buttonBack = new TexturedButton(RES_LOC_GADGETS, this.guiLeft - 15, this.guiTop - 3, 36, 54, 18, 10, hoverText, btn -> { this.buttonBack = new TexturedButton(RES_LOC_GADGETS, this.guiLeft - 15, this.guiTop - 3, 36, 54, 18, 10, hoverText, btn -> this.onBackButtonPressed());
});
this.addButton(this.buttonBack); this.addButton(this.buttonBack);
} }
if (this.hasSearchBar()) { if (this.hasSearchBar()) {
this.searchField = new TextFieldWidget(-420, this.fontRenderer, this.guiLeft + this.xSize + 2, this.guiTop + this.ySize - 40 + 2, 64, 12); this.searchField = new TextFieldWidget(this.font, this.guiLeft + this.xSize + 2, this.guiTop + this.ySize - 40 + 2, 64, 12, StringTextComponent.EMPTY);
this.searchField.setMaxStringLength(50); this.searchField.setMaxStringLength(50);
this.searchField.setEnableBackgroundDrawing(false); this.searchField.setEnableBackgroundDrawing(false);
this.children.add(this.searchField);
} }
if (this.hasBookmarkButtons()) { if (this.hasBookmarkButtons()) {
PlayerSave data = PlayerData.getDataFromPlayer(this.mc.player); PlayerSave data = PlayerData.getDataFromPlayer(this.getMinecraft().player);
int xStart = this.guiLeft + this.xSize / 2 - 16 * this.bookmarkButtons.length / 2; int xStart = this.guiLeft + this.xSize / 2 - 16 * this.bookmarkButtons.length / 2;
for (int i = 0; i < this.bookmarkButtons.length; i++) { for (int i = 0; i < this.bookmarkButtons.length; i++) {
this.bookmarkButtons[i] = new BookmarkButton(1337 + i, xStart + i * 16, this.guiTop + this.ySize, this); this.bookmarkButtons[i] = new BookmarkButton(xStart + i * 16, this.guiTop + this.ySize, this);
this.addButton(this.bookmarkButtons[i]); this.addButton(this.bookmarkButtons[i]);
if (data.bookmarks[i] != null) { if (data.bookmarks[i] != null) {
@ -135,21 +135,21 @@ public abstract class GuiBooklet extends GuiBookletBase {
} }
} }
this.buttonTrials = new TrialsButton(this); this.buttonTrials = new TrialsButton(this, btn -> this.getMinecraft().displayGuiScreen(new GuiEntry(this.previousScreen, this, ActuallyAdditionsAPI.entryTrials, 0, "", false)));
this.addButton(this.buttonTrials); this.addButton(this.buttonTrials);
} }
@Override @Override
public void onGuiClosed() { public void onClose() {
super.onGuiClosed(); super.onClose();
//Don't cache the parent GUI, otherwise it opens again when you close the cached book! //Don't cache the parent GUI, otherwise it opens again when you close the cached book!
this.previousScreen = null; this.previousScreen = null;
if (this.mc.player == null) { if (this.getMinecraft().player == null) {
return; return;
} }
PlayerSave data = PlayerData.getDataFromPlayer(this.mc.player); PlayerSave data = PlayerData.getDataFromPlayer(this.getMinecraft().player);
data.lastOpenBooklet = this; data.lastOpenBooklet = this;
boolean change = false; boolean change = false;
@ -166,85 +166,91 @@ public abstract class GuiBooklet extends GuiBookletBase {
} }
@Override @Override
public void drawScreen(int mouseX, int mouseY, float partialTicks) { public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
this.drawScreenPre(mouseX, mouseY, partialTicks); this.drawScreenPre(matrixStack, mouseX, mouseY, partialTicks);
super.drawScreen(mouseX, mouseY, partialTicks); super.render(matrixStack, mouseX, mouseY, partialTicks);
this.drawScreenPost(mouseX, mouseY, partialTicks); this.drawScreenPost(matrixStack, mouseX, mouseY, partialTicks);
} }
public void drawScreenPre(int mouseX, int mouseY, float partialTicks) { public void drawScreenPre(MatrixStack matrices, int mouseX, int mouseY, float partialTicks) {
GlStateManager.color(1F, 1F, 1F); GlStateManager.color4f(1F, 1F, 1F, 1F);
this.getMinecraft().getTextureManager().bindTexture(RES_LOC_GUI); this.getMinecraft().getTextureManager().bindTexture(RES_LOC_GUI);
drawModalRectWithCustomSizedTexture(this.guiLeft, this.guiTop, 0, 0, this.xSize, this.ySize, 512, 512); blit(matrices, this.guiLeft, this.guiTop, 0, 0, this.xSize, this.ySize, 512, 512);
if (this.hasSearchBar()) { if (this.hasSearchBar()) {
this.getMinecraft().getTextureManager().bindTexture(RES_LOC_GADGETS); this.getMinecraft().getTextureManager().bindTexture(RES_LOC_GADGETS);
this.blit(matrices, this.guiLeft + this.xSize, this.guiTop + this.ySize - 40, 188, 0, 68, 14); this.blit(matrices, this.guiLeft + this.xSize, this.guiTop + this.ySize - 40, 188, 0, 68, 14);
boolean unicodeBefore = this.fontRenderer.getUnicodeFlag(); // boolean unicodeBefore = this.font.getUnicodeFlag();
this.fontRenderer.setUnicodeFlag(true); // this.font.setUnicodeFlag(true);
if (!this.searchField.isFocused() && (this.searchField.getText() == null || this.searchField.getText().isEmpty())) { if (!this.searchField.isFocused() && (this.searchField.getText() == null || this.searchField.getText().isEmpty())) {
this.fontRenderer.drawString(TextFormatting.ITALIC + StringUtil.localize("info." + ActuallyAdditions.MODID + ".booklet.searchField"), this.guiLeft + this.xSize + 2, this.guiTop + this.ySize - 40 + 2, 0xFFFFFF, false); this.font.drawString(matrices, TextFormatting.ITALIC + StringUtil.localize("info." + ActuallyAdditions.MODID + ".booklet.searchField"), this.guiLeft + this.xSize + 2, this.guiTop + this.ySize - 40 + 2, 0xFFFFFF);
} }
this.searchField.drawTextBox(); this.searchField.render(matrices, mouseX, mouseY, partialTicks);
this.fontRenderer.setUnicodeFlag(unicodeBefore); // this.font.setUnicodeFlag(unicodeBefore);
} }
} }
public void drawScreenPost(int mouseX, int mouseY, float partialTicks) { public void drawScreenPost(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
for (GuiButton button : this.buttonList) { for (IGuiEventListener button : this.children) {
if (button instanceof BookmarkButton) { if (button instanceof BookmarkButton) {
((BookmarkButton) button).drawHover(mouseX, mouseY); ((BookmarkButton) button).drawHover(matrixStack, mouseX, mouseY);
} else if (button instanceof TexturedButton) { } else if (button instanceof TexturedButton) {
((TexturedButton) button).drawHover(mouseX, mouseY); ((TexturedButton) button).drawHover(matrixStack, mouseX, mouseY);
} }
} }
} }
@Override @Override
protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException { public boolean mouseClicked(double mouseX, double mouseY, int button) {
super.mouseClicked(mouseX, mouseY, mouseButton); return super.mouseClicked(mouseX, mouseY, button);
if (this.hasSearchBar()) {
this.searchField.mouseClicked(mouseX, mouseY, mouseButton);
}
if (mouseButton == 1 && this.hasBackButton()) {
this.onBackButtonPressed();
}
} }
// TODO: Ensure replacement works
@Override @Override
public void handleMouseInput() throws IOException { public boolean mouseScrolled(double mouseX, double mouseY, double delta) {
int wheel = Mouse.getEventDWheel(); if (delta < 0) {
if (wheel != 0) {
if (wheel < 0) {
if (this.hasPageRightButton()) { if (this.hasPageRightButton()) {
this.onPageRightButtonPressed(); this.onPageRightButtonPressed();
} }
} else if (wheel > 0) { } else if (delta > 0) {
if (this.hasPageLeftButton()) { if (this.hasPageLeftButton()) {
this.onPageLeftButtonPressed(); this.onPageLeftButtonPressed();
} }
} }
return super.mouseScrolled(mouseX, mouseY, delta);
} }
super.handleMouseInput();
} // @Override
// public void handleMouseInput() throws IOException {
// int wheel = Mouse.getEventDWheel();
// if (wheel != 0) {
// if (wheel < 0) {
// if (this.hasPageRightButton()) {
// this.onPageRightButtonPressed();
// }
// } else if (wheel > 0) {
// if (this.hasPageLeftButton()) {
// this.onPageLeftButtonPressed();
// }
// }
// }
// super.handleMouseInput();
// }
@Override @Override
public void updateScreen() { public void tick() {
super.updateScreen();
if (this.hasSearchBar()) { if (this.hasSearchBar()) {
this.searchField.updateCursorCounter(); this.searchField.tick();
} }
} }
@Override @Override
public boolean doesGuiPauseGame() { public boolean isPauseScreen() {
return false; return false;
} }
@ -273,7 +279,7 @@ public abstract class GuiBooklet extends GuiBookletBase {
} }
public void onBackButtonPressed() { public void onBackButtonPressed() {
this.mc.displayGuiScreen(new GuiMainPage(this.previousScreen)); this.getMinecraft().displayGuiScreen(new GuiMainPage(this.previousScreen));
} }
public boolean hasSearchBar() { public boolean hasSearchBar() {
@ -299,64 +305,46 @@ public abstract class GuiBooklet extends GuiBookletBase {
return this.largeFontSize; return this.largeFontSize;
} }
// TODO: Check if not being used
public void onSearchBarChanged(String searchBarText) { public void onSearchBarChanged(String searchBarText) {
GuiBookletBase parent = !(this instanceof GuiEntry) GuiBookletBase parent = !(this instanceof GuiEntry)
? this ? this
: this.parentPage; : this.parentPage;
this.mc.displayGuiScreen(new GuiEntry(this.previousScreen, parent, ActuallyAdditionsAPI.entryAllAndSearch, 0, searchBarText, true)); this.getMinecraft().displayGuiScreen(new GuiEntry(this.previousScreen, parent, ActuallyAdditionsAPI.entryAllAndSearch, 0, searchBarText, true));
} }
@Override // TODO: ensure typing still works
protected void actionPerformed(GuiButton button) throws IOException {
if (this.hasPageLeftButton() && button == this.buttonLeft) {
this.onPageLeftButtonPressed();
} else if (this.hasPageRightButton() && button == this.buttonRight) {
this.onPageRightButtonPressed();
} else if (this.hasBackButton() && button == this.buttonBack) {
this.onBackButtonPressed();
}
if (button == this.buttonTrials) {
this.mc.displayGuiScreen(new GuiEntry(this.previousScreen, this, ActuallyAdditionsAPI.entryTrials, 0, "", false));
} else if (this.hasBookmarkButtons() && button instanceof BookmarkButton) {
int index = ArrayUtils.indexOf(this.bookmarkButtons, button);
if (index >= 0) {
this.bookmarkButtons[index].onPressed();
}
} else {
super.actionPerformed(button);
}
}
@Override // @Override
protected void keyTyped(char typedChar, int key) throws IOException { // protected void keyTyped(char typedChar, int key) throws IOException {
if (key == Keyboard.KEY_ESCAPE || key == this.mc.gameSettings.keyBindInventory.getKeyCode() && (!this.hasSearchBar() || !this.searchField.isFocused())) { // if (key == Keyboard.KEY_ESCAPE || key == this.mc.gameSettings.keyBindInventory.getKeyCode() && (!this.hasSearchBar() || !this.searchField.isFocused())) {
this.mc.displayGuiScreen(this.previousScreen); // this.mc.displayGuiScreen(this.previousScreen);
} else if (this.hasSearchBar() & this.searchField.isFocused()) { // } else if (this.hasSearchBar() & this.searchField.isFocused()) {
String lastText = this.searchField.getText(); // String lastText = this.searchField.getText();
//
this.searchField.textboxKeyTyped(typedChar, key); // this.searchField.textboxKeyTyped(typedChar, key);
//
if (!lastText.equals(this.searchField.getText())) { // if (!lastText.equals(this.searchField.getText())) {
this.onSearchBarChanged(this.searchField.getText()); // this.onSearchBarChanged(this.searchField.getText());
} // }
} else { // } else {
super.keyTyped(typedChar, key); // super.keyTyped(typedChar, key);
} // }
} // }
@Override @Override
public void renderScaledAsciiString(String text, int x, int y, int color, boolean shadow, float scale) { public void renderScaledAsciiString(String text, int x, int y, int color, boolean shadow, float scale) {
StringUtil.renderScaledAsciiString(this.fontRenderer, text, x, y, color, shadow, scale); StringUtil.renderScaledAsciiString(this.font, text, x, y, color, shadow, scale);
} }
@Override @Override
public void renderSplitScaledAsciiString(String text, int x, int y, int color, boolean shadow, float scale, int length) { public void renderSplitScaledAsciiString(String text, int x, int y, int color, boolean shadow, float scale, int length) {
StringUtil.renderSplitScaledAsciiString(this.fontRenderer, text, x, y, color, shadow, scale, length); StringUtil.renderSplitScaledAsciiString(this.font, text, x, y, color, shadow, scale, length);
} }
@Override @Override
public List<GuiButton> getButtonList() { public List<IGuiEventListener> getButtonList() {
return this.buttonList; return this.children.stream().filter(e -> e instanceof Button).collect(Collectors.toList());
} }
@Override @Override

View file

@ -15,9 +15,9 @@ import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues;
import de.ellpeck.actuallyadditions.mod.config.values.ConfigIntListValues; import de.ellpeck.actuallyadditions.mod.config.values.ConfigIntListValues;
import de.ellpeck.actuallyadditions.mod.config.values.ConfigIntValues; import de.ellpeck.actuallyadditions.mod.config.values.ConfigIntValues;
import de.ellpeck.actuallyadditions.mod.config.values.ConfigStringListValues; import de.ellpeck.actuallyadditions.mod.config.values.ConfigStringListValues;
import net.minecraft.init.Blocks; import net.minecraft.block.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.Items;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.config.Configuration; import net.minecraftforge.common.config.Configuration;

View file

@ -10,12 +10,9 @@
package de.ellpeck.actuallyadditions.mod.crafting; package de.ellpeck.actuallyadditions.mod.crafting;
import net.minecraft.item.crafting.IRecipe;
import net.minecraftforge.registries.IForgeRegistryEntry;
// TODO: [port] MOVE TO DATA_GENERATOR // TODO: [port] MOVE TO DATA_GENERATOR
@Deprecated @Deprecated
public class RecipeBioMash extends IForgeRegistryEntry.Impl<IRecipe> implements IRecipe { public class RecipeBioMash { //extends IForgeRegistryEntry.Impl<IRecipe> implements IRecipe {
// //
// public RecipeBioMash(ResourceLocation location) { // public RecipeBioMash(ResourceLocation location) {
// RecipeHelper.addRecipe(location.getPath(), this); // RecipeHelper.addRecipe(location.getPath(), this);

View file

@ -10,11 +10,9 @@
package de.ellpeck.actuallyadditions.mod.crafting; package de.ellpeck.actuallyadditions.mod.crafting;
import net.minecraftforge.oredict.ShapedOreRecipe;
// TODO: [port] MOVE TO DATA_GENERATOR // TODO: [port] MOVE TO DATA_GENERATOR
@Deprecated @Deprecated
public class RecipeKeepDataShaped extends ShapedOreRecipe { public class RecipeKeepDataShaped { //extends ShapedOreRecipe {
// //
// private final ItemStack nbtCopyStack; // private final ItemStack nbtCopyStack;
// //

View file

@ -10,11 +10,9 @@
package de.ellpeck.actuallyadditions.mod.crafting; package de.ellpeck.actuallyadditions.mod.crafting;
import net.minecraftforge.oredict.ShapelessOreRecipe;
// TODO: [port] MOVE TO DATA_GENERATOR // TODO: [port] MOVE TO DATA_GENERATOR
@Deprecated @Deprecated
public class RecipeKeepDataShapeless extends ShapelessOreRecipe { public class RecipeKeepDataShapeless {// extends ShapelessOreRecipe {
// //
// private final ItemStack nbtCopyStack; // private final ItemStack nbtCopyStack;
// //

View file

@ -10,12 +10,9 @@
package de.ellpeck.actuallyadditions.mod.crafting; package de.ellpeck.actuallyadditions.mod.crafting;
import net.minecraft.item.crafting.IRecipe;
import net.minecraftforge.registries.IForgeRegistryEntry;
// TODO: [port] MOVE TO DATA_GENERATOR // TODO: [port] MOVE TO DATA_GENERATOR
@Deprecated @Deprecated
public class RecipePotionRingCharging extends IForgeRegistryEntry.Impl<IRecipe> implements IRecipe { public class RecipePotionRingCharging { //extends IForgeRegistryEntry.Impl<IRecipe> implements IRecipe {
// //
// public RecipePotionRingCharging(ResourceLocation location) { // public RecipePotionRingCharging(ResourceLocation location) {
// RecipeHelper.addRecipe(location.getPath(), this); // RecipeHelper.addRecipe(location.getPath(), this);

View file

@ -1,177 +1,177 @@
/* ///*
* This file ("OreGen.java") is part of the Actually Additions mod for Minecraft. // * This file ("OreGen.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed // * It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at // * under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense // * http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions // * View the source code at https://github.com/Ellpeck/ActuallyAdditions
* // *
* © 2015-2017 Ellpeck // * © 2015-2017 Ellpeck
*/ // */
//
package de.ellpeck.actuallyadditions.mod.gen; //package de.ellpeck.actuallyadditions.mod.gen;
//
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; //import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks; //import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks;
import de.ellpeck.actuallyadditions.mod.blocks.BlockMisc; //import de.ellpeck.actuallyadditions.mod.blocks.BlockMisc;
import de.ellpeck.actuallyadditions.mod.blocks.BlockWildPlant; //import de.ellpeck.actuallyadditions.mod.blocks.BlockWildPlant;
import de.ellpeck.actuallyadditions.mod.blocks.metalists.TheMiscBlocks; //import de.ellpeck.actuallyadditions.mod.blocks.metalists.TheMiscBlocks;
import de.ellpeck.actuallyadditions.mod.blocks.metalists.TheWildPlants; //import de.ellpeck.actuallyadditions.mod.blocks.metalists.TheWildPlants;
import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues; //import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues;
import de.ellpeck.actuallyadditions.mod.config.values.ConfigIntListValues; //import de.ellpeck.actuallyadditions.mod.config.values.ConfigIntListValues;
import de.ellpeck.actuallyadditions.mod.config.values.ConfigIntValues; //import de.ellpeck.actuallyadditions.mod.config.values.ConfigIntValues;
import de.ellpeck.actuallyadditions.mod.util.WorldUtil; //import de.ellpeck.actuallyadditions.mod.util.WorldUtil;
import net.minecraft.block.Block; //import net.minecraft.block.Block;
import net.minecraft.block.BlockHorizontal; //import net.minecraft.block.BlockHorizontal;
import net.minecraft.block.BlockState; //import net.minecraft.block.BlockState;
import net.minecraft.block.material.Material; //import net.minecraft.block.material.Material;
import net.minecraft.block.state.pattern.BlockMatcher; //import net.minecraft.block.state.pattern.BlockMatcher;
import net.minecraft.init.Blocks; //import net.minecraft.init.Blocks;
import net.minecraft.util.Direction; //import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos; //import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper; //import net.minecraft.util.math.MathHelper;
import net.minecraft.world.World; //import net.minecraft.world.World;
import net.minecraft.world.WorldType; //import net.minecraft.world.WorldType;
import net.minecraft.world.biome.BiomeOcean; //import net.minecraft.world.biome.BiomeOcean;
import net.minecraft.world.chunk.IChunkProvider; //import net.minecraft.world.chunk.IChunkProvider;
import net.minecraft.world.gen.IChunkGenerator; //import net.minecraft.world.gen.IChunkGenerator;
import net.minecraft.world.gen.feature.WorldGenMinable; //import net.minecraft.world.gen.feature.WorldGenMinable;
import net.minecraft.world.gen.structure.StructureBoundingBox; //import net.minecraft.world.gen.structure.StructureBoundingBox;
import net.minecraftforge.event.terraingen.DecorateBiomeEvent; //import net.minecraftforge.event.terraingen.DecorateBiomeEvent;
import net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType; //import net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType;
import net.minecraftforge.fml.common.IWorldGenerator; //import net.minecraftforge.fml.common.IWorldGenerator;
import net.minecraftforge.fml.common.eventhandler.Event; //import net.minecraftforge.fml.common.eventhandler.Event;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; //import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import org.apache.commons.lang3.ArrayUtils; //import org.apache.commons.lang3.ArrayUtils;
//
import java.util.ArrayList; //import java.util.ArrayList;
import java.util.Random; //import java.util.Random;
//
public class AAWorldGen implements IWorldGenerator { //public class AAWorldGen implements IWorldGenerator {
//
public static final int QUARTZ_MIN = 0; // public static final int QUARTZ_MIN = 0;
public static final int QUARTZ_MAX = 45; // public static final int QUARTZ_MAX = 45;
//
private final WorldGenLushCaves caveGen = new WorldGenLushCaves(); // private final WorldGenLushCaves caveGen = new WorldGenLushCaves();
//
public AAWorldGen() { // public AAWorldGen() {
ActuallyAdditions.LOGGER.info("Registering World Generator..."); // ActuallyAdditions.LOGGER.info("Registering World Generator...");
} // }
//
@Override // @Override
public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider) { // public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider) {
int dimension = world.provider.getDimension(); // int dimension = world.provider.getDimension();
if (dimension != -1 && dimension != 1) { // if (dimension != -1 && dimension != 1) {
if (world.getWorldType() != WorldType.FLAT && this.canGen(world.provider.getDimension())) { // if (world.getWorldType() != WorldType.FLAT && this.canGen(world.provider.getDimension())) {
this.generateDefault(world, random, chunkX, chunkZ); // this.generateDefault(world, random, chunkX, chunkZ);
} // }
} // }
} // }
//
private boolean canGen(int dimension) { // private boolean canGen(int dimension) {
boolean inList = ArrayUtils.contains(ConfigIntListValues.ORE_GEN_DIMENSION_BLACKLIST.getValue(), dimension); // boolean inList = ArrayUtils.contains(ConfigIntListValues.ORE_GEN_DIMENSION_BLACKLIST.getValue(), dimension);
return (inList && ConfigBoolValues.ORE_GEN_DIM_WHITELIST.isEnabled()) || (!inList && !ConfigBoolValues.ORE_GEN_DIM_WHITELIST.isEnabled()); // return (inList && ConfigBoolValues.ORE_GEN_DIM_WHITELIST.isEnabled()) || (!inList && !ConfigBoolValues.ORE_GEN_DIM_WHITELIST.isEnabled());
} // }
//
private void generateDefault(World world, Random random, int x, int z) { // private void generateDefault(World world, Random random, int x, int z) {
if (ConfigBoolValues.GENERATE_QUARTZ.isEnabled()) { // if (ConfigBoolValues.GENERATE_QUARTZ.isEnabled()) {
this.addOreSpawn(ActuallyBlocks.blockMisc.getDefaultState().withProperty(BlockMisc.TYPE, TheMiscBlocks.ORE_QUARTZ), Blocks.STONE, world, random, x * 16, z * 16, MathHelper.getInt(random, 5, 8), 10, QUARTZ_MIN, QUARTZ_MAX); // this.addOreSpawn(ActuallyBlocks.blockMisc.getDefaultState().withProperty(BlockMisc.TYPE, TheMiscBlocks.ORE_QUARTZ), Blocks.STONE, world, random, x * 16, z * 16, MathHelper.getInt(random, 5, 8), 10, QUARTZ_MIN, QUARTZ_MAX);
} // }
//
if (ConfigBoolValues.GEN_LUSH_CAVES.isEnabled()) { // if (ConfigBoolValues.GEN_LUSH_CAVES.isEnabled()) {
//
int randConst = 0x969ce69d;//so that it won't generate the same numbers as other mod that does the same thing // int randConst = 0x969ce69d;//so that it won't generate the same numbers as other mod that does the same thing
Random chunkRand = new Random(randConst ^ world.getSeed() ^ (x * 29 + z * 31)); // Random chunkRand = new Random(randConst ^ world.getSeed() ^ (x * 29 + z * 31));
//
StructureBoundingBox box = new StructureBoundingBox(x * 16 + 8, 0, z * 16 + 8, x * 16 + 8 + 15, 255, z * 16 + 8 + 15); // StructureBoundingBox box = new StructureBoundingBox(x * 16 + 8, 0, z * 16 + 8, x * 16 + 8 + 15, 255, z * 16 + 8 + 15);
if (chunkRand.nextInt(ConfigIntValues.LUSH_CAVE_CHANCE.getValue()) <= 0) { // if (chunkRand.nextInt(ConfigIntValues.LUSH_CAVE_CHANCE.getValue()) <= 0) {
BlockPos randPos = world.getTopSolidOrLiquidBlock(new BlockPos(x * 16 + MathHelper.getInt(random, 6, 10), 0, z * 16 + MathHelper.getInt(random, 6, 10))); // BlockPos randPos = world.getTopSolidOrLiquidBlock(new BlockPos(x * 16 + MathHelper.getInt(random, 6, 10), 0, z * 16 + MathHelper.getInt(random, 6, 10)));
BlockPos pos = randPos.down(MathHelper.getInt(chunkRand, 15, randPos.getY() - 15)); // BlockPos pos = randPos.down(MathHelper.getInt(chunkRand, 15, randPos.getY() - 15));
//
this.caveGen.generate(world, chunkRand, pos, box); // this.caveGen.generate(world, chunkRand, pos, box);
} // }
} // }
} // }
//
public void addOreSpawn(BlockState state, Block blockIn, World world, Random random, int blockXPos, int blockZPos, int maxVeinSize, int chancesToSpawn, int minY, int maxY) { // public void addOreSpawn(BlockState state, Block blockIn, World world, Random random, int blockXPos, int blockZPos, int maxVeinSize, int chancesToSpawn, int minY, int maxY) {
for (int i = 0; i < chancesToSpawn; i++) { // for (int i = 0; i < chancesToSpawn; i++) {
int posX = blockXPos + random.nextInt(16); // int posX = blockXPos + random.nextInt(16);
int posY = minY + random.nextInt(maxY - minY); // int posY = minY + random.nextInt(maxY - minY);
int posZ = blockZPos + random.nextInt(16); // int posZ = blockZPos + random.nextInt(16);
new WorldGenMinable(state, maxVeinSize, BlockMatcher.forBlock(blockIn)).generate(world, random, new BlockPos(posX, posY, posZ)); // new WorldGenMinable(state, maxVeinSize, BlockMatcher.forBlock(blockIn)).generate(world, random, new BlockPos(posX, posY, posZ));
} // }
} // }
//
@SubscribeEvent // @SubscribeEvent
public void onWorldDecoration(DecorateBiomeEvent.Decorate event) { // public void onWorldDecoration(DecorateBiomeEvent.Decorate event) {
if ((event.getResult() == Event.Result.ALLOW || event.getResult() == Event.Result.DEFAULT)) { // if ((event.getResult() == Event.Result.ALLOW || event.getResult() == Event.Result.DEFAULT)) {
if (event.getType() == EventType.FLOWERS) { // if (event.getType() == EventType.FLOWERS) {
if (!ArrayUtils.contains(ConfigIntListValues.PLANT_DIMENSION_BLACKLIST.getValue(), event.getWorld().provider.getDimension())) { // if (!ArrayUtils.contains(ConfigIntListValues.PLANT_DIMENSION_BLACKLIST.getValue(), event.getWorld().provider.getDimension())) {
this.generateRice(event); // this.generateRice(event);
BlockState plantDefault = ActuallyBlocks.blockWildPlant.getDefaultState(); // BlockState plantDefault = ActuallyBlocks.blockWildPlant.getDefaultState();
this.genPlantNormally(plantDefault.withProperty(BlockWildPlant.TYPE, TheWildPlants.CANOLA), ConfigIntValues.CANOLA_AMOUNT.getValue(), ConfigBoolValues.DO_CANOLA_GEN.isEnabled(), Material.GRASS, event); // this.genPlantNormally(plantDefault.withProperty(BlockWildPlant.TYPE, TheWildPlants.CANOLA), ConfigIntValues.CANOLA_AMOUNT.getValue(), ConfigBoolValues.DO_CANOLA_GEN.isEnabled(), Material.GRASS, event);
this.genPlantNormally(plantDefault.withProperty(BlockWildPlant.TYPE, TheWildPlants.FLAX), ConfigIntValues.FLAX_AMOUNT.getValue(), ConfigBoolValues.DO_FLAX_GEN.isEnabled(), Material.GRASS, event); // this.genPlantNormally(plantDefault.withProperty(BlockWildPlant.TYPE, TheWildPlants.FLAX), ConfigIntValues.FLAX_AMOUNT.getValue(), ConfigBoolValues.DO_FLAX_GEN.isEnabled(), Material.GRASS, event);
this.genPlantNormally(plantDefault.withProperty(BlockWildPlant.TYPE, TheWildPlants.COFFEE), ConfigIntValues.COFFEE_AMOUNT.getValue(), ConfigBoolValues.DO_COFFEE_GEN.isEnabled(), Material.GRASS, event); // this.genPlantNormally(plantDefault.withProperty(BlockWildPlant.TYPE, TheWildPlants.COFFEE), ConfigIntValues.COFFEE_AMOUNT.getValue(), ConfigBoolValues.DO_COFFEE_GEN.isEnabled(), Material.GRASS, event);
// this.genPlantNormally(InitBlocks.blockBlackLotus.getDefaultState(), ConfigIntValues.BLACK_LOTUS_AMOUNT.getValue(), ConfigBoolValues.DO_LOTUS_GEN.isEnabled(), Material.GRASS, event); // // this.genPlantNormally(InitBlocks.blockBlackLotus.getDefaultState(), ConfigIntValues.BLACK_LOTUS_AMOUNT.getValue(), ConfigBoolValues.DO_LOTUS_GEN.isEnabled(), Material.GRASS, event);
} // }
} // }
//
if (event.getType() == EventType.LILYPAD) { // if (event.getType() == EventType.LILYPAD) {
//Generate Treasure Chests // //Generate Treasure Chests
if (ConfigBoolValues.DO_TREASURE_CHEST_GEN.isEnabled()) { // if (ConfigBoolValues.DO_TREASURE_CHEST_GEN.isEnabled()) {
if (event.getRand().nextInt(40) == 0) { // if (event.getRand().nextInt(40) == 0) {
BlockPos randomPos = event.getChunkPos().getBlock(event.getRand().nextInt(16) + 8, 0, event.getRand().nextInt(16) + 8); // BlockPos randomPos = event.getChunkPos().getBlock(event.getRand().nextInt(16) + 8, 0, event.getRand().nextInt(16) + 8);
randomPos = event.getWorld().getTopSolidOrLiquidBlock(randomPos); // randomPos = event.getWorld().getTopSolidOrLiquidBlock(randomPos);
//
if (event.getWorld().getBiome(randomPos) instanceof BiomeOcean) { // if (event.getWorld().getBiome(randomPos) instanceof BiomeOcean) {
if (randomPos.getY() >= 25 && randomPos.getY() <= 45) { // if (randomPos.getY() >= 25 && randomPos.getY() <= 45) {
if (event.getWorld().getBlockState(randomPos).getMaterial() == Material.WATER) { // if (event.getWorld().getBlockState(randomPos).getMaterial() == Material.WATER) {
if (event.getWorld().getBlockState(randomPos.down()).getMaterial().isSolid()) { // if (event.getWorld().getBlockState(randomPos.down()).getMaterial().isSolid()) {
event.getWorld().setBlockState(randomPos, ActuallyBlocks.blockTreasureChest.getDefaultState().withProperty(BlockHorizontal.FACING, Direction.byHorizontalIndex(event.getRand().nextInt(4))), 2); // event.getWorld().setBlockState(randomPos, ActuallyBlocks.blockTreasureChest.getDefaultState().withProperty(BlockHorizontal.FACING, Direction.byHorizontalIndex(event.getRand().nextInt(4))), 2);
} // }
} // }
} // }
} // }
} // }
} // }
} // }
} // }
} // }
//
private void generateRice(DecorateBiomeEvent event) { // private void generateRice(DecorateBiomeEvent event) {
if (ConfigBoolValues.DO_RICE_GEN.isEnabled()) { // if (ConfigBoolValues.DO_RICE_GEN.isEnabled()) {
for (int i = 0; i < ConfigIntValues.RICE_AMOUNT.getValue(); i++) { // for (int i = 0; i < ConfigIntValues.RICE_AMOUNT.getValue(); i++) {
if (event.getRand().nextInt(3) == 0) { // if (event.getRand().nextInt(3) == 0) {
BlockPos randomPos = event.getChunkPos().getBlock(event.getRand().nextInt(16) + 8, 0, event.getRand().nextInt(16) + 8); // BlockPos randomPos = event.getChunkPos().getBlock(event.getRand().nextInt(16) + 8, 0, event.getRand().nextInt(16) + 8);
randomPos = event.getWorld().getTopSolidOrLiquidBlock(randomPos); // randomPos = event.getWorld().getTopSolidOrLiquidBlock(randomPos);
if (event.getWorld().getBlockState(randomPos).getMaterial() == Material.WATER) { // if (event.getWorld().getBlockState(randomPos).getMaterial() == Material.WATER) {
ArrayList<Material> blocksAroundBottom = WorldUtil.getMaterialsAround(event.getWorld(), randomPos); // ArrayList<Material> blocksAroundBottom = WorldUtil.getMaterialsAround(event.getWorld(), randomPos);
BlockPos posToGenAt = randomPos.up(); // BlockPos posToGenAt = randomPos.up();
ArrayList<Material> blocksAroundTop = WorldUtil.getMaterialsAround(event.getWorld(), posToGenAt); // ArrayList<Material> blocksAroundTop = WorldUtil.getMaterialsAround(event.getWorld(), posToGenAt);
if (blocksAroundBottom.contains(Material.GRASS) || blocksAroundBottom.contains(Material.GROUND) || blocksAroundBottom.contains(Material.ROCK) || blocksAroundBottom.contains(Material.SAND)) { // if (blocksAroundBottom.contains(Material.GRASS) || blocksAroundBottom.contains(Material.GROUND) || blocksAroundBottom.contains(Material.ROCK) || blocksAroundBottom.contains(Material.SAND)) {
if (!blocksAroundTop.contains(Material.WATER) && event.getWorld().getBlockState(posToGenAt).getMaterial() == Material.AIR) { // if (!blocksAroundTop.contains(Material.WATER) && event.getWorld().getBlockState(posToGenAt).getMaterial() == Material.AIR) {
event.getWorld().setBlockState(posToGenAt, ActuallyBlocks.blockWildPlant.getDefaultState().withProperty(BlockWildPlant.TYPE, TheWildPlants.RICE), 2); // event.getWorld().setBlockState(posToGenAt, ActuallyBlocks.blockWildPlant.getDefaultState().withProperty(BlockWildPlant.TYPE, TheWildPlants.RICE), 2);
} // }
} // }
} // }
} // }
} // }
} // }
} // }
//
private void genPlantNormally(BlockState plant, int amount, boolean doIt, Material blockBelow, DecorateBiomeEvent event) { // private void genPlantNormally(BlockState plant, int amount, boolean doIt, Material blockBelow, DecorateBiomeEvent event) {
if (doIt) { // if (doIt) {
for (int i = 0; i < amount; i++) { // for (int i = 0; i < amount; i++) {
if (event.getRand().nextInt(100) == 0) { // if (event.getRand().nextInt(100) == 0) {
BlockPos randomPos = event.getChunkPos().getBlock(event.getRand().nextInt(16) + 8, 0, event.getRand().nextInt(16) + 8); // BlockPos randomPos = event.getChunkPos().getBlock(event.getRand().nextInt(16) + 8, 0, event.getRand().nextInt(16) + 8);
randomPos = event.getWorld().getTopSolidOrLiquidBlock(randomPos); // randomPos = event.getWorld().getTopSolidOrLiquidBlock(randomPos);
//
if (event.getWorld().getBlockState(randomPos.down()).getMaterial() == blockBelow) { // if (event.getWorld().getBlockState(randomPos.down()).getMaterial() == blockBelow) {
if (plant.getBlock().canPlaceBlockAt(event.getWorld(), randomPos) && event.getWorld().isAirBlock(randomPos)) { // if (plant.getBlock().canPlaceBlockAt(event.getWorld(), randomPos) && event.getWorld().isAirBlock(randomPos)) {
event.getWorld().setBlockState(randomPos, plant, 2); // event.getWorld().setBlockState(randomPos, plant, 2);
} // }
} // }
} // }
} // }
} // }
} // }
} //}

View file

@ -1,194 +1,194 @@
/* ///*
* This file ("WorldGenLushCaves.java") is part of the Actually Additions mod for Minecraft. // * This file ("WorldGenLushCaves.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed // * It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at // * under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense // * http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions // * View the source code at https://github.com/Ellpeck/ActuallyAdditions
* // *
* © 2015-2017 Ellpeck // * © 2015-2017 Ellpeck
*/ // */
//
package de.ellpeck.actuallyadditions.mod.gen; //package de.ellpeck.actuallyadditions.mod.gen;
//
import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks; //import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks;
import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues; //import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues;
import de.ellpeck.actuallyadditions.mod.misc.DungeonLoot; //import de.ellpeck.actuallyadditions.mod.misc.DungeonLoot;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityGiantChest; //import de.ellpeck.actuallyadditions.mod.tile.TileEntityGiantChest;
import net.minecraft.block.Block; //import net.minecraft.block.Block;
import net.minecraft.block.BlockDirectional; //import net.minecraft.block.BlockDirectional;
import net.minecraft.init.Blocks; //import net.minecraft.init.Blocks;
import net.minecraft.tileentity.TileEntity; //import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Direction; //import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos; //import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper; //import net.minecraft.util.math.MathHelper;
import net.minecraft.world.World; //import net.minecraft.world.World;
import net.minecraft.world.gen.feature.WorldGenAbstractTree; //import net.minecraft.world.gen.feature.WorldGenAbstractTree;
import net.minecraft.world.gen.feature.WorldGenBigTree; //import net.minecraft.world.gen.feature.WorldGenBigTree;
import net.minecraft.world.gen.feature.WorldGenShrub; //import net.minecraft.world.gen.feature.WorldGenShrub;
import net.minecraft.world.gen.feature.WorldGenTrees; //import net.minecraft.world.gen.feature.WorldGenTrees;
import net.minecraft.world.gen.structure.StructureBoundingBox; //import net.minecraft.world.gen.structure.StructureBoundingBox;
import net.minecraft.world.storage.loot.ILootContainer; //import net.minecraft.world.storage.loot.ILootContainer;
//
import java.util.ArrayList; //import java.util.ArrayList;
import java.util.Collections; //import java.util.Collections;
import java.util.List; //import java.util.List;
import java.util.Random; //import java.util.Random;
//
public class WorldGenLushCaves { //public class WorldGenLushCaves {
//
public static final Block[] CRYSTAL_CLUSTERS = new Block[]{ActuallyBlocks.blockCrystalClusterRedstone, ActuallyBlocks.blockCrystalClusterLapis, ActuallyBlocks.blockCrystalClusterDiamond, ActuallyBlocks.blockCrystalClusterCoal, ActuallyBlocks.blockCrystalClusterEmerald, ActuallyBlocks.blockCrystalClusterIron}; // public static final Block[] CRYSTAL_CLUSTERS = new Block[]{ActuallyBlocks.blockCrystalClusterRedstone, ActuallyBlocks.blockCrystalClusterLapis, ActuallyBlocks.blockCrystalClusterDiamond, ActuallyBlocks.blockCrystalClusterCoal, ActuallyBlocks.blockCrystalClusterEmerald, ActuallyBlocks.blockCrystalClusterIron};
//
public boolean generate(World world, Random rand, BlockPos position, StructureBoundingBox blockRegion) { // public boolean generate(World world, Random rand, BlockPos position, StructureBoundingBox blockRegion) {
this.generateCave(world, position, rand, blockRegion); // this.generateCave(world, position, rand, blockRegion);
return true; // return true;
} // }
//
private void generateCave(World world, BlockPos center, Random rand, StructureBoundingBox chunkRegion) { // private void generateCave(World world, BlockPos center, Random rand, StructureBoundingBox chunkRegion) {
int spheres = rand.nextInt(5) + 3; // int spheres = rand.nextInt(5) + 3;
StructureBoundingBox spheresBox = new StructureBoundingBox(chunkRegion); // StructureBoundingBox spheresBox = new StructureBoundingBox(chunkRegion);
//the region for spheres is larger so that trees can generate in the smaller one // //the region for spheres is larger so that trees can generate in the smaller one
spheresBox.minX -= 7; // spheresBox.minX -= 7;
spheresBox.minZ -= 7; // spheresBox.minZ -= 7;
spheresBox.maxX += 7; // spheresBox.maxX += 7;
spheresBox.maxZ += 7; // spheresBox.maxZ += 7;
for (int i = 0; i <= spheres; i++) { // for (int i = 0; i <= spheres; i++) {
//center already is random value within population area // //center already is random value within population area
this.makeSphereWithGrassFloor(world, center.add(rand.nextInt(11) - 5, rand.nextInt(7) - 3, rand.nextInt(11) - 5), rand.nextInt(3) + 5, spheresBox, rand); // this.makeSphereWithGrassFloor(world, center.add(rand.nextInt(11) - 5, rand.nextInt(7) - 3, rand.nextInt(11) - 5), rand.nextInt(3) + 5, spheresBox, rand);
} // }
//
this.genTreesAndTallGrass(world, center, 11, spheres * 2, rand, chunkRegion); // this.genTreesAndTallGrass(world, center, 11, spheres * 2, rand, chunkRegion);
} // }
//
private void genTreesAndTallGrass(World world, BlockPos center, int radius, int amount, Random rand, StructureBoundingBox box) { // private void genTreesAndTallGrass(World world, BlockPos center, int radius, int amount, Random rand, StructureBoundingBox box) {
List<BlockPos> possiblePoses = new ArrayList<>(); // List<BlockPos> possiblePoses = new ArrayList<>();
for (double x = -radius; x < radius; x++) { // for (double x = -radius; x < radius; x++) {
for (double y = -radius; y < radius; y++) { // for (double y = -radius; y < radius; y++) {
for (double z = -radius; z < radius; z++) { // for (double z = -radius; z < radius; z++) {
BlockPos pos = center.add(x, y, z); // BlockPos pos = center.add(x, y, z);
if (box.isVecInside(pos)) { // if (box.isVecInside(pos)) {
if (rand.nextDouble() >= 0.5D) { // if (rand.nextDouble() >= 0.5D) {
if (world.getBlockState(pos).getBlock() == Blocks.GRASS) { // if (world.getBlockState(pos).getBlock() == Blocks.GRASS) {
possiblePoses.add(pos); // possiblePoses.add(pos);
} // }
} else { // } else {
if (ConfigBoolValues.DO_CRYSTAL_CLUSTERS.isEnabled() && rand.nextInt(20) == 0) { // if (ConfigBoolValues.DO_CRYSTAL_CLUSTERS.isEnabled() && rand.nextInt(20) == 0) {
Direction[] values = Direction.values(); // Direction[] values = Direction.values();
Direction side = values[rand.nextInt(values.length)]; // Direction side = values[rand.nextInt(values.length)];
BlockPos posSide = pos.offset(side); // BlockPos posSide = pos.offset(side);
//
if (!this.checkIndestructable(world, posSide)) { // if (!this.checkIndestructable(world, posSide)) {
BlockState state = world.getBlockState(pos); // BlockState state = world.getBlockState(pos);
BlockState stateSide = world.getBlockState(posSide); // BlockState stateSide = world.getBlockState(posSide);
//
if (state.getBlock().isAir(state, world, pos) && stateSide.isSideSolid(world, posSide, side.getOpposite())) { // if (state.getBlock().isAir(state, world, pos) && stateSide.isSideSolid(world, posSide, side.getOpposite())) {
Block block = CRYSTAL_CLUSTERS[rand.nextInt(CRYSTAL_CLUSTERS.length)]; // Block block = CRYSTAL_CLUSTERS[rand.nextInt(CRYSTAL_CLUSTERS.length)];
world.setBlockState(pos, block.getDefaultState().withProperty(BlockDirectional.FACING, side.getOpposite()), 2); // world.setBlockState(pos, block.getDefaultState().withProperty(BlockDirectional.FACING, side.getOpposite()), 2);
} // }
} // }
} // }
} // }
} // }
} // }
} // }
} // }
//
if (!possiblePoses.isEmpty()) { // if (!possiblePoses.isEmpty()) {
boolean crateGenDone = false; // boolean crateGenDone = false;
//
for (int i = 0; i <= amount; i++) { // for (int i = 0; i <= amount; i++) {
Collections.shuffle(possiblePoses); // Collections.shuffle(possiblePoses);
BlockPos pos = possiblePoses.get(0); // BlockPos pos = possiblePoses.get(0);
if (rand.nextBoolean()) { // if (rand.nextBoolean()) {
boolean genCrate = false; // boolean genCrate = false;
//
WorldGenAbstractTree trees; // WorldGenAbstractTree trees;
if (rand.nextBoolean()) { // if (rand.nextBoolean()) {
if (rand.nextBoolean()) { // if (rand.nextBoolean()) {
trees = new WorldGenBigTree(false); // trees = new WorldGenBigTree(false);
} else { // } else {
trees = new WorldGenShrub(Blocks.LOG.getDefaultState(), Blocks.LEAVES.getDefaultState()); // trees = new WorldGenShrub(Blocks.LOG.getDefaultState(), Blocks.LEAVES.getDefaultState());
genCrate = true; // genCrate = true;
} // }
} else { // } else {
trees = new WorldGenTrees(false); // trees = new WorldGenTrees(false);
} // }
trees.generate(world, rand, pos.up()); // trees.generate(world, rand, pos.up());
//
if (ConfigBoolValues.DUNGEON_LOOT.isEnabled() && !crateGenDone && genCrate) { // if (ConfigBoolValues.DUNGEON_LOOT.isEnabled() && !crateGenDone && genCrate) {
BlockPos cratePos = pos.add(MathHelper.getInt(rand, -2, 2), MathHelper.getInt(rand, 3, 8), MathHelper.getInt(rand, -2, 2)); // BlockPos cratePos = pos.add(MathHelper.getInt(rand, -2, 2), MathHelper.getInt(rand, 3, 8), MathHelper.getInt(rand, -2, 2));
//
BlockState state = world.getBlockState(cratePos); // BlockState state = world.getBlockState(cratePos);
if (state != null && state.getBlock().isLeaves(state, world, cratePos)) { // if (state != null && state.getBlock().isLeaves(state, world, cratePos)) {
world.setBlockState(cratePos, ActuallyBlocks.blockGiantChest.getDefaultState(), 2); // world.setBlockState(cratePos, ActuallyBlocks.blockGiantChest.getDefaultState(), 2);
//
TileEntity tile = world.getTileEntity(cratePos); // TileEntity tile = world.getTileEntity(cratePos);
if (tile instanceof TileEntityGiantChest) { // if (tile instanceof TileEntityGiantChest) {
((TileEntityGiantChest) tile).lootTable = DungeonLoot.LUSH_CAVES; // ((TileEntityGiantChest) tile).lootTable = DungeonLoot.LUSH_CAVES;
} // }
} // }
//
crateGenDone = true; // crateGenDone = true;
} // }
} else { // } else {
Blocks.GRASS.grow(world, rand, pos, world.getBlockState(pos)); // Blocks.GRASS.grow(world, rand, pos, world.getBlockState(pos));
} // }
} // }
} // }
} // }
//
private void makeSphereWithGrassFloor(World world, BlockPos center, int radius, StructureBoundingBox boundingBox, Random rand) { // private void makeSphereWithGrassFloor(World world, BlockPos center, int radius, StructureBoundingBox boundingBox, Random rand) {
for (double x = -radius; x < radius; x++) { // for (double x = -radius; x < radius; x++) {
for (double y = -radius; y < radius; y++) { // for (double y = -radius; y < radius; y++) {
for (double z = -radius; z < radius; z++) { // for (double z = -radius; z < radius; z++) {
if (Math.sqrt(x * x + y * y + z * z) < radius) { // if (Math.sqrt(x * x + y * y + z * z) < radius) {
BlockPos pos = center.add(x, y, z); // BlockPos pos = center.add(x, y, z);
//Note: order matters, checkIndestructable will generate chunks if order is reversed // //Note: order matters, checkIndestructable will generate chunks if order is reversed
if (boundingBox.isVecInside(pos) && !this.checkIndestructable(world, pos)) { // if (boundingBox.isVecInside(pos) && !this.checkIndestructable(world, pos)) {
world.setBlockState(pos, Blocks.AIR.getDefaultState()); // world.setBlockState(pos, Blocks.AIR.getDefaultState());
} // }
} // }
} // }
} // }
} // }
//
for (double x = -radius; x < radius; x++) { // for (double x = -radius; x < radius; x++) {
for (double z = -radius; z < radius; z++) { // for (double z = -radius; z < radius; z++) {
for (double y = -radius; y <= -3; y++) { // for (double y = -radius; y <= -3; y++) {
BlockPos pos = center.add(x, y, z); // BlockPos pos = center.add(x, y, z);
if (boundingBox.isVecInside(pos) && !this.checkIndestructable(world, pos)) { // if (boundingBox.isVecInside(pos) && !this.checkIndestructable(world, pos)) {
BlockState state = world.getBlockState(pos); // BlockState state = world.getBlockState(pos);
BlockPos posUp = pos.up(); // BlockPos posUp = pos.up();
//
if (!this.checkIndestructable(world, posUp)) { // if (!this.checkIndestructable(world, posUp)) {
BlockState stateUp = world.getBlockState(posUp); // BlockState stateUp = world.getBlockState(posUp);
if (!state.getBlock().isAir(state, world, pos) && stateUp.getBlock().isAir(stateUp, world, posUp)) { // if (!state.getBlock().isAir(state, world, pos) && stateUp.getBlock().isAir(stateUp, world, posUp)) {
world.setBlockState(pos, Blocks.GRASS.getDefaultState(), 2); // world.setBlockState(pos, Blocks.GRASS.getDefaultState(), 2);
} // }
} // }
} // }
} // }
} // }
} // }
} // }
//
private boolean checkIndestructable(World world, BlockPos pos) { // private boolean checkIndestructable(World world, BlockPos pos) {
//If this isn't checked, the game crashes because it tries to destroy a chest that doesn't have any loot yet :v // //If this isn't checked, the game crashes because it tries to destroy a chest that doesn't have any loot yet :v
TileEntity tile = world.getTileEntity(pos); // TileEntity tile = world.getTileEntity(pos);
if (tile instanceof ILootContainer) { // if (tile instanceof ILootContainer) {
return true; // return true;
} // }
//
BlockState state = world.getBlockState(pos); // BlockState state = world.getBlockState(pos);
if (state != null) { // if (state != null) {
Block block = state.getBlock(); // Block block = state.getBlock();
//check if it's tree or grass that is generated here // //check if it's tree or grass that is generated here
if (block == Blocks.LOG || block == Blocks.LEAVES || block == Blocks.TALLGRASS) { // if (block == Blocks.LOG || block == Blocks.LEAVES || block == Blocks.TALLGRASS) {
return true; // return true;
} // }
if (block != null && (block.isAir(state, world, pos) || block.getHarvestLevel(state) >= 0F)) { // if (block != null && (block.isAir(state, world, pos) || block.getHarvestLevel(state) >= 0F)) {
return false; // return false;
} // }
} // }
return true; // return true;
} // }
} //}

View file

@ -1,53 +1,53 @@
/* ///*
* This file ("BasicTradeList.java") is part of the Actually Additions mod for Minecraft. // * This file ("BasicTradeList.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed // * It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at // * under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense // * http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions // * View the source code at https://github.com/Ellpeck/ActuallyAdditions
* // *
* © 2015-2017 Ellpeck // * © 2015-2017 Ellpeck
*/ // */
//
package de.ellpeck.actuallyadditions.mod.gen.village; //package de.ellpeck.actuallyadditions.mod.gen.village;
//
import java.util.Random; //import java.util.Random;
//
import net.minecraft.entity.IMerchant; //import net.minecraft.entity.IMerchant;
import net.minecraft.entity.passive.EntityVillager.ITradeList; //import net.minecraft.entity.passive.EntityVillager.ITradeList;
import net.minecraft.entity.passive.EntityVillager.PriceInfo; //import net.minecraft.entity.passive.EntityVillager.PriceInfo;
import net.minecraft.init.Items; //import net.minecraft.init.Items;
import net.minecraft.item.ItemStack; //import net.minecraft.item.ItemStack;
import net.minecraft.village.MerchantRecipe; //import net.minecraft.village.MerchantRecipe;
import net.minecraft.village.MerchantRecipeList; //import net.minecraft.village.MerchantRecipeList;
//
public class BasicTradeList implements ITradeList { //public class BasicTradeList implements ITradeList {
//
private final ItemStack input; // private final ItemStack input;
private final PriceInfo inputAmount; // private final PriceInfo inputAmount;
private final ItemStack output; // private final ItemStack output;
private final PriceInfo outputAmount; // private final PriceInfo outputAmount;
//
public BasicTradeList(ItemStack input, PriceInfo inputAmount, ItemStack output, PriceInfo outputAmount) { // public BasicTradeList(ItemStack input, PriceInfo inputAmount, ItemStack output, PriceInfo outputAmount) {
this.input = input; // this.input = input;
this.inputAmount = inputAmount; // this.inputAmount = inputAmount;
this.output = output; // this.output = output;
this.outputAmount = outputAmount; // this.outputAmount = outputAmount;
} // }
//
public BasicTradeList(PriceInfo emeraldInput, ItemStack output, PriceInfo outputAmount) { // public BasicTradeList(PriceInfo emeraldInput, ItemStack output, PriceInfo outputAmount) {
this(new ItemStack(Items.EMERALD), emeraldInput, output, outputAmount); // this(new ItemStack(Items.EMERALD), emeraldInput, output, outputAmount);
} // }
//
public BasicTradeList(ItemStack input, PriceInfo inputAmount, PriceInfo emeraldOutput) { // public BasicTradeList(ItemStack input, PriceInfo inputAmount, PriceInfo emeraldOutput) {
this(input, inputAmount, new ItemStack(Items.EMERALD), emeraldOutput); // this(input, inputAmount, new ItemStack(Items.EMERALD), emeraldOutput);
} // }
//
@Override // @Override
public void addMerchantRecipe(IMerchant merchant, MerchantRecipeList recipeList, Random random) { // public void addMerchantRecipe(IMerchant merchant, MerchantRecipeList recipeList, Random random) {
ItemStack in = this.input.copy(); // ItemStack in = this.input.copy();
in.setCount(this.inputAmount.getPrice(random)); // in.setCount(this.inputAmount.getPrice(random));
ItemStack out = this.output.copy(); // ItemStack out = this.output.copy();
out.setCount(this.outputAmount.getPrice(random)); // out.setCount(this.outputAmount.getPrice(random));
recipeList.add(new MerchantRecipe(in, out)); // recipeList.add(new MerchantRecipe(in, out));
} // }
} //}

View file

@ -1,116 +1,116 @@
/* ///*
* This file ("VillageComponentCustomCropField.java") is part of the Actually Additions mod for Minecraft. // * This file ("VillageComponentCustomCropField.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed // * It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at // * under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense // * http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions // * View the source code at https://github.com/Ellpeck/ActuallyAdditions
* // *
* © 2015-2017 Ellpeck // * © 2015-2017 Ellpeck
*/ // */
//
package de.ellpeck.actuallyadditions.mod.gen.village.component; //package de.ellpeck.actuallyadditions.mod.gen.village.component;
//
import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks; //import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks;
import net.minecraft.block.Block; //import net.minecraft.block.Block;
import net.minecraft.block.BlockCrops; //import net.minecraft.block.BlockCrops;
import net.minecraft.init.Blocks; //import net.minecraft.init.Blocks;
import net.minecraft.util.Direction; //import net.minecraft.util.Direction;
import net.minecraft.util.math.MathHelper; //import net.minecraft.util.math.MathHelper;
import net.minecraft.world.World; //import net.minecraft.world.World;
import net.minecraft.world.gen.structure.StructureBoundingBox; //import net.minecraft.world.gen.structure.StructureBoundingBox;
import net.minecraft.world.gen.structure.StructureComponent; //import net.minecraft.world.gen.structure.StructureComponent;
import net.minecraft.world.gen.structure.StructureVillagePieces; //import net.minecraft.world.gen.structure.StructureVillagePieces;
//
import java.util.List; //import java.util.List;
import java.util.Random; //import java.util.Random;
//
public class VillageComponentCustomCropField extends StructureVillagePieces.House1 { //public class VillageComponentCustomCropField extends StructureVillagePieces.House1 {
//
private static final int X_SIZE = 13; // private static final int X_SIZE = 13;
private static final int Y_SIZE = 4; // private static final int Y_SIZE = 4;
private static final int Z_SIZE = 9; // private static final int Z_SIZE = 9;
//
private int averageGroundLevel = -1; // private int averageGroundLevel = -1;
//
public VillageComponentCustomCropField() { // public VillageComponentCustomCropField() {
//
} // }
//
public VillageComponentCustomCropField(StructureBoundingBox boundingBox, Direction par5) { // public VillageComponentCustomCropField(StructureBoundingBox boundingBox, Direction par5) {
this.setCoordBaseMode(par5); // this.setCoordBaseMode(par5);
this.boundingBox = boundingBox; // this.boundingBox = boundingBox;
} // }
//
public static VillageComponentCustomCropField buildComponent(List<StructureComponent> pieces, int p1, int p2, int p3, Direction p4) { // public static VillageComponentCustomCropField buildComponent(List<StructureComponent> pieces, int p1, int p2, int p3, Direction p4) {
StructureBoundingBox boundingBox = StructureBoundingBox.getComponentToAddBoundingBox(p1, p2, p3, 0, 0, 0, X_SIZE, Y_SIZE, Z_SIZE, p4); // StructureBoundingBox boundingBox = StructureBoundingBox.getComponentToAddBoundingBox(p1, p2, p3, 0, 0, 0, X_SIZE, Y_SIZE, Z_SIZE, p4);
return canVillageGoDeeper(boundingBox) && StructureComponent.findIntersecting(pieces, boundingBox) == null // return canVillageGoDeeper(boundingBox) && StructureComponent.findIntersecting(pieces, boundingBox) == null
? new VillageComponentCustomCropField(boundingBox, p4) // ? new VillageComponentCustomCropField(boundingBox, p4)
: null; // : null;
} // }
//
@Override // @Override
public boolean addComponentParts(World world, Random rand, StructureBoundingBox sbb) { // public boolean addComponentParts(World world, Random rand, StructureBoundingBox sbb) {
if (this.averageGroundLevel < 0) { // if (this.averageGroundLevel < 0) {
this.averageGroundLevel = this.getAverageGroundLevel(world, sbb); // this.averageGroundLevel = this.getAverageGroundLevel(world, sbb);
if (this.averageGroundLevel < 0) { // if (this.averageGroundLevel < 0) {
return true; // return true;
} // }
this.boundingBox.offset(0, this.averageGroundLevel - this.boundingBox.maxY + Y_SIZE - 1, 0); // this.boundingBox.offset(0, this.averageGroundLevel - this.boundingBox.maxY + Y_SIZE - 1, 0);
} // }
//
this.fillWithBlocks(world, sbb, 0, 0, 0, X_SIZE - 1, Y_SIZE - 1, Z_SIZE - 1, Blocks.AIR); // this.fillWithBlocks(world, sbb, 0, 0, 0, X_SIZE - 1, Y_SIZE - 1, Z_SIZE - 1, Blocks.AIR);
this.spawnActualHouse(world, rand, sbb); // this.spawnActualHouse(world, rand, sbb);
//
for (int i = 0; i < X_SIZE; i++) { // for (int i = 0; i < X_SIZE; i++) {
for (int j = 0; j < Z_SIZE; j++) { // for (int j = 0; j < Z_SIZE; j++) {
this.clearCurrentPositionBlocksUpwards(world, i, Y_SIZE, j, sbb); // this.clearCurrentPositionBlocksUpwards(world, i, Y_SIZE, j, sbb);
this.replaceAirAndLiquidDownwards(world, Blocks.DIRT.getDefaultState(), i, -1, j, sbb); // this.replaceAirAndLiquidDownwards(world, Blocks.DIRT.getDefaultState(), i, -1, j, sbb);
} // }
} // }
//
return true; // return true;
} // }
//
public void fillWithBlocks(World world, StructureBoundingBox sbb, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, Block block) { // public void fillWithBlocks(World world, StructureBoundingBox sbb, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, Block block) {
this.fillWithBlocks(world, sbb, minX, minY, minZ, maxX, maxY, maxZ, block.getDefaultState(), block.getDefaultState(), false); // this.fillWithBlocks(world, sbb, minX, minY, minZ, maxX, maxY, maxZ, block.getDefaultState(), block.getDefaultState(), false);
} // }
//
public void spawnActualHouse(World world, Random rand, StructureBoundingBox sbb) { // public void spawnActualHouse(World world, Random rand, StructureBoundingBox sbb) {
this.fillWithBlocks(world, sbb, 1, 0, 1, 2, 0, 7, Blocks.FARMLAND); // this.fillWithBlocks(world, sbb, 1, 0, 1, 2, 0, 7, Blocks.FARMLAND);
this.fillWithBlocks(world, sbb, 4, 0, 1, 5, 0, 7, Blocks.FARMLAND); // this.fillWithBlocks(world, sbb, 4, 0, 1, 5, 0, 7, Blocks.FARMLAND);
this.fillWithBlocks(world, sbb, 7, 0, 1, 8, 0, 7, Blocks.FARMLAND); // this.fillWithBlocks(world, sbb, 7, 0, 1, 8, 0, 7, Blocks.FARMLAND);
this.fillWithBlocks(world, sbb, 10, 0, 1, 11, 0, 7, Blocks.FARMLAND); // this.fillWithBlocks(world, sbb, 10, 0, 1, 11, 0, 7, Blocks.FARMLAND);
this.fillWithBlocks(world, sbb, 0, 0, 0, 0, 0, 8, Blocks.LOG); // this.fillWithBlocks(world, sbb, 0, 0, 0, 0, 0, 8, Blocks.LOG);
this.fillWithBlocks(world, sbb, 6, 0, 0, 6, 0, 8, Blocks.LOG); // this.fillWithBlocks(world, sbb, 6, 0, 0, 6, 0, 8, Blocks.LOG);
this.fillWithBlocks(world, sbb, 12, 0, 0, 12, 0, 8, Blocks.LOG); // this.fillWithBlocks(world, sbb, 12, 0, 0, 12, 0, 8, Blocks.LOG);
this.fillWithBlocks(world, sbb, 1, 0, 0, 11, 0, 0, Blocks.LOG); // this.fillWithBlocks(world, sbb, 1, 0, 0, 11, 0, 0, Blocks.LOG);
this.fillWithBlocks(world, sbb, 1, 0, 8, 11, 0, 8, Blocks.LOG); // this.fillWithBlocks(world, sbb, 1, 0, 8, 11, 0, 8, Blocks.LOG);
this.fillWithBlocks(world, sbb, 3, 0, 1, 3, 0, 7, Blocks.WATER); // this.fillWithBlocks(world, sbb, 3, 0, 1, 3, 0, 7, Blocks.WATER);
this.fillWithBlocks(world, sbb, 9, 0, 1, 9, 0, 7, Blocks.WATER); // this.fillWithBlocks(world, sbb, 9, 0, 1, 9, 0, 7, Blocks.WATER);
//
for (int i = 1; i <= 7; ++i) { // for (int i = 1; i <= 7; ++i) {
this.setBlockState(world, this.getRandomCropType(rand), 1, 1, i, sbb); // this.setBlockState(world, this.getRandomCropType(rand), 1, 1, i, sbb);
this.setBlockState(world, this.getRandomCropType(rand), 2, 1, i, sbb); // this.setBlockState(world, this.getRandomCropType(rand), 2, 1, i, sbb);
this.setBlockState(world, this.getRandomCropType(rand), 4, 1, i, sbb); // this.setBlockState(world, this.getRandomCropType(rand), 4, 1, i, sbb);
this.setBlockState(world, this.getRandomCropType(rand), 5, 1, i, sbb); // this.setBlockState(world, this.getRandomCropType(rand), 5, 1, i, sbb);
this.setBlockState(world, this.getRandomCropType(rand), 7, 1, i, sbb); // this.setBlockState(world, this.getRandomCropType(rand), 7, 1, i, sbb);
this.setBlockState(world, this.getRandomCropType(rand), 8, 1, i, sbb); // this.setBlockState(world, this.getRandomCropType(rand), 8, 1, i, sbb);
this.setBlockState(world, this.getRandomCropType(rand), 10, 1, i, sbb); // this.setBlockState(world, this.getRandomCropType(rand), 10, 1, i, sbb);
this.setBlockState(world, this.getRandomCropType(rand), 11, 1, i, sbb); // this.setBlockState(world, this.getRandomCropType(rand), 11, 1, i, sbb);
} // }
} // }
//
private BlockState getRandomCropType(Random rand) { // private BlockState getRandomCropType(Random rand) {
int randomMeta = MathHelper.getInt(rand, 1, 7); // int randomMeta = MathHelper.getInt(rand, 1, 7);
switch (rand.nextInt(4)) { // switch (rand.nextInt(4)) {
case 0: // case 0:
return ActuallyBlocks.blockFlax.getDefaultState().withProperty(BlockCrops.AGE, randomMeta); // return ActuallyBlocks.blockFlax.getDefaultState().withProperty(BlockCrops.AGE, randomMeta);
case 1: // case 1:
return ActuallyBlocks.blockCoffee.getDefaultState().withProperty(BlockCrops.AGE, randomMeta); // return ActuallyBlocks.blockCoffee.getDefaultState().withProperty(BlockCrops.AGE, randomMeta);
case 2: // case 2:
return ActuallyBlocks.blockRice.getDefaultState().withProperty(BlockCrops.AGE, randomMeta); // return ActuallyBlocks.blockRice.getDefaultState().withProperty(BlockCrops.AGE, randomMeta);
default: // default:
return ActuallyBlocks.blockCanola.getDefaultState().withProperty(BlockCrops.AGE, randomMeta); // return ActuallyBlocks.blockCanola.getDefaultState().withProperty(BlockCrops.AGE, randomMeta);
} // }
} // }
} //}

View file

@ -1,220 +1,220 @@
/* ///*
* This file ("VillageComponentEngineerHouse.java") is part of the Actually Additions mod for Minecraft. // * This file ("VillageComponentEngineerHouse.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed // * It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at // * under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense // * http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions // * View the source code at https://github.com/Ellpeck/ActuallyAdditions
* // *
* © 2015-2017 Ellpeck // * © 2015-2017 Ellpeck
*/ // */
//
package de.ellpeck.actuallyadditions.mod.gen.village.component; //package de.ellpeck.actuallyadditions.mod.gen.village.component;
//
import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI; //import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI;
import de.ellpeck.actuallyadditions.api.laser.LaserType; //import de.ellpeck.actuallyadditions.api.laser.LaserType;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; //import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks; //import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks;
import de.ellpeck.actuallyadditions.mod.blocks.BlockColoredLamp; //import de.ellpeck.actuallyadditions.mod.blocks.BlockColoredLamp;
import de.ellpeck.actuallyadditions.mod.blocks.metalists.TheColoredLampColors; //import de.ellpeck.actuallyadditions.mod.blocks.metalists.TheColoredLampColors;
import de.ellpeck.actuallyadditions.mod.blocks.metalists.TheMiscBlocks; //import de.ellpeck.actuallyadditions.mod.blocks.metalists.TheMiscBlocks;
import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues; //import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues;
import de.ellpeck.actuallyadditions.mod.fluids.InitFluids; //import de.ellpeck.actuallyadditions.mod.fluids.InitFluids;
import de.ellpeck.actuallyadditions.mod.gen.village.InitVillager; //import de.ellpeck.actuallyadditions.mod.gen.village.InitVillager;
import de.ellpeck.actuallyadditions.mod.items.ActuallyItems; //import de.ellpeck.actuallyadditions.mod.items.ActuallyItems;
import de.ellpeck.actuallyadditions.mod.misc.DungeonLoot; //import de.ellpeck.actuallyadditions.mod.misc.DungeonLoot;
import de.ellpeck.actuallyadditions.mod.tile.*; //import de.ellpeck.actuallyadditions.mod.tile.*;
import net.minecraft.block.Block; //import net.minecraft.block.Block;
import net.minecraft.block.Blocks; //import net.minecraft.block.Blocks;
import net.minecraft.entity.merchant.villager.VillagerProfession; //import net.minecraft.entity.merchant.villager.VillagerProfession;
import net.minecraft.item.ItemStack; //import net.minecraft.item.ItemStack;
import net.minecraft.item.Items; //import net.minecraft.item.Items;
import net.minecraft.server.MinecraftServer; //import net.minecraft.server.MinecraftServer;
import net.minecraft.tileentity.TileEntity; //import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Direction; //import net.minecraft.util.Direction;
import net.minecraft.util.Mirror; //import net.minecraft.util.Mirror;
import net.minecraft.util.ResourceLocation; //import net.minecraft.util.ResourceLocation;
import net.minecraft.util.Rotation; //import net.minecraft.util.Rotation;
import net.minecraft.util.math.BlockPos; //import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World; //import net.minecraft.world.World;
import net.minecraft.world.gen.feature.template.PlacementSettings; //import net.minecraft.world.gen.feature.template.PlacementSettings;
import net.minecraft.world.gen.feature.template.Template; //import net.minecraft.world.gen.feature.template.Template;
import net.minecraft.world.gen.feature.template.TemplateManager; //import net.minecraft.world.gen.feature.template.TemplateManager;
import net.minecraftforge.fluids.FluidStack; //import net.minecraftforge.fluids.FluidStack;
//
import java.util.List; //import java.util.List;
import java.util.Random; //import java.util.Random;
//
public class VillageComponentEngineerHouse extends StructureVillagePieces.House1 { //public class VillageComponentEngineerHouse extends StructureVillagePieces.House1 {
//
private static final ResourceLocation STRUCTURE_RES_LOC = new ResourceLocation(ActuallyAdditions.MODID, "andrew_period_house"); // private static final ResourceLocation STRUCTURE_RES_LOC = new ResourceLocation(ActuallyAdditions.MODID, "andrew_period_house");
//
private static final int X_SIZE = 13; // private static final int X_SIZE = 13;
private static final int Y_SIZE = 11; // private static final int Y_SIZE = 11;
private static final int Z_SIZE = 10; // private static final int Z_SIZE = 10;
//
private int averageGroundLevel = -1; // private int averageGroundLevel = -1;
//
public VillageComponentEngineerHouse() { // public VillageComponentEngineerHouse() {
//
} // }
//
public VillageComponentEngineerHouse(StructureBoundingBox boundingBox, Direction par5) { // public VillageComponentEngineerHouse(StructureBoundingBox boundingBox, Direction par5) {
this.setCoordBaseMode(par5); // this.setCoordBaseMode(par5);
this.boundingBox = boundingBox; // this.boundingBox = boundingBox;
} // }
//
public static VillageComponentEngineerHouse buildComponent(List<StructureComponent> pieces, int p1, int p2, int p3, Direction p4) { // public static VillageComponentEngineerHouse buildComponent(List<StructureComponent> pieces, int p1, int p2, int p3, Direction p4) {
StructureBoundingBox boundingBox = StructureBoundingBox.getComponentToAddBoundingBox(p1, p2, p3, 0, 0, 0, X_SIZE, Y_SIZE, Z_SIZE, p4); // StructureBoundingBox boundingBox = StructureBoundingBox.getComponentToAddBoundingBox(p1, p2, p3, 0, 0, 0, X_SIZE, Y_SIZE, Z_SIZE, p4);
return canVillageGoDeeper(boundingBox) && StructureComponent.findIntersecting(pieces, boundingBox) == null // return canVillageGoDeeper(boundingBox) && StructureComponent.findIntersecting(pieces, boundingBox) == null
? new VillageComponentEngineerHouse(boundingBox, p4) // ? new VillageComponentEngineerHouse(boundingBox, p4)
: null; // : null;
} // }
//
@Override // @Override
public boolean addComponentParts(World world, Random rand, StructureBoundingBox sbb) { // public boolean addComponentParts(World world, Random rand, StructureBoundingBox sbb) {
if (this.averageGroundLevel < 0) { // if (this.averageGroundLevel < 0) {
this.averageGroundLevel = this.getAverageGroundLevel(world, sbb); // this.averageGroundLevel = this.getAverageGroundLevel(world, sbb);
if (this.averageGroundLevel < 0) { // if (this.averageGroundLevel < 0) {
return true; // return true;
} // }
this.boundingBox.offset(0, this.averageGroundLevel - this.boundingBox.maxY + Y_SIZE - 2, 0); // this.boundingBox.offset(0, this.averageGroundLevel - this.boundingBox.maxY + Y_SIZE - 2, 0);
} // }
//
this.fillWithBlocks(world, sbb, 0, 0, 0, X_SIZE - 1, Y_SIZE - 1, Z_SIZE - 1, Blocks.AIR); // this.fillWithBlocks(world, sbb, 0, 0, 0, X_SIZE - 1, Y_SIZE - 1, Z_SIZE - 1, Blocks.AIR);
this.spawnActualHouse(world, sbb); // this.spawnActualHouse(world, sbb);
this.fillHouse(world, sbb); // this.fillHouse(world, sbb);
//
for (int i = 0; i < X_SIZE; i++) { // for (int i = 0; i < X_SIZE; i++) {
for (int j = 0; j < Z_SIZE; j++) { // for (int j = 0; j < Z_SIZE; j++) {
this.clearCurrentPositionBlocksUpwards(world, i, Y_SIZE, j, sbb); // this.clearCurrentPositionBlocksUpwards(world, i, Y_SIZE, j, sbb);
this.replaceAirAndLiquidDownwards(world, Blocks.DIRT.getDefaultState(), i, -1, j, sbb); // this.replaceAirAndLiquidDownwards(world, Blocks.DIRT.getDefaultState(), i, -1, j, sbb);
} // }
} // }
//
this.spawnVillagers(world, sbb, 7, 4, 6, 1); // this.spawnVillagers(world, sbb, 7, 4, 6, 1);
//
return true; // return true;
} // }
//
private void fillWithBlocks(World world, StructureBoundingBox sbb, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, Block block) { // private void fillWithBlocks(World world, StructureBoundingBox sbb, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, Block block) {
this.fillWithBlocks(world, sbb, minX, minY, minZ, maxX, maxY, maxZ, block.getDefaultState(), block.getDefaultState(), false); // this.fillWithBlocks(world, sbb, minX, minY, minZ, maxX, maxY, maxZ, block.getDefaultState(), block.getDefaultState(), false);
} // }
//
private void fillHouse(World world, StructureBoundingBox sbb) { // private void fillHouse(World world, StructureBoundingBox sbb) {
if (ConfigBoolValues.DUNGEON_LOOT.isEnabled()) { // if (ConfigBoolValues.DUNGEON_LOOT.isEnabled()) {
if (world.rand.nextBoolean()) { // if (world.rand.nextBoolean()) {
TileEntity compost = this.getTileAtPos(world, 6, 1, 2, sbb); // TileEntity compost = this.getTileAtPos(world, 6, 1, 2, sbb);
if (compost instanceof TileEntityCompost) { // if (compost instanceof TileEntityCompost) {
TileEntityCompost tile = (TileEntityCompost) compost; // TileEntityCompost tile = (TileEntityCompost) compost;
tile.stopFromDropping = true; // tile.stopFromDropping = true;
tile.inv.setStackInSlot(0, new ItemStack(ActuallyItems.itemFertilizer, 10)); // tile.inv.setStackInSlot(0, new ItemStack(ActuallyItems.itemFertilizer, 10));
} // }
} // }
//
TileEntity ferment = this.getTileAtPos(world, 11, 1, 0, sbb); // TileEntity ferment = this.getTileAtPos(world, 11, 1, 0, sbb);
if (ferment instanceof TileEntityFermentingBarrel) { // if (ferment instanceof TileEntityFermentingBarrel) {
TileEntityFermentingBarrel tile = (TileEntityFermentingBarrel) ferment; // TileEntityFermentingBarrel tile = (TileEntityFermentingBarrel) ferment;
tile.stopFromDropping = true; // tile.stopFromDropping = true;
tile.canolaTank.setFluid(new FluidStack(InitFluids.fluidCanolaOil, world.rand.nextInt(1500) + 200)); // tile.canolaTank.setFluid(new FluidStack(InitFluids.fluidCanolaOil, world.rand.nextInt(1500) + 200));
} // }
//
TileEntity coffee = this.getTileAtPos(world, 4, 2, 6, sbb); // TileEntity coffee = this.getTileAtPos(world, 4, 2, 6, sbb);
if (coffee instanceof TileEntityCoffeeMachine) { // if (coffee instanceof TileEntityCoffeeMachine) {
TileEntityCoffeeMachine tile = (TileEntityCoffeeMachine) coffee; // TileEntityCoffeeMachine tile = (TileEntityCoffeeMachine) coffee;
tile.stopFromDropping = true; // tile.stopFromDropping = true;
tile.tank.setFluid(new FluidStack(FluidRegistry.WATER, world.rand.nextInt(3000) + 500)); // tile.tank.setFluid(new FluidStack(FluidRegistry.WATER, world.rand.nextInt(3000) + 500));
tile.coffeeCacheAmount = world.rand.nextInt(150); // tile.coffeeCacheAmount = world.rand.nextInt(150);
tile.storage.setEnergyStored(world.rand.nextInt(tile.storage.getMaxEnergyStored() / 2)); // tile.storage.setEnergyStored(world.rand.nextInt(tile.storage.getMaxEnergyStored() / 2));
} // }
//
TileEntity press = this.getTileAtPos(world, 2, 1, 5, sbb); // TileEntity press = this.getTileAtPos(world, 2, 1, 5, sbb);
if (press instanceof TileEntityCanolaPress) { // if (press instanceof TileEntityCanolaPress) {
TileEntityCanolaPress tile = (TileEntityCanolaPress) press; // TileEntityCanolaPress tile = (TileEntityCanolaPress) press;
tile.stopFromDropping = true; // tile.stopFromDropping = true;
tile.storage.setEnergyStored(world.rand.nextInt(tile.storage.getMaxEnergyStored() / 3)); // tile.storage.setEnergyStored(world.rand.nextInt(tile.storage.getMaxEnergyStored() / 3));
tile.inv.setStackInSlot(0, new ItemStack(ActuallyItems.itemCanola.get(), world.rand.nextInt(60) + 1)); // tile.inv.setStackInSlot(0, new ItemStack(ActuallyItems.itemCanola.get(), world.rand.nextInt(60) + 1));
} // }
//
TileEntity crusher = this.getTileAtPos(world, 2, 1, 6, sbb); // TileEntity crusher = this.getTileAtPos(world, 2, 1, 6, sbb);
if (crusher instanceof TileEntityGrinder) { // if (crusher instanceof TileEntityGrinder) {
TileEntityGrinder tile = (TileEntityGrinder) crusher; // TileEntityGrinder tile = (TileEntityGrinder) crusher;
tile.stopFromDropping = true; // tile.stopFromDropping = true;
tile.storage.setEnergyStored(world.rand.nextInt(tile.storage.getMaxEnergyStored() / 2)); // tile.storage.setEnergyStored(world.rand.nextInt(tile.storage.getMaxEnergyStored() / 2));
if (world.rand.nextFloat() >= 0.25F) { // if (world.rand.nextFloat() >= 0.25F) {
tile.inv.setStackInSlot(TileEntityGrinder.SLOT_INPUT_1, new ItemStack(ActuallyBlocks.blockMisc, world.rand.nextInt(10) + 1, TheMiscBlocks.ORE_QUARTZ.ordinal())); // tile.inv.setStackInSlot(TileEntityGrinder.SLOT_INPUT_1, new ItemStack(ActuallyBlocks.blockMisc, world.rand.nextInt(10) + 1, TheMiscBlocks.ORE_QUARTZ.ordinal()));
} // }
} // }
//
TileEntity coal = this.getTileAtPos(world, 5, 5, 6, sbb); // TileEntity coal = this.getTileAtPos(world, 5, 5, 6, sbb);
if (coal instanceof TileEntityCoalGenerator) { // if (coal instanceof TileEntityCoalGenerator) {
TileEntityCoalGenerator tile = (TileEntityCoalGenerator) coal; // TileEntityCoalGenerator tile = (TileEntityCoalGenerator) coal;
tile.stopFromDropping = true; // tile.stopFromDropping = true;
tile.inv.setStackInSlot(0, new ItemStack(Items.COAL, world.rand.nextInt(25) + 3, 1)); // tile.inv.setStackInSlot(0, new ItemStack(Items.COAL, world.rand.nextInt(25) + 3, 1));
} // }
//
TileEntity reconstructor = this.getTileAtPos(world, 8, 4, 3, sbb); // TileEntity reconstructor = this.getTileAtPos(world, 8, 4, 3, sbb);
if (reconstructor instanceof TileEntityAtomicReconstructor) { // if (reconstructor instanceof TileEntityAtomicReconstructor) {
((TileEntityAtomicReconstructor) reconstructor).stopFromDropping = true; // ((TileEntityAtomicReconstructor) reconstructor).stopFromDropping = true;
} // }
//
VillageComponentJamHouse.generateCrate(world, sbb, this.getXWithOffset(6, 4), this.getYWithOffset(4), this.getZWithOffset(6, 4), DungeonLoot.ENGINEER_HOUSE); // VillageComponentJamHouse.generateCrate(world, sbb, this.getXWithOffset(6, 4), this.getYWithOffset(4), this.getZWithOffset(6, 4), DungeonLoot.ENGINEER_HOUSE);
} // }
//
TileEntity firstRelay = this.getTileAtPos(world, 6, 5, 6, sbb); // TileEntity firstRelay = this.getTileAtPos(world, 6, 5, 6, sbb);
TileEntity secondRelay = this.getTileAtPos(world, 8, 5, 3, sbb); // TileEntity secondRelay = this.getTileAtPos(world, 8, 5, 3, sbb);
if (firstRelay instanceof TileEntityLaserRelayEnergy && secondRelay instanceof TileEntityLaserRelayEnergy) { // if (firstRelay instanceof TileEntityLaserRelayEnergy && secondRelay instanceof TileEntityLaserRelayEnergy) {
((TileEntityLaserRelayEnergy) firstRelay).stopFromDropping = true; // ((TileEntityLaserRelayEnergy) firstRelay).stopFromDropping = true;
((TileEntityLaserRelayEnergy) secondRelay).stopFromDropping = true; // ((TileEntityLaserRelayEnergy) secondRelay).stopFromDropping = true;
ActuallyAdditionsAPI.connectionHandler.addConnection(firstRelay.getPos(), secondRelay.getPos(), LaserType.ENERGY, world); // ActuallyAdditionsAPI.connectionHandler.addConnection(firstRelay.getPos(), secondRelay.getPos(), LaserType.ENERGY, world);
} // }
//
int meta = world.rand.nextInt(TheColoredLampColors.values().length); // int meta = world.rand.nextInt(TheColoredLampColors.values().length);
this.setBlockState(world, ActuallyBlocks.blockColoredLampOn.getDefaultState().withProperty(BlockColoredLamp.TYPE, BlockColoredLamp.ALL_LAMP_TYPES[meta]), 8, 1, 6, sbb); // this.setBlockState(world, ActuallyBlocks.blockColoredLampOn.getDefaultState().withProperty(BlockColoredLamp.TYPE, BlockColoredLamp.ALL_LAMP_TYPES[meta]), 8, 1, 6, sbb);
} // }
//
private void spawnActualHouse(World world, StructureBoundingBox sbb) { // private void spawnActualHouse(World world, StructureBoundingBox sbb) {
TemplateManager manager = world.getSaveHandler().getStructureTemplateManager(); // TemplateManager manager = world.getSaveHandler().getStructureTemplateManager();
MinecraftServer server = world.getMinecraftServer(); // MinecraftServer server = world.getMinecraftServer();
//
if (manager != null && server != null) { // if (manager != null && server != null) {
Direction facing = this.getCoordBaseMode(); // Direction facing = this.getCoordBaseMode();
//
Mirror mirror; // Mirror mirror;
Rotation rotation; // Rotation rotation;
if (facing == Direction.SOUTH) { // if (facing == Direction.SOUTH) {
mirror = Mirror.NONE; // mirror = Mirror.NONE;
rotation = Rotation.NONE; // rotation = Rotation.NONE;
} else if (facing == Direction.WEST) { // } else if (facing == Direction.WEST) {
mirror = Mirror.NONE; // mirror = Mirror.NONE;
rotation = Rotation.CLOCKWISE_90; // rotation = Rotation.CLOCKWISE_90;
} else if (facing == Direction.EAST) { // } else if (facing == Direction.EAST) {
mirror = Mirror.LEFT_RIGHT; // mirror = Mirror.LEFT_RIGHT;
rotation = Rotation.CLOCKWISE_90; // rotation = Rotation.CLOCKWISE_90;
} else { // } else {
mirror = Mirror.LEFT_RIGHT; // mirror = Mirror.LEFT_RIGHT;
rotation = Rotation.NONE; // rotation = Rotation.NONE;
} // }
//
PlacementSettings placement = new PlacementSettings().setRotation(rotation).setMirror(mirror).setBoundingBox(sbb); // PlacementSettings placement = new PlacementSettings().setRotation(rotation).setMirror(mirror).setBoundingBox(sbb);
Template template = manager.getTemplate(server, STRUCTURE_RES_LOC); // Template template = manager.getTemplate(server, STRUCTURE_RES_LOC);
//
if (template != null) { // if (template != null) {
template.addBlocksToWorld(world, new BlockPos(this.getXWithOffset(0, 0), this.getYWithOffset(0), this.getZWithOffset(0, 0)), placement); // template.addBlocksToWorld(world, new BlockPos(this.getXWithOffset(0, 0), this.getYWithOffset(0), this.getZWithOffset(0, 0)), placement);
} // }
} // }
} // }
//
private TileEntity getTileAtPos(World world, int x, int y, int z, StructureBoundingBox sbb) { // private TileEntity getTileAtPos(World world, int x, int y, int z, StructureBoundingBox sbb) {
BlockPos pos = new BlockPos(this.getXWithOffset(x, z), this.getYWithOffset(y), this.getZWithOffset(x, z)); // BlockPos pos = new BlockPos(this.getXWithOffset(x, z), this.getYWithOffset(y), this.getZWithOffset(x, z));
if (sbb.isVecInside(pos)) { // if (sbb.isVecInside(pos)) {
return world.getTileEntity(pos); // return world.getTileEntity(pos);
} else { // } else {
return null; // return null;
} // }
} // }
//
@Override // @Override
protected VillagerProfession chooseForgeProfession(int count, VillagerProfession prof) { // protected VillagerProfession chooseForgeProfession(int count, VillagerProfession prof) {
return InitVillager.engineerProfession; // return InitVillager.engineerProfession;
} // }
} //}

View file

@ -1,232 +1,232 @@
/* ///*
* This file ("VillageComponentJamHouse.java") is part of the Actually Additions mod for Minecraft. // * This file ("VillageComponentJamHouse.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed // * It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at // * under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense // * http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions // * View the source code at https://github.com/Ellpeck/ActuallyAdditions
* // *
* © 2015-2017 Ellpeck // * © 2015-2017 Ellpeck
*/ // */
//
package de.ellpeck.actuallyadditions.mod.gen.village.component; //package de.ellpeck.actuallyadditions.mod.gen.village.component;
//
import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks; //import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks;
import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues; //import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues;
import de.ellpeck.actuallyadditions.mod.gen.village.InitVillager; //import de.ellpeck.actuallyadditions.mod.gen.village.InitVillager;
import de.ellpeck.actuallyadditions.mod.misc.DungeonLoot; //import de.ellpeck.actuallyadditions.mod.misc.DungeonLoot;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityGiantChest; //import de.ellpeck.actuallyadditions.mod.tile.TileEntityGiantChest;
import net.minecraft.block.Block; //import net.minecraft.block.Block;
import net.minecraft.block.BlockState; //import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks; //import net.minecraft.block.Blocks;
import net.minecraft.tileentity.TileEntity; //import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Direction; //import net.minecraft.util.Direction;
import net.minecraft.util.ResourceLocation; //import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos; //import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World; //import net.minecraft.world.World;
import net.minecraft.world.gen.structure.StructureBoundingBox; //import net.minecraft.world.gen.structure.StructureBoundingBox;
import net.minecraft.world.gen.structure.StructureComponent; //import net.minecraft.world.gen.structure.StructureComponent;
import net.minecraft.world.gen.structure.StructureVillagePieces; //import net.minecraft.world.gen.structure.StructureVillagePieces;
import net.minecraftforge.fml.common.registry.VillagerRegistry.VillagerProfession; //import net.minecraftforge.fml.common.registry.VillagerRegistry.VillagerProfession;
//
import java.util.List; //import java.util.List;
import java.util.Random; //import java.util.Random;
//
public class VillageComponentJamHouse extends StructureVillagePieces.House1 { //public class VillageComponentJamHouse extends StructureVillagePieces.House1 {
//
private static final int X_SIZE = 11; // private static final int X_SIZE = 11;
private static final int Y_SIZE = 8; // private static final int Y_SIZE = 8;
private static final int Z_SIZE = 12; // private static final int Z_SIZE = 12;
//
private int averageGroundLevel = -1; // private int averageGroundLevel = -1;
//
public VillageComponentJamHouse() { // public VillageComponentJamHouse() {
//
} // }
//
public VillageComponentJamHouse(StructureBoundingBox boundingBox, Direction par5) { // public VillageComponentJamHouse(StructureBoundingBox boundingBox, Direction par5) {
this.setCoordBaseMode(par5); // this.setCoordBaseMode(par5);
this.boundingBox = boundingBox; // this.boundingBox = boundingBox;
} // }
//
public static VillageComponentJamHouse buildComponent(List<StructureComponent> pieces, int p1, int p2, int p3, Direction p4) { // public static VillageComponentJamHouse buildComponent(List<StructureComponent> pieces, int p1, int p2, int p3, Direction p4) {
StructureBoundingBox boundingBox = StructureBoundingBox.getComponentToAddBoundingBox(p1, p2, p3, 0, 0, 0, X_SIZE, Y_SIZE, Z_SIZE, p4); // StructureBoundingBox boundingBox = StructureBoundingBox.getComponentToAddBoundingBox(p1, p2, p3, 0, 0, 0, X_SIZE, Y_SIZE, Z_SIZE, p4);
return canVillageGoDeeper(boundingBox) && StructureComponent.findIntersecting(pieces, boundingBox) == null // return canVillageGoDeeper(boundingBox) && StructureComponent.findIntersecting(pieces, boundingBox) == null
? new VillageComponentJamHouse(boundingBox, p4) // ? new VillageComponentJamHouse(boundingBox, p4)
: null; // : null;
} // }
//
public static boolean generateCrate(World world, StructureBoundingBox box, int x, int y, int z, ResourceLocation loot) { // public static boolean generateCrate(World world, StructureBoundingBox box, int x, int y, int z, ResourceLocation loot) {
BlockPos pos = new BlockPos(x, y, z); // BlockPos pos = new BlockPos(x, y, z);
//
if (box.isVecInside(pos)) { // if (box.isVecInside(pos)) {
world.setBlockState(pos, ActuallyBlocks.blockGiantChest.getDefaultState(), 2); // world.setBlockState(pos, ActuallyBlocks.blockGiantChest.getDefaultState(), 2);
//
TileEntity tile = world.getTileEntity(pos); // TileEntity tile = world.getTileEntity(pos);
if (tile instanceof TileEntityGiantChest) { // if (tile instanceof TileEntityGiantChest) {
((TileEntityGiantChest) tile).lootTable = loot; // ((TileEntityGiantChest) tile).lootTable = loot;
} // }
//
return true; // return true;
} else { // } else {
return false; // return false;
} // }
} // }
//
@Override // @Override
public boolean addComponentParts(World world, Random rand, StructureBoundingBox sbb) { // public boolean addComponentParts(World world, Random rand, StructureBoundingBox sbb) {
if (this.averageGroundLevel < 0) { // if (this.averageGroundLevel < 0) {
this.averageGroundLevel = this.getAverageGroundLevel(world, sbb); // this.averageGroundLevel = this.getAverageGroundLevel(world, sbb);
if (this.averageGroundLevel < 0) { // if (this.averageGroundLevel < 0) {
return true; // return true;
} // }
this.boundingBox.offset(0, this.averageGroundLevel - this.boundingBox.maxY + Y_SIZE - 1, 0); // this.boundingBox.offset(0, this.averageGroundLevel - this.boundingBox.maxY + Y_SIZE - 1, 0);
} // }
//
this.fillWithBlocks(world, sbb, 0, 0, 0, X_SIZE - 1, Y_SIZE - 1, Z_SIZE - 1, Blocks.AIR); // this.fillWithBlocks(world, sbb, 0, 0, 0, X_SIZE - 1, Y_SIZE - 1, Z_SIZE - 1, Blocks.AIR);
this.spawnActualHouse(world, rand, sbb); // this.spawnActualHouse(world, rand, sbb);
//
for (int i = 0; i < X_SIZE; i++) { // for (int i = 0; i < X_SIZE; i++) {
for (int j = 0; j < Z_SIZE; j++) { // for (int j = 0; j < Z_SIZE; j++) {
this.clearCurrentPositionBlocksUpwards(world, i, Y_SIZE, j, sbb); // this.clearCurrentPositionBlocksUpwards(world, i, Y_SIZE, j, sbb);
this.replaceAirAndLiquidDownwards(world, Blocks.COBBLESTONE.getDefaultState(), i, -1, j, sbb); // this.replaceAirAndLiquidDownwards(world, Blocks.COBBLESTONE.getDefaultState(), i, -1, j, sbb);
} // }
} // }
//
this.spawnVillagers(world, sbb, 3, 1, 3, 1); // this.spawnVillagers(world, sbb, 3, 1, 3, 1);
//
return true; // return true;
} // }
//
public void fillWithBlocks(World world, StructureBoundingBox sbb, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, Block block) { // public void fillWithBlocks(World world, StructureBoundingBox sbb, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, Block block) {
this.fillWithBlocks(world, sbb, minX, minY, minZ, maxX, maxY, maxZ, block.getDefaultState(), block.getDefaultState(), false); // this.fillWithBlocks(world, sbb, minX, minY, minZ, maxX, maxY, maxZ, block.getDefaultState(), block.getDefaultState(), false);
} // }
//
@SuppressWarnings("deprecation") // @SuppressWarnings("deprecation")
public void spawnActualHouse(World world, Random rand, StructureBoundingBox sbb) { // public void spawnActualHouse(World world, Random rand, StructureBoundingBox sbb) {
//Base // //Base
this.fillWithBlocks(world, sbb, 1, 0, 8, 9, 0, 10, Blocks.GRASS); // this.fillWithBlocks(world, sbb, 1, 0, 8, 9, 0, 10, Blocks.GRASS);
this.fillWithBlocks(world, sbb, 0, 0, 0, 1, 0, 7, Blocks.COBBLESTONE); // this.fillWithBlocks(world, sbb, 0, 0, 0, 1, 0, 7, Blocks.COBBLESTONE);
this.fillWithBlocks(world, sbb, 2, 0, 0, 4, 0, 1, Blocks.COBBLESTONE); // this.fillWithBlocks(world, sbb, 2, 0, 0, 4, 0, 1, Blocks.COBBLESTONE);
this.fillWithBlocks(world, sbb, 9, 0, 0, 10, 0, 7, Blocks.COBBLESTONE); // this.fillWithBlocks(world, sbb, 9, 0, 0, 10, 0, 7, Blocks.COBBLESTONE);
this.fillWithBlocks(world, sbb, 6, 0, 0, 8, 0, 1, Blocks.COBBLESTONE); // this.fillWithBlocks(world, sbb, 6, 0, 0, 8, 0, 1, Blocks.COBBLESTONE);
this.setBlockState(world, Blocks.STONE_STAIRS.getStateFromMeta(3), 5, 0, 0, sbb); // this.setBlockState(world, Blocks.STONE_STAIRS.getStateFromMeta(3), 5, 0, 0, sbb);
this.fillWithBlocks(world, sbb, 2, 0, 7, 3, 0, 7, Blocks.COBBLESTONE); // this.fillWithBlocks(world, sbb, 2, 0, 7, 3, 0, 7, Blocks.COBBLESTONE);
this.fillWithBlocks(world, sbb, 5, 0, 7, 8, 0, 7, Blocks.COBBLESTONE); // this.fillWithBlocks(world, sbb, 5, 0, 7, 8, 0, 7, Blocks.COBBLESTONE);
this.fillWithBlocks(world, sbb, 10, 0, 8, 10, 0, 11, Blocks.COBBLESTONE); // this.fillWithBlocks(world, sbb, 10, 0, 8, 10, 0, 11, Blocks.COBBLESTONE);
this.fillWithBlocks(world, sbb, 0, 0, 8, 0, 0, 11, Blocks.COBBLESTONE); // this.fillWithBlocks(world, sbb, 0, 0, 8, 0, 0, 11, Blocks.COBBLESTONE);
this.fillWithBlocks(world, sbb, 0, 0, 11, 10, 0, 11, Blocks.COBBLESTONE); // this.fillWithBlocks(world, sbb, 0, 0, 11, 10, 0, 11, Blocks.COBBLESTONE);
this.fillWithBlocks(world, sbb, 2, 0, 2, 8, 0, 6, Blocks.PLANKS.getStateFromMeta(1), Blocks.PLANKS.getStateFromMeta(1), false); // this.fillWithBlocks(world, sbb, 2, 0, 2, 8, 0, 6, Blocks.PLANKS.getStateFromMeta(1), Blocks.PLANKS.getStateFromMeta(1), false);
this.setBlockState(world, Blocks.PLANKS.getStateFromMeta(1), 5, 0, 1, sbb); // this.setBlockState(world, Blocks.PLANKS.getStateFromMeta(1), 5, 0, 1, sbb);
this.setBlockState(world, Blocks.PLANKS.getStateFromMeta(1), 4, 0, 7, sbb); // this.setBlockState(world, Blocks.PLANKS.getStateFromMeta(1), 4, 0, 7, sbb);
//
//Garden FENCE // //Garden FENCE
this.fillWithBlocks(world, sbb, 0, 1, 8, 0, 1, 11, Blocks.OAK_FENCE); // this.fillWithBlocks(world, sbb, 0, 1, 8, 0, 1, 11, Blocks.OAK_FENCE);
this.fillWithBlocks(world, sbb, 10, 1, 8, 10, 1, 11, Blocks.OAK_FENCE); // this.fillWithBlocks(world, sbb, 10, 1, 8, 10, 1, 11, Blocks.OAK_FENCE);
this.fillWithBlocks(world, sbb, 1, 1, 11, 9, 1, 11, Blocks.OAK_FENCE); // this.fillWithBlocks(world, sbb, 1, 1, 11, 9, 1, 11, Blocks.OAK_FENCE);
//
//Side Walls // //Side Walls
for (int i = 0; i < 2; i++) { // for (int i = 0; i < 2; i++) {
this.fillWithBlocks(world, sbb, 1 + i * 8, 1, 1, 1 + i * 8, 1, 7, Blocks.COBBLESTONE); // this.fillWithBlocks(world, sbb, 1 + i * 8, 1, 1, 1 + i * 8, 1, 7, Blocks.COBBLESTONE);
this.fillWithBlocks(world, sbb, 1 + i * 8, 1, 1, 1 + i * 8, 4, 1, Blocks.COBBLESTONE); // this.fillWithBlocks(world, sbb, 1 + i * 8, 1, 1, 1 + i * 8, 4, 1, Blocks.COBBLESTONE);
this.fillWithBlocks(world, sbb, 1 + i * 8, 1, 7, 1 + i * 8, 4, 7, Blocks.COBBLESTONE); // this.fillWithBlocks(world, sbb, 1 + i * 8, 1, 7, 1 + i * 8, 4, 7, Blocks.COBBLESTONE);
this.fillWithBlocks(world, sbb, 1 + i * 8, 4, 2, 1 + i * 8, 5, 6, Blocks.COBBLESTONE); // this.fillWithBlocks(world, sbb, 1 + i * 8, 4, 2, 1 + i * 8, 5, 6, Blocks.COBBLESTONE);
this.fillWithBlocks(world, sbb, 1 + i * 8, 3, 2, 1 + i * 8, 3, 6, Blocks.PLANKS); // this.fillWithBlocks(world, sbb, 1 + i * 8, 3, 2, 1 + i * 8, 3, 6, Blocks.PLANKS);
this.setBlockState(world, Blocks.PLANKS.getStateFromMeta(0), 1 + i * 8, 2, 2, sbb); // this.setBlockState(world, Blocks.PLANKS.getStateFromMeta(0), 1 + i * 8, 2, 2, sbb);
this.setBlockState(world, Blocks.PLANKS.getStateFromMeta(0), 1 + i * 8, 2, 6, sbb); // this.setBlockState(world, Blocks.PLANKS.getStateFromMeta(0), 1 + i * 8, 2, 6, sbb);
this.fillWithBlocks(world, sbb, 1 + i * 8, 2, 3, 1 + i * 8, 2, 5, Blocks.GLASS_PANE); // this.fillWithBlocks(world, sbb, 1 + i * 8, 2, 3, 1 + i * 8, 2, 5, Blocks.GLASS_PANE);
} // }
//
//Front Wall // //Front Wall
this.fillWithBlocks(world, sbb, 7, 1, 1, 8, 4, 1, Blocks.COBBLESTONE); // this.fillWithBlocks(world, sbb, 7, 1, 1, 8, 4, 1, Blocks.COBBLESTONE);
this.fillWithBlocks(world, sbb, 2, 1, 1, 3, 4, 1, Blocks.COBBLESTONE); // this.fillWithBlocks(world, sbb, 2, 1, 1, 3, 4, 1, Blocks.COBBLESTONE);
this.fillWithBlocks(world, sbb, 4, 4, 1, 7, 4, 1, Blocks.COBBLESTONE); // this.fillWithBlocks(world, sbb, 4, 4, 1, 7, 4, 1, Blocks.COBBLESTONE);
this.fillWithBlocks(world, sbb, 6, 1, 1, 6, 3, 1, Blocks.PLANKS); // this.fillWithBlocks(world, sbb, 6, 1, 1, 6, 3, 1, Blocks.PLANKS);
this.fillWithBlocks(world, sbb, 4, 1, 1, 4, 3, 1, Blocks.PLANKS); // this.fillWithBlocks(world, sbb, 4, 1, 1, 4, 3, 1, Blocks.PLANKS);
this.fillWithBlocks(world, sbb, 5, 3, 1, 5, 3, 1, Blocks.PLANKS); // this.fillWithBlocks(world, sbb, 5, 3, 1, 5, 3, 1, Blocks.PLANKS);
this.setBlockState(world, Blocks.SPRUCE_DOOR.getDefaultState(), 5, 1, 1, sbb); // this.setBlockState(world, Blocks.SPRUCE_DOOR.getDefaultState(), 5, 1, 1, sbb);
this.setBlockState(world, Blocks.SPRUCE_DOOR.getDefaultState().withProperty(BlockDoor.HALF, BlockDoor.EnumDoorHalf.UPPER), 5, 2, 1, sbb); // this.setBlockState(world, Blocks.SPRUCE_DOOR.getDefaultState().withProperty(BlockDoor.HALF, BlockDoor.EnumDoorHalf.UPPER), 5, 2, 1, sbb);
//
//Back Wall // //Back Wall
this.fillWithBlocks(world, sbb, 2, 1, 7, 2, 4, 7, Blocks.COBBLESTONE); // this.fillWithBlocks(world, sbb, 2, 1, 7, 2, 4, 7, Blocks.COBBLESTONE);
this.fillWithBlocks(world, sbb, 3, 1, 7, 3, 3, 7, Blocks.PLANKS); // this.fillWithBlocks(world, sbb, 3, 1, 7, 3, 3, 7, Blocks.PLANKS);
this.fillWithBlocks(world, sbb, 4, 3, 7, 8, 3, 7, Blocks.PLANKS); // this.fillWithBlocks(world, sbb, 4, 3, 7, 8, 3, 7, Blocks.PLANKS);
this.fillWithBlocks(world, sbb, 3, 4, 7, 8, 4, 7, Blocks.COBBLESTONE); // this.fillWithBlocks(world, sbb, 3, 4, 7, 8, 4, 7, Blocks.COBBLESTONE);
this.fillWithBlocks(world, sbb, 5, 1, 7, 5, 2, 7, Blocks.PLANKS); // this.fillWithBlocks(world, sbb, 5, 1, 7, 5, 2, 7, Blocks.PLANKS);
this.fillWithBlocks(world, sbb, 6, 1, 7, 8, 1, 7, Blocks.COBBLESTONE); // this.fillWithBlocks(world, sbb, 6, 1, 7, 8, 1, 7, Blocks.COBBLESTONE);
this.fillWithBlocks(world, sbb, 6, 2, 7, 7, 2, 7, Blocks.GLASS_PANE); // this.fillWithBlocks(world, sbb, 6, 2, 7, 7, 2, 7, Blocks.GLASS_PANE);
this.setBlockState(world, Blocks.PLANKS.getStateFromMeta(0), 8, 2, 7, sbb); // this.setBlockState(world, Blocks.PLANKS.getStateFromMeta(0), 8, 2, 7, sbb);
this.setBlockState(world, Blocks.SPRUCE_DOOR.getDefaultState().withProperty(BlockDoor.FACING, Direction.SOUTH), 4, 1, 7, sbb); // this.setBlockState(world, Blocks.SPRUCE_DOOR.getDefaultState().withProperty(BlockDoor.FACING, Direction.SOUTH), 4, 1, 7, sbb);
this.setBlockState(world, Blocks.SPRUCE_DOOR.getDefaultState().withProperty(BlockDoor.FACING, Direction.SOUTH).withProperty(BlockDoor.HALF, BlockDoor.EnumDoorHalf.UPPER), 4, 2, 7, sbb); // this.setBlockState(world, Blocks.SPRUCE_DOOR.getDefaultState().withProperty(BlockDoor.FACING, Direction.SOUTH).withProperty(BlockDoor.HALF, BlockDoor.EnumDoorHalf.UPPER), 4, 2, 7, sbb);
//
//FENCE Supports // //FENCE Supports
this.fillWithBlocks(world, sbb, 0, 1, 8, 0, 3, 8, Blocks.OAK_FENCE); // this.fillWithBlocks(world, sbb, 0, 1, 8, 0, 3, 8, Blocks.OAK_FENCE);
this.fillWithBlocks(world, sbb, 10, 1, 8, 10, 3, 8, Blocks.OAK_FENCE); // this.fillWithBlocks(world, sbb, 10, 1, 8, 10, 3, 8, Blocks.OAK_FENCE);
this.fillWithBlocks(world, sbb, 0, 1, 0, 0, 3, 0, Blocks.OAK_FENCE); // this.fillWithBlocks(world, sbb, 0, 1, 0, 0, 3, 0, Blocks.OAK_FENCE);
this.fillWithBlocks(world, sbb, 10, 1, 0, 10, 3, 0, Blocks.OAK_FENCE); // this.fillWithBlocks(world, sbb, 10, 1, 0, 10, 3, 0, Blocks.OAK_FENCE);
//
//Roof // //Roof
this.fillWithBlocks(world, sbb, 1, 6, 3, 9, 6, 5, Blocks.PLANKS); // this.fillWithBlocks(world, sbb, 1, 6, 3, 9, 6, 5, Blocks.PLANKS);
BlockState stairSouth = Blocks.OAK_STAIRS.getDefaultState().withProperty(BlockStairs.FACING, Direction.SOUTH); // BlockState stairSouth = Blocks.OAK_STAIRS.getDefaultState().withProperty(BlockStairs.FACING, Direction.SOUTH);
BlockState stairNorth = Blocks.OAK_STAIRS.getDefaultState().withProperty(BlockStairs.FACING, Direction.NORTH); // BlockState stairNorth = Blocks.OAK_STAIRS.getDefaultState().withProperty(BlockStairs.FACING, Direction.NORTH);
this.fillWithBlocks(world, sbb, 0, 4, 0, 10, 4, 0, stairNorth, stairNorth, false); // this.fillWithBlocks(world, sbb, 0, 4, 0, 10, 4, 0, stairNorth, stairNorth, false);
this.fillWithBlocks(world, sbb, 0, 5, 1, 10, 5, 1, stairNorth, stairNorth, false); // this.fillWithBlocks(world, sbb, 0, 5, 1, 10, 5, 1, stairNorth, stairNorth, false);
this.fillWithBlocks(world, sbb, 0, 6, 2, 10, 6, 2, stairNorth, stairNorth, false); // this.fillWithBlocks(world, sbb, 0, 6, 2, 10, 6, 2, stairNorth, stairNorth, false);
this.fillWithBlocks(world, sbb, 0, 4, 8, 10, 4, 8, stairSouth, stairSouth, false); // this.fillWithBlocks(world, sbb, 0, 4, 8, 10, 4, 8, stairSouth, stairSouth, false);
this.fillWithBlocks(world, sbb, 0, 5, 7, 10, 5, 7, stairSouth, stairSouth, false); // this.fillWithBlocks(world, sbb, 0, 5, 7, 10, 5, 7, stairSouth, stairSouth, false);
this.fillWithBlocks(world, sbb, 0, 6, 6, 10, 6, 6, stairSouth, stairSouth, false); // this.fillWithBlocks(world, sbb, 0, 6, 6, 10, 6, 6, stairSouth, stairSouth, false);
this.fillWithBlocks(world, sbb, 0, 7, 3, 10, 7, 5, Blocks.WOODEN_SLAB); // this.fillWithBlocks(world, sbb, 0, 7, 3, 10, 7, 5, Blocks.WOODEN_SLAB);
//
//Roof Gadgets // //Roof Gadgets
this.setBlockState(world, Blocks.PLANKS.getDefaultState(), 0, 4, 1, sbb); // this.setBlockState(world, Blocks.PLANKS.getDefaultState(), 0, 4, 1, sbb);
this.setBlockState(world, Blocks.PLANKS.getDefaultState(), 0, 5, 2, sbb); // this.setBlockState(world, Blocks.PLANKS.getDefaultState(), 0, 5, 2, sbb);
this.setBlockState(world, Blocks.PLANKS.getDefaultState(), 10, 4, 1, sbb); // this.setBlockState(world, Blocks.PLANKS.getDefaultState(), 10, 4, 1, sbb);
this.setBlockState(world, Blocks.PLANKS.getDefaultState(), 10, 5, 2, sbb); // this.setBlockState(world, Blocks.PLANKS.getDefaultState(), 10, 5, 2, sbb);
this.setBlockState(world, Blocks.PLANKS.getDefaultState(), 0, 4, 7, sbb); // this.setBlockState(world, Blocks.PLANKS.getDefaultState(), 0, 4, 7, sbb);
this.setBlockState(world, Blocks.PLANKS.getDefaultState(), 0, 5, 6, sbb); // this.setBlockState(world, Blocks.PLANKS.getDefaultState(), 0, 5, 6, sbb);
this.setBlockState(world, Blocks.PLANKS.getDefaultState(), 10, 4, 7, sbb); // this.setBlockState(world, Blocks.PLANKS.getDefaultState(), 10, 4, 7, sbb);
this.setBlockState(world, Blocks.PLANKS.getDefaultState(), 10, 5, 6, sbb); // this.setBlockState(world, Blocks.PLANKS.getDefaultState(), 10, 5, 6, sbb);
this.fillWithBlocks(world, sbb, 0, 6, 3, 0, 6, 5, Blocks.PLANKS); // this.fillWithBlocks(world, sbb, 0, 6, 3, 0, 6, 5, Blocks.PLANKS);
this.fillWithBlocks(world, sbb, 10, 6, 3, 10, 6, 5, Blocks.PLANKS); // this.fillWithBlocks(world, sbb, 10, 6, 3, 10, 6, 5, Blocks.PLANKS);
//
//Counter // //Counter
this.fillWithBlocks(world, sbb, 6, 3, 2, 6, 3, 4, Blocks.WOODEN_SLAB.getStateFromMeta(8), Blocks.WOODEN_SLAB.getStateFromMeta(8), false); // this.fillWithBlocks(world, sbb, 6, 3, 2, 6, 3, 4, Blocks.WOODEN_SLAB.getStateFromMeta(8), Blocks.WOODEN_SLAB.getStateFromMeta(8), false);
this.fillWithBlocks(world, sbb, 5, 3, 4, 5, 3, 6, Blocks.WOODEN_SLAB.getStateFromMeta(8), Blocks.WOODEN_SLAB.getStateFromMeta(8), false); // this.fillWithBlocks(world, sbb, 5, 3, 4, 5, 3, 6, Blocks.WOODEN_SLAB.getStateFromMeta(8), Blocks.WOODEN_SLAB.getStateFromMeta(8), false);
this.fillWithBlocks(world, sbb, 6, 1, 2, 6, 1, 4, Blocks.PLANKS); // this.fillWithBlocks(world, sbb, 6, 1, 2, 6, 1, 4, Blocks.PLANKS);
this.fillWithBlocks(world, sbb, 5, 1, 4, 5, 1, 5, Blocks.PLANKS); // this.fillWithBlocks(world, sbb, 5, 1, 4, 5, 1, 5, Blocks.PLANKS);
this.fillWithBlocks(world, sbb, 6, 4, 2, 6, 5, 2, Blocks.OAK_FENCE); // this.fillWithBlocks(world, sbb, 6, 4, 2, 6, 5, 2, Blocks.OAK_FENCE);
this.fillWithBlocks(world, sbb, 5, 4, 4, 5, 5, 4, Blocks.OAK_FENCE); // this.fillWithBlocks(world, sbb, 5, 4, 4, 5, 5, 4, Blocks.OAK_FENCE);
this.fillWithBlocks(world, sbb, 5, 4, 6, 5, 5, 6, Blocks.OAK_FENCE); // this.fillWithBlocks(world, sbb, 5, 4, 6, 5, 5, 6, Blocks.OAK_FENCE);
//
//Decoration // //Decoration
this.setBlockState(world, Blocks.OAK_FENCE.getDefaultState(), 2, 1, 2, sbb); // this.setBlockState(world, Blocks.OAK_FENCE.getDefaultState(), 2, 1, 2, sbb);
this.setBlockState(world, Blocks.LEAVES.getDefaultState().withProperty(BlockLeaves.DECAYABLE, false), 2, 2, 2, sbb); // this.setBlockState(world, Blocks.LEAVES.getDefaultState().withProperty(BlockLeaves.DECAYABLE, false), 2, 2, 2, sbb);
this.setBlockState(world, Blocks.OAK_FENCE.getDefaultState(), 8, 1, 2, sbb); // this.setBlockState(world, Blocks.OAK_FENCE.getDefaultState(), 8, 1, 2, sbb);
this.setBlockState(world, Blocks.LEAVES.getDefaultState().withProperty(BlockLeaves.DECAYABLE, false), 8, 2, 2, sbb); // this.setBlockState(world, Blocks.LEAVES.getDefaultState().withProperty(BlockLeaves.DECAYABLE, false), 8, 2, 2, sbb);
this.setBlockState(world, Blocks.OAK_FENCE.getDefaultState(), 2, 1, 6, sbb); // this.setBlockState(world, Blocks.OAK_FENCE.getDefaultState(), 2, 1, 6, sbb);
this.setBlockState(world, Blocks.LEAVES.getDefaultState().withProperty(BlockLeaves.DECAYABLE, false), 2, 2, 6, sbb); // this.setBlockState(world, Blocks.LEAVES.getDefaultState().withProperty(BlockLeaves.DECAYABLE, false), 2, 2, 6, sbb);
BlockState stairWest = Blocks.OAK_STAIRS.getDefaultState().withProperty(BlockStairs.FACING, Direction.WEST); // BlockState stairWest = Blocks.OAK_STAIRS.getDefaultState().withProperty(BlockStairs.FACING, Direction.WEST);
this.fillWithBlocks(world, sbb, 2, 1, 3, 2, 1, 5, stairWest, stairWest, false); // this.fillWithBlocks(world, sbb, 2, 1, 3, 2, 1, 5, stairWest, stairWest, false);
this.fillWithBlocks(world, sbb, 3, 1, 2, 5, 1, 3, Blocks.CARPET.getStateFromMeta(10), Blocks.CARPET.getStateFromMeta(10), false); // this.fillWithBlocks(world, sbb, 3, 1, 2, 5, 1, 3, Blocks.CARPET.getStateFromMeta(10), Blocks.CARPET.getStateFromMeta(10), false);
this.fillWithBlocks(world, sbb, 3, 1, 4, 4, 1, 6, Blocks.CARPET.getStateFromMeta(10), Blocks.CARPET.getStateFromMeta(10), false); // this.fillWithBlocks(world, sbb, 3, 1, 4, 4, 1, 6, Blocks.CARPET.getStateFromMeta(10), Blocks.CARPET.getStateFromMeta(10), false);
//
//Loot Chest // //Loot Chest
if (ConfigBoolValues.DUNGEON_LOOT.isEnabled()) { // if (ConfigBoolValues.DUNGEON_LOOT.isEnabled()) {
generateCrate(world, this.boundingBox, this.getXWithOffset(8, 6), this.getYWithOffset(1), this.getZWithOffset(8, 6), DungeonLoot.JAM_HOUSE); // generateCrate(world, this.boundingBox, this.getXWithOffset(8, 6), this.getYWithOffset(1), this.getZWithOffset(8, 6), DungeonLoot.JAM_HOUSE);
} // }
//
//Torches // //Torches
this.setBlockState(world, Blocks.TORCH.getDefaultState().withProperty(BlockTorch.FACING, Direction.SOUTH), 6, 2, 0, sbb); // this.setBlockState(world, Blocks.TORCH.getDefaultState().withProperty(BlockTorch.FACING, Direction.SOUTH), 6, 2, 0, sbb);
this.setBlockState(world, Blocks.TORCH.getDefaultState().withProperty(BlockTorch.FACING, Direction.SOUTH), 4, 2, 0, sbb); // this.setBlockState(world, Blocks.TORCH.getDefaultState().withProperty(BlockTorch.FACING, Direction.SOUTH), 4, 2, 0, sbb);
this.setBlockState(world, Blocks.TORCH.getDefaultState().withProperty(BlockTorch.FACING, Direction.NORTH), 5, 2, 8, sbb); // this.setBlockState(world, Blocks.TORCH.getDefaultState().withProperty(BlockTorch.FACING, Direction.NORTH), 5, 2, 8, sbb);
this.setBlockState(world, Blocks.TORCH.getDefaultState().withProperty(BlockTorch.FACING, Direction.NORTH), 3, 2, 8, sbb); // this.setBlockState(world, Blocks.TORCH.getDefaultState().withProperty(BlockTorch.FACING, Direction.NORTH), 3, 2, 8, sbb);
this.setBlockState(world, Blocks.TORCH.getDefaultState().withProperty(BlockTorch.FACING, Direction.EAST), 2, 3, 2, sbb); // this.setBlockState(world, Blocks.TORCH.getDefaultState().withProperty(BlockTorch.FACING, Direction.EAST), 2, 3, 2, sbb);
this.setBlockState(world, Blocks.TORCH.getDefaultState().withProperty(BlockTorch.FACING, Direction.EAST), 2, 3, 6, sbb); // this.setBlockState(world, Blocks.TORCH.getDefaultState().withProperty(BlockTorch.FACING, Direction.EAST), 2, 3, 6, sbb);
this.setBlockState(world, Blocks.TORCH.getDefaultState().withProperty(BlockTorch.FACING, Direction.WEST), 8, 3, 2, sbb); // this.setBlockState(world, Blocks.TORCH.getDefaultState().withProperty(BlockTorch.FACING, Direction.WEST), 8, 3, 2, sbb);
this.setBlockState(world, Blocks.TORCH.getDefaultState().withProperty(BlockTorch.FACING, Direction.WEST), 8, 3, 6, sbb); // this.setBlockState(world, Blocks.TORCH.getDefaultState().withProperty(BlockTorch.FACING, Direction.WEST), 8, 3, 6, sbb);
} // }
//
@Override // @Override
protected VillagerProfession chooseForgeProfession(int count, VillagerProfession prof) { // protected VillagerProfession chooseForgeProfession(int count, VillagerProfession prof) {
return InitVillager.jamProfession; // return InitVillager.jamProfession;
} // }
} //}

View file

@ -1,38 +1,38 @@
/* ///*
* This file ("VillageCustomCropFieldHandler.java") is part of the Actually Additions mod for Minecraft. // * This file ("VillageCustomCropFieldHandler.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed // * It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at // * under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense // * http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions // * View the source code at https://github.com/Ellpeck/ActuallyAdditions
* // *
* © 2015-2017 Ellpeck // * © 2015-2017 Ellpeck
*/ // */
//
package de.ellpeck.actuallyadditions.mod.gen.village.component.handler; //package de.ellpeck.actuallyadditions.mod.gen.village.component.handler;
//
import java.util.List; //import java.util.List;
import java.util.Random; //import java.util.Random;
//
import de.ellpeck.actuallyadditions.mod.gen.village.component.VillageComponentCustomCropField; //import de.ellpeck.actuallyadditions.mod.gen.village.component.VillageComponentCustomCropField;
import net.minecraft.util.Direction; //import net.minecraft.util.Direction;
import net.minecraft.world.gen.structure.StructureComponent; //import net.minecraft.world.gen.structure.StructureComponent;
import net.minecraft.world.gen.structure.StructureVillagePieces; //import net.minecraft.world.gen.structure.StructureVillagePieces;
import net.minecraftforge.fml.common.registry.VillagerRegistry; //import net.minecraftforge.fml.common.registry.VillagerRegistry;
//
public class VillageCustomCropFieldHandler implements VillagerRegistry.IVillageCreationHandler { //public class VillageCustomCropFieldHandler implements VillagerRegistry.IVillageCreationHandler {
//
@Override // @Override
public StructureVillagePieces.PieceWeight getVillagePieceWeight(Random random, int i) { // public StructureVillagePieces.PieceWeight getVillagePieceWeight(Random random, int i) {
return new StructureVillagePieces.PieceWeight(VillageComponentCustomCropField.class, 5, 1); // return new StructureVillagePieces.PieceWeight(VillageComponentCustomCropField.class, 5, 1);
} // }
//
@Override // @Override
public Class<?> getComponentClass() { // public Class<?> getComponentClass() {
return VillageComponentCustomCropField.class; // return VillageComponentCustomCropField.class;
} // }
//
@Override // @Override
public StructureVillagePieces.Village buildComponent(StructureVillagePieces.PieceWeight villagePiece, StructureVillagePieces.Start startPiece, List<StructureComponent> pieces, Random random, int p1, int p2, int p3, Direction facing, int p5) { // public StructureVillagePieces.Village buildComponent(StructureVillagePieces.PieceWeight villagePiece, StructureVillagePieces.Start startPiece, List<StructureComponent> pieces, Random random, int p1, int p2, int p3, Direction facing, int p5) {
return VillageComponentCustomCropField.buildComponent(pieces, p1, p2, p3, facing); // return VillageComponentCustomCropField.buildComponent(pieces, p1, p2, p3, facing);
} // }
} //}

View file

@ -1,38 +1,38 @@
/* ///*
* This file ("VillageEngineerHouseHandler.java") is part of the Actually Additions mod for Minecraft. // * This file ("VillageEngineerHouseHandler.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed // * It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at // * under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense // * http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions // * View the source code at https://github.com/Ellpeck/ActuallyAdditions
* // *
* © 2015-2017 Ellpeck // * © 2015-2017 Ellpeck
*/ // */
//
package de.ellpeck.actuallyadditions.mod.gen.village.component.handler; //package de.ellpeck.actuallyadditions.mod.gen.village.component.handler;
//
import java.util.List; //import java.util.List;
import java.util.Random; //import java.util.Random;
//
import de.ellpeck.actuallyadditions.mod.gen.village.component.VillageComponentEngineerHouse; //import de.ellpeck.actuallyadditions.mod.gen.village.component.VillageComponentEngineerHouse;
import net.minecraft.util.Direction; //import net.minecraft.util.Direction;
import net.minecraft.world.gen.structure.StructureComponent; //import net.minecraft.world.gen.structure.StructureComponent;
import net.minecraft.world.gen.structure.StructureVillagePieces; //import net.minecraft.world.gen.structure.StructureVillagePieces;
import net.minecraftforge.fml.common.registry.VillagerRegistry; //import net.minecraftforge.fml.common.registry.VillagerRegistry;
//
public class VillageEngineerHouseHandler implements VillagerRegistry.IVillageCreationHandler { //public class VillageEngineerHouseHandler implements VillagerRegistry.IVillageCreationHandler {
//
@Override // @Override
public StructureVillagePieces.PieceWeight getVillagePieceWeight(Random random, int i) { // public StructureVillagePieces.PieceWeight getVillagePieceWeight(Random random, int i) {
return new StructureVillagePieces.PieceWeight(VillageComponentEngineerHouse.class, 10, 1); // return new StructureVillagePieces.PieceWeight(VillageComponentEngineerHouse.class, 10, 1);
} // }
//
@Override // @Override
public Class<?> getComponentClass() { // public Class<?> getComponentClass() {
return VillageComponentEngineerHouse.class; // return VillageComponentEngineerHouse.class;
} // }
//
@Override // @Override
public StructureVillagePieces.Village buildComponent(StructureVillagePieces.PieceWeight villagePiece, StructureVillagePieces.Start startPiece, List<StructureComponent> pieces, Random random, int p1, int p2, int p3, Direction facing, int p5) { // public StructureVillagePieces.Village buildComponent(StructureVillagePieces.PieceWeight villagePiece, StructureVillagePieces.Start startPiece, List<StructureComponent> pieces, Random random, int p1, int p2, int p3, Direction facing, int p5) {
return VillageComponentEngineerHouse.buildComponent(pieces, p1, p2, p3, facing); // return VillageComponentEngineerHouse.buildComponent(pieces, p1, p2, p3, facing);
} // }
} //}

View file

@ -1,38 +1,38 @@
/* ///*
* This file ("VillageJamHouseHandler.java") is part of the Actually Additions mod for Minecraft. // * This file ("VillageJamHouseHandler.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed // * It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at // * under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense // * http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions // * View the source code at https://github.com/Ellpeck/ActuallyAdditions
* // *
* © 2015-2017 Ellpeck // * © 2015-2017 Ellpeck
*/ // */
//
package de.ellpeck.actuallyadditions.mod.gen.village.component.handler; //package de.ellpeck.actuallyadditions.mod.gen.village.component.handler;
//
import java.util.List; //import java.util.List;
import java.util.Random; //import java.util.Random;
//
import de.ellpeck.actuallyadditions.mod.gen.village.component.VillageComponentJamHouse; //import de.ellpeck.actuallyadditions.mod.gen.village.component.VillageComponentJamHouse;
import net.minecraft.util.Direction; //import net.minecraft.util.Direction;
import net.minecraft.world.gen.structure.StructureComponent; //import net.minecraft.world.gen.structure.StructureComponent;
import net.minecraft.world.gen.structure.StructureVillagePieces; //import net.minecraft.world.gen.structure.StructureVillagePieces;
import net.minecraftforge.fml.common.registry.VillagerRegistry; //import net.minecraftforge.fml.common.registry.VillagerRegistry;
//
public class VillageJamHouseHandler implements VillagerRegistry.IVillageCreationHandler { //public class VillageJamHouseHandler implements VillagerRegistry.IVillageCreationHandler {
//
@Override // @Override
public StructureVillagePieces.PieceWeight getVillagePieceWeight(Random random, int i) { // public StructureVillagePieces.PieceWeight getVillagePieceWeight(Random random, int i) {
return new StructureVillagePieces.PieceWeight(VillageComponentJamHouse.class, 3, 1); // return new StructureVillagePieces.PieceWeight(VillageComponentJamHouse.class, 3, 1);
} // }
//
@Override // @Override
public Class<?> getComponentClass() { // public Class<?> getComponentClass() {
return VillageComponentJamHouse.class; // return VillageComponentJamHouse.class;
} // }
//
@Override // @Override
public StructureVillagePieces.Village buildComponent(StructureVillagePieces.PieceWeight villagePiece, StructureVillagePieces.Start startPiece, List<StructureComponent> pieces, Random random, int p1, int p2, int p3, Direction facing, int p5) { // public StructureVillagePieces.Village buildComponent(StructureVillagePieces.PieceWeight villagePiece, StructureVillagePieces.Start startPiece, List<StructureComponent> pieces, Random random, int p1, int p2, int p3, Direction facing, int p5) {
return VillageComponentJamHouse.buildComponent(pieces, p1, p2, p3, facing); // return VillageComponentJamHouse.buildComponent(pieces, p1, p2, p3, facing);
} // }
} //}

View file

@ -16,10 +16,12 @@ import de.ellpeck.actuallyadditions.mod.tile.TileEntityFurnaceDouble;
import de.ellpeck.actuallyadditions.mod.util.StackUtil; import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.inventory.Inventory;
import net.minecraft.inventory.container.Container; import net.minecraft.inventory.container.Container;
import net.minecraft.inventory.container.Slot; import net.minecraft.inventory.container.Slot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.item.crafting.IRecipe;
import net.minecraft.item.crafting.IRecipeType;
import net.minecraft.network.PacketBuffer; import net.minecraft.network.PacketBuffer;
import java.util.Objects; import java.util.Objects;
@ -73,8 +75,16 @@ public class ContainerFurnaceDouble extends Container {
} }
//Other Slots in Inventory excluded //Other Slots in Inventory excluded
else if (slot >= inventoryStart) { else if (slot >= inventoryStart) {
// TODO: VALIDATE
IRecipe<?> irecipe = this.furnace.getWorld().getRecipeManager().getRecipe(IRecipeType.SMELTING, new Inventory(newStack), this.furnace.getWorld()).orElse(null);
if (irecipe == null) {
return StackUtil.getEmpty();
}
ItemStack recipeOutput = irecipe.getRecipeOutput();
//Shift from Inventory //Shift from Inventory
if (StackUtil.isValid(FurnaceRecipes.instance().getSmeltingResult(newStack))) { if (StackUtil.isValid(recipeOutput)) {
if (!this.mergeItemStack(newStack, TileEntityFurnaceDouble.SLOT_INPUT_1, TileEntityFurnaceDouble.SLOT_INPUT_1 + 1, false)) { if (!this.mergeItemStack(newStack, TileEntityFurnaceDouble.SLOT_INPUT_1, TileEntityFurnaceDouble.SLOT_INPUT_1 + 1, false)) {
if (!this.mergeItemStack(newStack, TileEntityFurnaceDouble.SLOT_INPUT_2, TileEntityFurnaceDouble.SLOT_INPUT_2 + 1, false)) { if (!this.mergeItemStack(newStack, TileEntityFurnaceDouble.SLOT_INPUT_2, TileEntityFurnaceDouble.SLOT_INPUT_2 + 1, false)) {
return StackUtil.getEmpty(); return StackUtil.getEmpty();

View file

@ -10,24 +10,24 @@
package de.ellpeck.actuallyadditions.mod.inventory.gui; package de.ellpeck.actuallyadditions.mod.inventory.gui;
import com.mojang.blaze3d.matrix.MatrixStack;
import de.ellpeck.actuallyadditions.mod.inventory.ContainerFireworkBox; import de.ellpeck.actuallyadditions.mod.inventory.ContainerFireworkBox;
import de.ellpeck.actuallyadditions.mod.network.PacketHandlerHelper;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityFireworkBox;
import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
import net.minecraft.client.gui.screen.inventory.ContainerScreen; import net.minecraft.client.gui.screen.inventory.ContainerScreen;
import net.minecraft.tileentity.TileEntity; import net.minecraft.client.gui.widget.AbstractSlider;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.text.ITextComponent;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
// TODO: FIX ME
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
public class GuiFireworkBox extends ContainerScreen<ContainerFireworkBox> implements GuiResponder { public class GuiFireworkBox extends ContainerScreen<ContainerFireworkBox> {
private final TileEntityFireworkBox tile; // private final TileEntityFireworkBox tile;
public GuiFireworkBox(TileEntity tile) { public GuiFireworkBox(ContainerFireworkBox screenContainer, PlayerInventory inv, ITextComponent titleIn) {
super(new ContainerFireworkBox()); super(screenContainer, inv, titleIn);
this.tile = (TileEntityFireworkBox) tile; // this.tile = tile.;
this.xSize = 300; this.xSize = 300;
this.ySize = 120; this.ySize = 120;
} }
@ -35,77 +35,98 @@ public class GuiFireworkBox extends ContainerScreen<ContainerFireworkBox> implem
@Override @Override
public void init() { public void init() {
super.init(); super.init();
//
this.addButton(new CustomSlider(this, 0, this.guiLeft, this.guiTop, "Value Play", 0F, 5F, this.tile.intValuePlay, IntFormatter.INSTANCE)); // this.addButton(new CustomSlider(this.guiLeft, this.guiTop, "Value Play", 0F, 5F, this.tile.intValuePlay, IntFormatter.INSTANCE));
this.addButton(new CustomSlider(this, 1, this.guiLeft, this.guiTop + 20, "Average Charge Amount", 1F, 4F, this.tile.chargeAmount, IntFormatter.INSTANCE)); // this.addButton(new CustomSlider(this.guiLeft, this.guiTop + 20, "Average Charge Amount", 1F, 4F, this.tile.chargeAmount, IntFormatter.INSTANCE));
this.addButton(new CustomSlider(this, 2, this.guiLeft, this.guiTop + 40, "Average Flight Time", 1F, 3F, this.tile.flightTime, IntFormatter.INSTANCE)); // this.addButton(new CustomSlider(this.guiLeft, this.guiTop + 40, "Average Flight Time", 1F, 3F, this.tile.flightTime, IntFormatter.INSTANCE));
this.addButton(new CustomSlider(this, 3, this.guiLeft, this.guiTop + 60, "Effect Chance", 0F, 1F, this.tile.trailOrFlickerChance, null)); // this.addButton(new CustomSlider(this.guiLeft, this.guiTop + 60, "Effect Chance", 0F, 1F, this.tile.trailOrFlickerChance, null));
this.addButton(new CustomSlider(this, 4, this.guiLeft, this.guiTop + 80, "Flicker/Trail Ratio", 0F, 1F, this.tile.flickerChance, null)); // this.addButton(new CustomSlider(this.guiLeft, this.guiTop + 80, "Flicker/Trail Ratio", 0F, 1F, this.tile.flickerChance, null));
this.addButton(new CustomSlider(this, 5, this.guiLeft, this.guiTop + 100, "Color Amount", 1, 6, this.tile.colorAmount, IntFormatter.INSTANCE)); // this.addButton(new CustomSlider(this.guiLeft, this.guiTop + 100, "Color Amount", 1, 6, this.tile.colorAmount, IntFormatter.INSTANCE));
//
this.addButton(new CustomSlider(this, 6, this.guiLeft + 150, this.guiTop, "Small Ball", 0F, 1F, this.tile.typeChance0, null)); // this.addButton(new CustomSlider(this.guiLeft + 150, this.guiTop, "Small Ball", 0F, 1F, this.tile.typeChance0, null));
this.addButton(new CustomSlider(this, 7, this.guiLeft + 150, this.guiTop + 20, "Large Ball", 0F, 1F, this.tile.typeChance1, null)); // this.addButton(new CustomSlider(this.guiLeft + 150, this.guiTop + 20, "Large Ball", 0F, 1F, this.tile.typeChance1, null));
this.addButton(new CustomSlider(this, 8, this.guiLeft + 150, this.guiTop + 40, "Star Shape", 0F, 1F, this.tile.typeChance2, null)); // this.addButton(new CustomSlider(this.guiLeft + 150, this.guiTop + 40, "Star Shape", 0F, 1F, this.tile.typeChance2, null));
this.addButton(new CustomSlider(this, 9, this.guiLeft + 150, this.guiTop + 60, "Creeper Shape", 0F, 1F, this.tile.typeChance3, null)); // this.addButton(new CustomSlider(this.guiLeft + 150, this.guiTop + 60, "Creeper Shape", 0F, 1F, this.tile.typeChance3, null));
this.addButton(new CustomSlider(this, 10, this.guiLeft + 150, this.guiTop + 80, "Burst", 0F, 1F, this.tile.typeChance4, null)); // this.addButton(new CustomSlider(this.guiLeft + 150, this.guiTop + 80, "Burst", 0F, 1F, this.tile.typeChance4, null));
//
this.addButton(new CustomSlider(this, 11, this.guiLeft + 150, this.guiTop + 100, "Area of Effect", 0, 4, this.tile.areaOfEffect, IntFormatter.INSTANCE)); // this.addButton(new CustomSlider(this, 11, this.guiLeft + 150, this.guiTop + 100, "Area of Effect", 0, 4, this.tile.areaOfEffect, IntFormatter.INSTANCE));
} }
@Override @Override
public void setEntryValue(int id, float value) { protected void drawGuiContainerBackgroundLayer(MatrixStack matrixStack, float partialTicks, int x, int y) {
Button button = this.buttonList.get(id);
if (button instanceof GuiSlider) {
if (!((GuiSlider) button).isMouseDown) {
System.out.println("SETTING VALUE FOR " + id + "!!");
PacketHandlerHelper.sendNumberPacket(this.tile, value, id);
}
}
}
@Override
protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) {
} }
@Override // TODO: FIX;
public void drawGuiContainerForegroundLayer(int x, int y) { // @Override
AssetUtil.displayNameString(this.font, this.xSize, -10, this.tile); // public void setEntryValue(int id, float value) {
// Button button = this.buttonList.get(id);
// if (button instanceof GuiSlider) {
// if (!((GuiSlider) button).isMouseDown) {
// System.out.println("SETTING VALUE FOR " + id + "!!");
// PacketHandlerHelper.sendNumberPacket(this.tile, value, id);
// }
// }
// }
// @Override
// protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) {
//
// }
//
// @Override
// public void drawGuiContainerForegroundLayer(int x, int y) {
// AssetUtil.displayNameString(this.font, this.xSize, -10, this.tile);
// }
//
// @Override
// public void setEntryValue(int id, boolean value) {
//}
// @Override
// public void setEntryValue(int id, String value) {
//
// }
// TODO: FIX
private static class CustomSlider extends AbstractSlider {
public CustomSlider(int x, int y, int width, int height, ITextComponent message, double defaultValue) {
super(x, y, width, height, message, defaultValue);
} }
@Override
public void setEntryValue(int id, boolean value) {
} // private final GuiResponder responder;
//
// public CustomSlider(GuiResponder guiResponder, int idIn, int x, int y, String name, float min, float max, float defaultValue, FormatHelper formatter) {
// super(guiResponder, idIn, x, y, name, min, max, defaultValue, formatter);
// this.responder = guiResponder;
// }
@Override // @Override
public void setEntryValue(int id, String value) {
}
private static class CustomSlider extends GuiSlider {
private final GuiResponder responder;
public CustomSlider(GuiResponder guiResponder, int idIn, int x, int y, String name, float min, float max, float defaultValue, FormatHelper formatter) {
super(guiResponder, idIn, x, y, name, min, max, defaultValue, formatter);
this.responder = guiResponder;
}
@Override
public void mouseReleased(int mouseX, int mouseY) { public void mouseReleased(int mouseX, int mouseY) {
super.mouseReleased(mouseX, mouseY); // super.mouseReleased(mouseX, mouseY);
this.responder.setEntryValue(this.id, this.getSliderValue()); // this.responder.setEntryValue(this.id, this.getSliderValue());
} }
}
private static class IntFormatter implements GuiSlider.FormatHelper {
public static final IntFormatter INSTANCE = new IntFormatter();
@Override @Override
public String getText(int id, String name, float value) { protected void func_230979_b_() {
return name + ": " + (int) value;
}
@Override
protected void func_230972_a_() {
} }
} }
//private static class IntFormatter implements GuiSlider.FormatHelper {
//
// public static final IntFormatter INSTANCE = new IntFormatter();
//
// @Override
// public String getText(int id, String name, float value) {
// return name + ": " + (int) value;
// }
//}
} }

View file

@ -10,6 +10,7 @@
package de.ellpeck.actuallyadditions.mod.inventory.gui; package de.ellpeck.actuallyadditions.mod.inventory.gui;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
@ -22,6 +23,7 @@ import net.minecraftforge.fml.client.gui.GuiUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
public class TexturedButton extends Button { public class TexturedButton extends Button {
@ -32,7 +34,7 @@ public class TexturedButton extends Button {
public int texturePosY; public int texturePosY;
public TexturedButton(ResourceLocation resLoc, int x, int y, int texturePosX, int texturePosY, int width, int height, IPressable pressable) { public TexturedButton(ResourceLocation resLoc, int x, int y, int texturePosX, int texturePosY, int width, int height, IPressable pressable) {
this(resLoc, x, y, texturePosX, texturePosY, width, height, new ArrayList<>()); this(resLoc, x, y, texturePosX, texturePosY, width, height, new ArrayList<>(), pressable);
} }
public TexturedButton(ResourceLocation resLoc, int x, int y, int texturePosX, int texturePosY, int width, int height, List<String> hoverTextList, IPressable pressable) { public TexturedButton(ResourceLocation resLoc, int x, int y, int texturePosX, int texturePosY, int width, int height, List<String> hoverTextList, IPressable pressable) {
@ -44,28 +46,27 @@ public class TexturedButton extends Button {
} }
@Override @Override
public void drawButton(Minecraft minecraft, int x, int y, float f) { public void render(MatrixStack matrices, int mouseX, int mouseY, float partialTicks) {
if (this.visible) { if (this.visible) {
minecraft.getTextureManager().bindTexture(this.resLoc); Minecraft.getInstance().getTextureManager().bindTexture(this.resLoc);
RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
this.hovered = x >= this.x && y >= this.y && x < this.x + this.width && y < this.y + this.height; this.isHovered = mouseX >= this.x && mouseY >= this.y && this.x < this.x + this.width && this.y < this.y + this.height;
int k = this.getHoverState(this.hovered); int k = this.isHovered
if (k == 0) { ? 1
k = 1; : 0;
}
GlStateManager.enableBlend(); GlStateManager.enableBlend();
GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0); GlStateManager.blendFuncSeparate(770, 771, 1, 0);
GlStateManager.blendFunc(770, 771); GlStateManager.blendFunc(770, 771);
this.blit(matrices, this.x, this.y, this.texturePosX, this.texturePosY - this.height + k * this.height, this.width, this.height); this.blit(matrices, this.x, this.y, this.texturePosX, this.texturePosY - this.height + k * this.height, this.width, this.height);
this.mouseDragged(minecraft, x, y); // this.mouseDragged(minecraft, x, y);
} }
} }
public void drawHover(int x, int y) { public void drawHover(MatrixStack matrices, int x, int y) {
if (this.isMouseOver()) { if (this.isMouseOver(x, y)) {
Minecraft mc = Minecraft.getInstance(); Minecraft mc = Minecraft.getInstance();
GuiUtils.drawHoveringText(this.textList, x, y, mc.displayWidth, mc.displayHeight, -1, mc.fontRenderer); GuiUtils.drawHoveringText(matrices, this.textList.stream().map(StringTextComponent::new).collect(Collectors.toList()), x, y, mc.currentScreen.width, mc.currentScreen.height, -1, mc.fontRenderer);
} }
} }
} }

View file

@ -14,31 +14,24 @@ import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.items.base.ItemEnergy; import de.ellpeck.actuallyadditions.mod.items.base.ItemEnergy;
import de.ellpeck.actuallyadditions.mod.util.ItemUtil; import de.ellpeck.actuallyadditions.mod.util.ItemUtil;
import de.ellpeck.actuallyadditions.mod.util.StackUtil; import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import de.ellpeck.actuallyadditions.mod.util.StringUtil;
import net.minecraft.client.util.ITooltipFlag; import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.ActionResult; import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.Hand; import net.minecraft.util.Hand;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TranslationTextComponent;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.energy.CapabilityEnergy; import net.minecraftforge.energy.CapabilityEnergy;
import net.minecraftforge.energy.IEnergyStorage;
import javax.annotation.Nullable;
import java.util.List; import java.util.List;
public class ItemBattery extends ItemEnergy { public class ItemBattery extends ItemEnergy {
public ItemBattery(int capacity, int transfer) { public ItemBattery(int capacity, int transfer) {
super(capacity, transfer); super(capacity, transfer);
this.setMaxStackSize(1);
}
@Override
public EnumRarity getRarity(ItemStack stack) {
return EnumRarity.RARE;
} }
@Override @Override
@ -47,21 +40,14 @@ public class ItemBattery extends ItemEnergy {
} }
@Override @Override
public void onUpdate(ItemStack stack, World world, Entity entity, int itemSlot, boolean isSelected) { public void inventoryTick(ItemStack stack, World world, Entity entity, int itemSlot, boolean isSelected) {
if (!world.isRemote && entity instanceof PlayerEntity && ItemUtil.isEnabled(stack) && !isSelected) { if (!world.isRemote && entity instanceof PlayerEntity && ItemUtil.isEnabled(stack) && !isSelected) {
PlayerEntity player = (PlayerEntity) entity; PlayerEntity player = (PlayerEntity) entity;
for (int i = 0; i < player.inventory.getSizeInventory(); i++) { for (int i = 0; i < player.inventory.getSizeInventory(); i++) {
ItemStack slot = player.inventory.getStackInSlot(i); ItemStack slot = player.inventory.getStackInSlot(i);
if (StackUtil.isValid(slot) && slot.getCount() == 1) { if (StackUtil.isValid(slot) && slot.getCount() == 1) {
int extractable = this.extractEnergy(stack, Integer.MAX_VALUE, true); int extractable = this.extractEnergy(stack, Integer.MAX_VALUE, true);
int received = 0; int received = slot.getCapability(CapabilityEnergy.ENERGY).map(e -> e.receiveEnergy(extractable, false)).orElse(0);
if (slot.hasCapability(CapabilityEnergy.ENERGY, null)) {
IEnergyStorage cap = slot.getCapability(CapabilityEnergy.ENERGY, null);
if (cap != null) {
received = cap.receiveEnergy(extractable, false);
}
}
if (received > 0) { if (received > 0) {
this.extractEnergy(stack, received, false); this.extractEnergy(stack, received, false);
@ -75,17 +61,17 @@ public class ItemBattery extends ItemEnergy {
public ActionResult<ItemStack> onItemRightClick(World worldIn, PlayerEntity player, Hand hand) { public ActionResult<ItemStack> onItemRightClick(World worldIn, PlayerEntity player, Hand hand) {
if (!worldIn.isRemote && player.isSneaking()) { if (!worldIn.isRemote && player.isSneaking()) {
ItemUtil.changeEnabled(player, hand); ItemUtil.changeEnabled(player, hand);
return new ActionResult<>(EnumActionResult.SUCCESS, player.getHeldItem(hand)); return ActionResult.resultSuccess(player.getHeldItem(hand));
} }
return super.onItemRightClick(worldIn, player, hand); return super.onItemRightClick(worldIn, player, hand);
} }
@Override @Override
public void addInformation(ItemStack stack, World playerIn, List<String> list, ITooltipFlag advanced) { public void addInformation(ItemStack stack, @Nullable World playerIn, List<ITextComponent> list, ITooltipFlag advanced) {
super.addInformation(stack, playerIn, list, advanced); super.addInformation(stack, playerIn, list, advanced);
list.add(StringUtil.localize("tooltip." + ActuallyAdditions.MODID + ".battery." + (ItemUtil.isEnabled(stack) list.add(new TranslationTextComponent("tooltip." + ActuallyAdditions.MODID + ".battery." + (ItemUtil.isEnabled(stack)
? "discharge" ? "discharge"
: "noDischarge"))); : "noDischarge")));
list.add(StringUtil.localize("tooltip." + ActuallyAdditions.MODID + ".battery.changeMode")); list.add(new TranslationTextComponent("tooltip." + ActuallyAdditions.MODID + ".battery.changeMode"));
} }
} }

View file

@ -32,7 +32,9 @@ import net.minecraft.util.ActionResult;
import net.minecraft.util.ActionResultType; import net.minecraft.util.ActionResultType;
import net.minecraft.util.Hand; import net.minecraft.util.Hand;
import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.RayTraceResult;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TextFormatting;
import net.minecraft.util.text.TranslationTextComponent;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
@ -75,18 +77,20 @@ public class ItemBooklet extends ItemBase implements IHudDisplay {
//TheAchievements.OPEN_BOOKLET.get(player); //TheAchievements.OPEN_BOOKLET.get(player);
//TheAchievements.OPEN_BOOKLET_MILESTONE.get(player); //TheAchievements.OPEN_BOOKLET_MILESTONE.get(player);
} }
return new ActionResult<>(EnumActionResult.SUCCESS, player.getHeldItem(hand)); return ActionResult.resultSuccess(player.getHeldItem(hand));
} }
@Override @Override
public void addInformation(ItemStack stack, @Nullable World playerIn, List<String> tooltip, ITooltipFlag advanced) { public void addInformation(ItemStack stack, @Nullable World playerIn, List<ITextComponent> tooltip, ITooltipFlag advanced) {
tooltip.add(StringUtil.localize("tooltip." + ActuallyAdditions.MODID + "." + this.getBaseName() + ".desc")); tooltip.add(new TranslationTextComponent("tooltip." + ActuallyAdditions.MODID + "." + this.getName().getString() + ".desc"));
// TODO: this is bad
for (int i = 1; i <= 4; i++) { for (int i = 1; i <= 4; i++) {
String format = i == 4 tooltip.add(new TranslationTextComponent("tooltip." + ActuallyAdditions.MODID + "." + this.getName().getString() + ".sub." + i).mergeStyle(i == 4
? TextFormatting.GOLD.toString() + TextFormatting.ITALIC ? TextFormatting.GOLD
: TextFormatting.RESET.toString(); : TextFormatting.RESET).mergeStyle(i == 4
tooltip.add(format + StringUtil.localize("tooltip." + ActuallyAdditions.MODID + "." + this.getBaseName() + ".sub." + i)); ? TextFormatting.ITALIC
: TextFormatting.RESET));
} }
} }

View file

@ -1,99 +1,99 @@
/* ///*
* This file ("ItemChestToCrateUpgrade.java") is part of the Actually Additions mod for Minecraft. // * This file ("ItemChestToCrateUpgrade.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed // * It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at // * under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense // * http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions // * View the source code at https://github.com/Ellpeck/ActuallyAdditions
* // *
* © 2015-2017 Ellpeck // * © 2015-2017 Ellpeck
*/ // */
//
package de.ellpeck.actuallyadditions.mod.items; //package de.ellpeck.actuallyadditions.mod.items;
//
import de.ellpeck.actuallyadditions.mod.items.base.ItemBase; //import de.ellpeck.actuallyadditions.mod.items.base.ItemBase;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityInventoryBase; //import de.ellpeck.actuallyadditions.mod.tile.TileEntityInventoryBase;
import de.ellpeck.actuallyadditions.mod.util.StackUtil; //import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.block.Block; //import net.minecraft.block.Block;
import net.minecraft.entity.player.PlayerEntity; //import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.IInventory; //import net.minecraft.inventory.IInventory;
import net.minecraft.item.EnumRarity; //import net.minecraft.item.EnumRarity;
import net.minecraft.item.ItemStack; //import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; //import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Direction; //import net.minecraft.util.Direction;
import net.minecraft.util.EnumActionResult; //import net.minecraft.util.EnumActionResult;
import net.minecraft.util.Hand; //import net.minecraft.util.Hand;
import net.minecraft.util.math.BlockPos; //import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World; //import net.minecraft.world.World;
import net.minecraftforge.items.IItemHandlerModifiable; //import net.minecraftforge.items.IItemHandlerModifiable;
import net.minecraftforge.items.wrapper.InvWrapper; //import net.minecraftforge.items.wrapper.InvWrapper;
//
public class ItemChestToCrateUpgrade extends ItemBase { //public class ItemChestToCrateUpgrade extends ItemBase {
//
private final Class<? extends TileEntity> start; // private final Class<? extends TileEntity> start;
private final BlockState end; // private final BlockState end;
//
public ItemChestToCrateUpgrade(String name, Class<? extends TileEntity> start, BlockState end) { // public ItemChestToCrateUpgrade(String name, Class<? extends TileEntity> start, BlockState end) {
super(name); // super(name);
this.start = start; // this.start = start;
this.end = end; // this.end = end;
} // }
//
@Override // @Override
public EnumActionResult onItemUseFirst(PlayerEntity player, World world, BlockPos pos, Direction side, float hitX, float hitY, float hitZ, Hand hand) { // public EnumActionResult onItemUseFirst(PlayerEntity player, World world, BlockPos pos, Direction side, float hitX, float hitY, float hitZ, Hand hand) {
ItemStack heldStack = player.getHeldItem(hand); // ItemStack heldStack = player.getHeldItem(hand);
if (player.isSneaking()) { // if (player.isSneaking()) {
TileEntity tileHit = world.getTileEntity(pos); // TileEntity tileHit = world.getTileEntity(pos);
if (tileHit != null && this.start.isInstance(tileHit)) { // if (tileHit != null && this.start.isInstance(tileHit)) {
if (!world.isRemote) { // if (!world.isRemote) {
//
//Copy Slots // //Copy Slots
IItemHandlerModifiable chest = null; // IItemHandlerModifiable chest = null;
if (tileHit instanceof IInventory) { // if (tileHit instanceof IInventory) {
chest = new InvWrapper((IInventory) tileHit); // chest = new InvWrapper((IInventory) tileHit);
} else if (tileHit instanceof TileEntityInventoryBase) { // } else if (tileHit instanceof TileEntityInventoryBase) {
chest = ((TileEntityInventoryBase) tileHit).inv; // chest = ((TileEntityInventoryBase) tileHit).inv;
} // }
//
if (chest != null) { // if (chest != null) {
ItemStack[] stacks = new ItemStack[chest.getSlots()]; // ItemStack[] stacks = new ItemStack[chest.getSlots()];
for (int i = 0; i < stacks.length; i++) { // for (int i = 0; i < stacks.length; i++) {
ItemStack aStack = chest.getStackInSlot(i); // ItemStack aStack = chest.getStackInSlot(i);
stacks[i] = aStack.copy(); // stacks[i] = aStack.copy();
} // }
//
//Set New Block // //Set New Block
world.playEvent(2001, pos, Block.getStateId(world.getBlockState(pos))); // world.playEvent(2001, pos, Block.getStateId(world.getBlockState(pos)));
//
world.removeTileEntity(pos); // world.removeTileEntity(pos);
world.setBlockState(pos, this.end, 2); // world.setBlockState(pos, this.end, 2);
if (!player.isCreative()) { // if (!player.isCreative()) {
heldStack.shrink(1); // heldStack.shrink(1);
} // }
//
//Copy Items into new Chest // //Copy Items into new Chest
TileEntity newTileHit = world.getTileEntity(pos); // TileEntity newTileHit = world.getTileEntity(pos);
if (newTileHit instanceof TileEntityInventoryBase) { // if (newTileHit instanceof TileEntityInventoryBase) {
IItemHandlerModifiable newChest = ((TileEntityInventoryBase) newTileHit).inv; // IItemHandlerModifiable newChest = ((TileEntityInventoryBase) newTileHit).inv;
//
for (int i = 0; i < stacks.length; i++) { // for (int i = 0; i < stacks.length; i++) {
if (StackUtil.isValid(stacks[i])) { // if (StackUtil.isValid(stacks[i])) {
if (newChest.getSlots() > i) { // if (newChest.getSlots() > i) {
newChest.setStackInSlot(i, stacks[i].copy()); // newChest.setStackInSlot(i, stacks[i].copy());
} // }
} // }
} // }
} // }
} // }
} // }
return EnumActionResult.SUCCESS; // return EnumActionResult.SUCCESS;
} // }
} // }
//
return EnumActionResult.PASS; // return EnumActionResult.PASS;
} // }
//
@Override // @Override
public EnumRarity getRarity(ItemStack stack) { // public EnumRarity getRarity(ItemStack stack) {
return EnumRarity.RARE; // return EnumRarity.RARE;
} // }
} //}

View file

@ -22,7 +22,6 @@ import net.minecraft.entity.EntityLivingBase;
import net.minecraft.init.Items; import net.minecraft.init.Items;
import net.minecraft.init.MobEffects; import net.minecraft.init.MobEffects;
import net.minecraft.item.EnumAction; import net.minecraft.item.EnumAction;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.Ingredient; import net.minecraft.item.crafting.Ingredient;
@ -102,14 +101,10 @@ public class ItemCoffee extends ItemFoodBase {
return EnumAction.DRINK; return EnumAction.DRINK;
} }
@Nullable
@Override @Override
public int getMetadata(int damage) { public CompoundNBT getShareTag(ItemStack stack) {
return damage; return super.getShareTag(stack);
}
@Override
public boolean getShareTag() {
return true;
} }
@Override @Override
@ -134,11 +129,6 @@ public class ItemCoffee extends ItemFoodBase {
return false; return false;
} }
@Override
public EnumRarity getRarity(ItemStack stack) {
return EnumRarity.RARE;
}
public static class MilkIngredient extends CoffeeIngredient { public static class MilkIngredient extends CoffeeIngredient {
public MilkIngredient(Ingredient ingredient) { public MilkIngredient(Ingredient ingredient) {

View file

@ -11,18 +11,11 @@
package de.ellpeck.actuallyadditions.mod.items; package de.ellpeck.actuallyadditions.mod.items;
import de.ellpeck.actuallyadditions.mod.items.base.ItemFoodBase; import de.ellpeck.actuallyadditions.mod.items.base.ItemFoodBase;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.ItemStack;
public class ItemCoffeeBean extends ItemFoodBase { public class ItemCoffeeBean extends ItemFoodBase {
public ItemCoffeeBean() { public ItemCoffeeBean() {
super(1, 1F, false, name); super(1, 1F, false);
this.setMaxDamage(0); this.setMaxDamage(0);
} }
@Override
public EnumRarity getRarity(ItemStack stack) {
return EnumRarity.RARE;
}
} }

View file

@ -15,7 +15,6 @@ import de.ellpeck.actuallyadditions.mod.util.WorldUtil;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.init.SoundEvents; import net.minecraft.init.SoundEvents;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.ActionResult; import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumActionResult;
@ -28,7 +27,7 @@ import net.minecraft.world.World;
public class ItemTeleStaff extends ItemEnergy { public class ItemTeleStaff extends ItemEnergy {
public ItemTeleStaff() { public ItemTeleStaff() {
super(250000, 1000, name); super(250000, 1000);
} }
@Override @Override
@ -72,9 +71,4 @@ public class ItemTeleStaff extends ItemEnergy {
player.swingArm(hand); player.swingArm(hand);
return ActionResult.newResult(EnumActionResult.FAIL, stack); return ActionResult.newResult(EnumActionResult.FAIL, stack);
} }
@Override
public EnumRarity getRarity(ItemStack stack) {
return EnumRarity.EPIC;
}
} }

View file

@ -19,15 +19,16 @@ import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks; import net.minecraft.block.Blocks;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.item.ItemEntity;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.item.Items; import net.minecraft.item.Items;
import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.CompoundNBT;
import net.minecraft.util.ActionResult; import net.minecraft.particles.ParticleTypes;
import net.minecraft.util.Hand; import net.minecraft.state.properties.BlockStateProperties;
import net.minecraft.util.SoundCategory; import net.minecraft.util.*;
import net.minecraft.util.SoundEvents;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.RayTraceResult;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
@ -47,27 +48,33 @@ public class ItemWaterBowl extends ItemBase {
if (event.getWorld() != null) { if (event.getWorld() != null) {
if (ConfigBoolValues.WATER_BOWL.isEnabled()) { if (ConfigBoolValues.WATER_BOWL.isEnabled()) {
if (StackUtil.isValid(event.getItemStack()) && event.getItemStack().getItem() == Items.BOWL) { if (StackUtil.isValid(event.getItemStack()) && event.getItemStack().getItem() == Items.BOWL) {
RayTraceResult trace = WorldUtil.getNearestBlockWithDefaultReachDistance(event.getWorld(), event.getPlayer(), true, false, false); RayTraceResult rayTrace = WorldUtil.getNearestBlockWithDefaultReachDistance(event.getWorld(), event.getPlayer(), true, false, false);
if (rayTrace.getType() != RayTraceResult.Type.BLOCK) {
return;
}
BlockRayTraceResult trace = (BlockRayTraceResult) rayTrace;
ActionResult<ItemStack> result = ForgeEventFactory.onBucketUse(event.getPlayer(), event.getWorld(), event.getItemStack(), trace); ActionResult<ItemStack> result = ForgeEventFactory.onBucketUse(event.getPlayer(), event.getWorld(), event.getItemStack(), trace);
if (result == null && trace != null && trace.getBlockPos() != null) { if (result == null) {
if (event.getPlayer().canPlayerEdit(trace.getBlockPos().offset(trace.sideHit), trace.sideHit, event.getItemStack())) { if (event.getPlayer().canPlayerEdit(trace.getPos().offset(trace.getFace()), trace.getFace(), event.getItemStack())) {
BlockState state = event.getWorld().getBlockState(trace.getBlockPos()); BlockState state = event.getWorld().getBlockState(trace.getPos());
Block block = state.getBlock(); Block block = state.getBlock();
if ((block == Blocks.WATER || block == Blocks.FLOWING_WATER) && state.getValue(BlockLiquid.LEVEL) == 0) { // TODO: Validate fluid check
if ((block == Blocks.WATER) && state.get(BlockStateProperties.LEVEL_0_15) == 0) {
event.getPlayer().playSound(SoundEvents.ITEM_BUCKET_FILL, 1.0F, 1.0F); event.getPlayer().playSound(SoundEvents.ITEM_BUCKET_FILL, 1.0F, 1.0F);
if (!event.getWorld().isRemote) { if (!event.getWorld().isRemote) {
event.getWorld().setBlockState(trace.getBlockPos(), Blocks.AIR.getDefaultState(), 11); event.getWorld().setBlockState(trace.getPos(), Blocks.AIR.getDefaultState(), 11);
ItemStack reduced = StackUtil.shrink(event.getItemStack(), 1); ItemStack reduced = StackUtil.shrink(event.getItemStack(), 1);
ItemStack bowl = new ItemStack(ActuallyItems.itemWaterBowl); ItemStack bowl = new ItemStack(ActuallyItems.itemWaterBowl.get());
if (!StackUtil.isValid(reduced)) { if (!StackUtil.isValid(reduced)) {
event.getPlayer().setHeldItem(event.getHand(), bowl); event.getPlayer().setHeldItem(event.getHand(), bowl);
} else if (!event.getPlayer().inventory.addItemStackToInventory(bowl.copy())) { } else if (!event.getPlayer().inventory.addItemStackToInventory(bowl.copy())) {
ItemEntity entityItem = new ItemEntity(event.getWorld(), event.getPlayer().posX, event.getPlayer().posY, event.getPlayer().posZ, bowl.copy()); ItemEntity entityItem = new ItemEntity(event.getWorld(), event.getPlayer().getPosX(), event.getPlayer().getPosY(), event.getPlayer().getPosZ(), bowl.copy());
entityItem.setPickupDelay(0); entityItem.setPickupDelay(0);
event.getWorld().spawnEntity(entityItem); event.getWorld().addEntity(entityItem);
} }
} }
} }
@ -89,48 +96,49 @@ public class ItemWaterBowl extends ItemBase {
} }
if (trace == null) { if (trace == null) {
return new ActionResult<>(EnumActionResult.PASS, stack); return ActionResult.resultPass(stack);
} else if (trace.typeOfHit != RayTraceResult.Type.BLOCK) { } else if (trace.getType() != RayTraceResult.Type.BLOCK) {
return new ActionResult<>(EnumActionResult.PASS, stack); return ActionResult.resultPass(stack);
} else { } else {
BlockPos pos = trace.getBlockPos(); BlockRayTraceResult blockTrace = (BlockRayTraceResult) trace;
BlockPos pos = blockTrace.getPos();
if (!world.isBlockModifiable(player, pos)) { if (!world.isBlockModifiable(player, pos)) {
return new ActionResult<>(EnumActionResult.FAIL, stack); return ActionResult.resultFail(stack);
} else { } else {
BlockPos pos1 = world.getBlockState(pos).getBlock().isReplaceable(world, pos) && trace.sideHit == Direction.UP BlockPos pos1 = world.getBlockState(pos).getMaterial().isReplaceable() && blockTrace.getFace() == Direction.UP
? pos ? pos
: pos.offset(trace.sideHit); : pos.offset(blockTrace.getFace());
if (!player.canPlayerEdit(pos1, trace.sideHit, stack)) { if (!player.canPlayerEdit(pos1, blockTrace.getFace(), stack)) {
return new ActionResult<>(EnumActionResult.FAIL, stack); return ActionResult.resultFail(stack);
} else if (this.tryPlaceContainedLiquid(player, world, pos1, false)) { } else if (this.tryPlaceContainedLiquid(player, world, pos1, false)) {
return !player.isCreative() return !player.isCreative()
? new ActionResult<>(EnumActionResult.SUCCESS, new ItemStack(Items.BOWL)) ? ActionResult.resultSuccess(new ItemStack(Items.BOWL))
: new ActionResult<>(EnumActionResult.SUCCESS, stack); : ActionResult.resultSuccess(stack);
} else { } else {
return new ActionResult<>(EnumActionResult.FAIL, stack); return ActionResult.resultFail(stack);
} }
} }
} }
} }
@Override @Override
public void onUpdate(ItemStack stack, World world, Entity entity, int itemSlot, boolean isSelected) { public void inventoryTick(ItemStack stack, World world, Entity entity, int itemSlot, boolean isSelected) {
if (!world.isRemote) { if (!world.isRemote) {
if (ConfigBoolValues.WATER_BOWL_LOSS.isEnabled()) { if (ConfigBoolValues.WATER_BOWL_LOSS.isEnabled()) {
if (world.getTotalWorldTime() % 10 == 0 && world.rand.nextFloat() >= 0.5F) { if (world.getGameTime() % 10 == 0 && world.rand.nextFloat() >= 0.5F) {
int lastX = 0; int lastX = 0;
int lastY = 0; int lastY = 0;
if (stack.hasTagCompound()) { if (stack.hasTag()) {
CompoundNBT compound = stack.getTagCompound(); CompoundNBT compound = stack.getOrCreateTag();
lastX = compound.getInt("lastX"); lastX = compound.getInt("lastX");
lastY = compound.getInt("lastY"); lastY = compound.getInt("lastY");
} }
boolean change = false; boolean change = false;
if (lastX != 0 && lastX != (int) entity.posX || lastY != 0 && lastY != (int) entity.posY) { if (lastX != 0 && lastX != (int) entity.getPosX() || lastY != 0 && lastY != (int) entity.getPosY()) {
if (!entity.isSneaking()) { if (!entity.isSneaking()) {
if (entity instanceof PlayerEntity) { if (entity instanceof PlayerEntity) {
PlayerEntity player = (PlayerEntity) entity; PlayerEntity player = (PlayerEntity) entity;
@ -143,13 +151,9 @@ public class ItemWaterBowl extends ItemBase {
} }
if (change || lastX == 0 || lastY == 0) { if (change || lastX == 0 || lastY == 0) {
if (!stack.hasTagCompound()) { CompoundNBT compound = stack.getOrCreateTag();
stack.setTagCompound(new CompoundNBT()); compound.putInt("lastX", (int) entity.getPosX());
} compound.putInt("lastY", (int) entity.getPosY());
CompoundNBT compound = stack.getTagCompound();
compound.putInt("lastX", (int) entity.posX);
compound.putInt("lastY", (int) entity.posY);
} }
} }
} }
@ -173,16 +177,16 @@ public class ItemWaterBowl extends ItemBase {
BlockState state = world.getBlockState(pos); BlockState state = world.getBlockState(pos);
Material material = state.getMaterial(); Material material = state.getMaterial();
boolean nonSolid = !material.isSolid(); boolean nonSolid = !material.isSolid();
boolean replaceable = state.getBlock().isReplaceable(world, pos); boolean replaceable = state.getMaterial().isReplaceable();
if (!world.isAirBlock(pos) && !nonSolid && !replaceable) { if (!world.isAirBlock(pos) && !nonSolid && !replaceable) {
return false; return false;
} else { } else {
if (world.provider.doesWaterVaporize()) { if (world.getDimensionType().isUltrawarm()) {
world.playSound(player, pos, SoundEvents.BLOCK_FIRE_EXTINGUISH, SoundCategory.BLOCKS, 0.5F, 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F); world.playSound(player, pos, SoundEvents.BLOCK_FIRE_EXTINGUISH, SoundCategory.BLOCKS, 0.5F, 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F);
for (int k = 0; k < 8; k++) { for (int k = 0; k < 8; k++) {
world.spawnParticle(EnumParticleTypes.SMOKE_LARGE, pos.getX() + Math.random(), pos.getY() + Math.random(), pos.getZ() + Math.random(), 0.0D, 0.0D, 0.0D); world.addParticle(ParticleTypes.LARGE_SMOKE, pos.getX() + Math.random(), pos.getY() + Math.random(), pos.getZ() + Math.random(), 0.0D, 0.0D, 0.0D);
} }
} else { } else {
if (!world.isRemote && (nonSolid || replaceable) && !material.isLiquid()) { if (!world.isRemote && (nonSolid || replaceable) && !material.isLiquid()) {
@ -191,12 +195,7 @@ public class ItemWaterBowl extends ItemBase {
world.playSound(player, pos, SoundEvents.ITEM_BUCKET_EMPTY, SoundCategory.BLOCKS, 1.0F, 1.0F); world.playSound(player, pos, SoundEvents.ITEM_BUCKET_EMPTY, SoundCategory.BLOCKS, 1.0F, 1.0F);
BlockState placeState; BlockState placeState = Blocks.WATER.getDefaultState();
if (finite) {
placeState = Blocks.FLOWING_WATER.getDefaultState();
} else {
placeState = Blocks.FLOWING_WATER.getDefaultState();
}
world.setBlockState(pos, placeState, 3); world.setBlockState(pos, placeState, 3);
} }

View file

@ -13,10 +13,9 @@ package de.ellpeck.actuallyadditions.mod.items;
import de.ellpeck.actuallyadditions.mod.items.base.ItemEnergy; import de.ellpeck.actuallyadditions.mod.items.base.ItemEnergy;
import de.ellpeck.actuallyadditions.mod.util.StackUtil; import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.init.Blocks;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MathHelper;
@ -25,17 +24,16 @@ import net.minecraft.world.World;
public class ItemWaterRemovalRing extends ItemEnergy { public class ItemWaterRemovalRing extends ItemEnergy {
public ItemWaterRemovalRing() { public ItemWaterRemovalRing() {
super(800000, 1000, name); super(800000, 1000);
} }
@Override @Override
public void onUpdate(ItemStack stack, World world, Entity entity, int par4, boolean par5) { public void inventoryTick(ItemStack stack, World world, Entity player, int itemSlot, boolean isSelected) {
if (!(entity instanceof PlayerEntity) || world.isRemote || entity.isSneaking()) { if (!(player instanceof PlayerEntity) || player.world.isRemote || player.isSneaking()) {
return; return;
} }
PlayerEntity player = (PlayerEntity) entity; ItemStack equipped = ((PlayerEntity) player).getHeldItemMainhand();
ItemStack equipped = player.getHeldItemMainhand();
int energyUse = 150; int energyUse = 150;
if (StackUtil.isValid(equipped) && equipped == stack && this.getEnergyStored(stack) >= energyUse) { if (StackUtil.isValid(equipped) && equipped == stack && this.getEnergyStored(stack) >= energyUse) {
@ -45,25 +43,27 @@ public class ItemWaterRemovalRing extends ItemEnergy {
for (int x = -range; x < range + 1; x++) { for (int x = -range; x < range + 1; x++) {
for (int z = -range; z < range + 1; z++) { for (int z = -range; z < range + 1; z++) {
for (int y = -range; y < range + 1; y++) { for (int y = -range; y < range + 1; y++) {
int theX = MathHelper.floor(player.posX + x); int theX = MathHelper.floor(player.getPosX() + x);
int theY = MathHelper.floor(player.posY + y); int theY = MathHelper.floor(player.getPosY() + y);
int theZ = MathHelper.floor(player.posZ + z); int theZ = MathHelper.floor(player.getPosZ() + z);
//Remove Water //Remove Water
BlockPos pos = new BlockPos(theX, theY, theZ); BlockPos pos = new BlockPos(theX, theY, theZ);
Block block = world.getBlockState(pos).getBlock(); Block block = world.getBlockState(pos).getBlock();
if ((block == Blocks.WATER || block == Blocks.FLOWING_WATER) && this.getEnergyStored(stack) >= energyUse) { // TODO: Ensure water check is correct
if ((block == Blocks.WATER) && this.getEnergyStored(stack) >= energyUse) {
world.setBlockState(pos, Blocks.AIR.getDefaultState()); world.setBlockState(pos, Blocks.AIR.getDefaultState());
if (!player.isCreative()) { if (!((PlayerEntity) player).isCreative()) {
this.extractEnergyInternal(stack, energyUse, false); this.extractEnergyInternal(stack, energyUse, false);
} }
} }
//Remove Lava //Remove Lava
else if ((block == Blocks.LAVA || block == Blocks.FLOWING_LAVA) && this.getEnergyStored(stack) >= energyUse * 2) { // TODO: Ensure lava check is correct
else if ((block == Blocks.LAVA) && this.getEnergyStored(stack) >= energyUse * 2) {
world.setBlockState(pos, Blocks.AIR.getDefaultState()); world.setBlockState(pos, Blocks.AIR.getDefaultState());
if (!player.isCreative()) { if (!((PlayerEntity) player).isCreative()) {
this.extractEnergyInternal(stack, energyUse * 2, false); this.extractEnergyInternal(stack, energyUse * 2, false);
} }
} }
@ -72,9 +72,4 @@ public class ItemWaterRemovalRing extends ItemEnergy {
} }
} }
} }
@Override
public EnumRarity getRarity(ItemStack stack) {
return EnumRarity.EPIC;
}
} }

View file

@ -1,92 +1,92 @@
/* ///*
* This file ("JEIActuallyAdditionsPlugin.java") is part of the Actually Additions mod for Minecraft. // * This file ("JEIActuallyAdditionsPlugin.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed // * It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at // * under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense // * http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions // * View the source code at https://github.com/Ellpeck/ActuallyAdditions
* // *
* © 2015-2017 Ellpeck // * © 2015-2017 Ellpeck
*/ // */
//
package de.ellpeck.actuallyadditions.mod.jei; //package de.ellpeck.actuallyadditions.mod.jei;
//
import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI; //import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI;
import de.ellpeck.actuallyadditions.api.booklet.IBookletPage; //import de.ellpeck.actuallyadditions.api.booklet.IBookletPage;
import de.ellpeck.actuallyadditions.api.recipe.CoffeeIngredient; //import de.ellpeck.actuallyadditions.api.recipe.CoffeeIngredient;
import de.ellpeck.actuallyadditions.api.recipe.CrusherRecipe; //import de.ellpeck.actuallyadditions.api.recipe.CrusherRecipe;
import de.ellpeck.actuallyadditions.api.recipe.EmpowererRecipe; //import de.ellpeck.actuallyadditions.api.recipe.EmpowererRecipe;
import de.ellpeck.actuallyadditions.api.recipe.LensConversionRecipe; //import de.ellpeck.actuallyadditions.api.recipe.LensConversionRecipe;
import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks; //import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiCoffeeMachine; //import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiCoffeeMachine;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiFurnaceDouble; //import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiFurnaceDouble;
import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiGrinder; //import de.ellpeck.actuallyadditions.mod.inventory.gui.GuiGrinder;
import de.ellpeck.actuallyadditions.mod.items.ActuallyItems; //import de.ellpeck.actuallyadditions.mod.items.ActuallyItems;
import de.ellpeck.actuallyadditions.mod.jei.booklet.BookletRecipeCategory; //import de.ellpeck.actuallyadditions.mod.jei.booklet.BookletRecipeCategory;
import de.ellpeck.actuallyadditions.mod.jei.booklet.BookletRecipeWrapper; //import de.ellpeck.actuallyadditions.mod.jei.booklet.BookletRecipeWrapper;
import de.ellpeck.actuallyadditions.mod.jei.coffee.CoffeeMachineRecipeCategory; //import de.ellpeck.actuallyadditions.mod.jei.coffee.CoffeeMachineRecipeCategory;
import de.ellpeck.actuallyadditions.mod.jei.coffee.CoffeeMachineRecipeWrapper; //import de.ellpeck.actuallyadditions.mod.jei.coffee.CoffeeMachineRecipeWrapper;
import de.ellpeck.actuallyadditions.mod.jei.crusher.CrusherRecipeCategory; //import de.ellpeck.actuallyadditions.mod.jei.crusher.CrusherRecipeCategory;
import de.ellpeck.actuallyadditions.mod.jei.crusher.CrusherRecipeWrapper; //import de.ellpeck.actuallyadditions.mod.jei.crusher.CrusherRecipeWrapper;
import de.ellpeck.actuallyadditions.mod.jei.empowerer.EmpowererRecipeCategory; //import de.ellpeck.actuallyadditions.mod.jei.empowerer.EmpowererRecipeCategory;
import de.ellpeck.actuallyadditions.mod.jei.empowerer.EmpowererRecipeWrapper; //import de.ellpeck.actuallyadditions.mod.jei.empowerer.EmpowererRecipeWrapper;
import de.ellpeck.actuallyadditions.mod.jei.reconstructor.ReconstructorRecipeCategory; //import de.ellpeck.actuallyadditions.mod.jei.reconstructor.ReconstructorRecipeCategory;
import de.ellpeck.actuallyadditions.mod.jei.reconstructor.ReconstructorRecipeWrapper; //import de.ellpeck.actuallyadditions.mod.jei.reconstructor.ReconstructorRecipeWrapper;
import de.ellpeck.actuallyadditions.mod.util.Util; //import de.ellpeck.actuallyadditions.mod.util.Util;
import mezz.jei.api.IModPlugin; //import mezz.jei.api.IModPlugin;
import mezz.jei.api.constants.VanillaRecipeCategoryUid; //import mezz.jei.api.constants.VanillaRecipeCategoryUid;
import mezz.jei.api.helpers.IJeiHelpers; //import mezz.jei.api.helpers.IJeiHelpers;
import mezz.jei.api.registration.IRecipeCategoryRegistration; //import mezz.jei.api.registration.IRecipeCategoryRegistration;
import net.minecraft.item.ItemStack; //import net.minecraft.item.ItemStack;
//
@JEIPlugin //@JEIPlugin
public class JEIActuallyAdditionsPlugin implements IModPlugin { //public class JEIActuallyAdditionsPlugin implements IModPlugin {
//
@Override // @Override
public void registerCategories(IRecipeCategoryRegistration registry) { // public void registerCategories(IRecipeCategoryRegistration registry) {
IJeiHelpers helpers = registry.getJeiHelpers(); // IJeiHelpers helpers = registry.getJeiHelpers();
registry.addRecipeCategories(new CoffeeMachineRecipeCategory(helpers.getGuiHelper()), new CompostRecipeCategory(helpers.getGuiHelper()), new CrusherRecipeCategory(helpers.getGuiHelper()), new ReconstructorRecipeCategory(helpers.getGuiHelper()), new EmpowererRecipeCategory(helpers.getGuiHelper()), new BookletRecipeCategory(helpers.getGuiHelper())); // registry.addRecipeCategories(new CoffeeMachineRecipeCategory(helpers.getGuiHelper()), new CompostRecipeCategory(helpers.getGuiHelper()), new CrusherRecipeCategory(helpers.getGuiHelper()), new ReconstructorRecipeCategory(helpers.getGuiHelper()), new EmpowererRecipeCategory(helpers.getGuiHelper()), new BookletRecipeCategory(helpers.getGuiHelper()));
} // }
//
@Override // @Override
public void register(IModRegistry registry) { // public void register(IModRegistry registry) {
IJeiHelpers helpers = registry.getJeiHelpers(); // IJeiHelpers helpers = registry.getJeiHelpers();
//
registry.handleRecipes(IBookletPage.class, BookletRecipeWrapper::new, BookletRecipeCategory.NAME); // registry.handleRecipes(IBookletPage.class, BookletRecipeWrapper::new, BookletRecipeCategory.NAME);
registry.handleRecipes(CoffeeIngredient.class, CoffeeMachineRecipeWrapper::new, CoffeeMachineRecipeCategory.NAME); // registry.handleRecipes(CoffeeIngredient.class, CoffeeMachineRecipeWrapper::new, CoffeeMachineRecipeCategory.NAME);
registry.handleRecipes(CrusherRecipe.class, CrusherRecipeWrapper::new, CrusherRecipeCategory.NAME); // registry.handleRecipes(CrusherRecipe.class, CrusherRecipeWrapper::new, CrusherRecipeCategory.NAME);
registry.handleRecipes(LensConversionRecipe.class, ReconstructorRecipeWrapper.FACTORY, ReconstructorRecipeCategory.NAME); // registry.handleRecipes(LensConversionRecipe.class, ReconstructorRecipeWrapper.FACTORY, ReconstructorRecipeCategory.NAME);
registry.handleRecipes(EmpowererRecipe.class, EmpowererRecipeWrapper::new, EmpowererRecipeCategory.NAME); // registry.handleRecipes(EmpowererRecipe.class, EmpowererRecipeWrapper::new, EmpowererRecipeCategory.NAME);
registry.handleRecipes(CompostRecipe.class, CompostRecipeWrapper::new, CompostRecipeCategory.NAME); // registry.handleRecipes(CompostRecipe.class, CompostRecipeWrapper::new, CompostRecipeCategory.NAME);
//
registry.addRecipes(ActuallyAdditionsAPI.BOOKLET_PAGES_WITH_ITEM_OR_FLUID_DATA, BookletRecipeCategory.NAME); // registry.addRecipes(ActuallyAdditionsAPI.BOOKLET_PAGES_WITH_ITEM_OR_FLUID_DATA, BookletRecipeCategory.NAME);
registry.addRecipes(ActuallyAdditionsAPI.COFFEE_MACHINE_INGREDIENTS, CoffeeMachineRecipeCategory.NAME); // registry.addRecipes(ActuallyAdditionsAPI.COFFEE_MACHINE_INGREDIENTS, CoffeeMachineRecipeCategory.NAME);
registry.addRecipes(ActuallyAdditionsAPI.CRUSHER_RECIPES, CrusherRecipeCategory.NAME); // registry.addRecipes(ActuallyAdditionsAPI.CRUSHER_RECIPES, CrusherRecipeCategory.NAME);
registry.addRecipes(ActuallyAdditionsAPI.RECONSTRUCTOR_LENS_CONVERSION_RECIPES, ReconstructorRecipeCategory.NAME); // registry.addRecipes(ActuallyAdditionsAPI.RECONSTRUCTOR_LENS_CONVERSION_RECIPES, ReconstructorRecipeCategory.NAME);
registry.addRecipes(ActuallyAdditionsAPI.EMPOWERER_RECIPES, EmpowererRecipeCategory.NAME); // registry.addRecipes(ActuallyAdditionsAPI.EMPOWERER_RECIPES, EmpowererRecipeCategory.NAME);
registry.addRecipes(ActuallyAdditionsAPI.COMPOST_RECIPES, CompostRecipeCategory.NAME); // registry.addRecipes(ActuallyAdditionsAPI.COMPOST_RECIPES, CompostRecipeCategory.NAME);
//
registry.addRecipeClickArea(GuiCoffeeMachine.class, 53, 42, 22, 16, CoffeeMachineRecipeCategory.NAME); // registry.addRecipeClickArea(GuiCoffeeMachine.class, 53, 42, 22, 16, CoffeeMachineRecipeCategory.NAME);
registry.addRecipeClickArea(GuiGrinder.class, 80, 40, 24, 22, CrusherRecipeCategory.NAME); // registry.addRecipeClickArea(GuiGrinder.class, 80, 40, 24, 22, CrusherRecipeCategory.NAME);
registry.addRecipeClickArea(GuiGrinder.GuiGrinderDouble.class, 51, 40, 74, 22, CrusherRecipeCategory.NAME); // registry.addRecipeClickArea(GuiGrinder.GuiGrinderDouble.class, 51, 40, 74, 22, CrusherRecipeCategory.NAME);
registry.addRecipeClickArea(GuiFurnaceDouble.class, 51, 40, 74, 22, VanillaRecipeCategoryUid.SMELTING); // registry.addRecipeClickArea(GuiFurnaceDouble.class, 51, 40, 74, 22, VanillaRecipeCategoryUid.SMELTING);
//
IIngredientBlacklist blacklist = helpers.getIngredientBlacklist(); // IIngredientBlacklist blacklist = helpers.getIngredientBlacklist();
blacklist.addIngredientToBlacklist(new ItemStack(ActuallyBlocks.blockRice.get())); // blacklist.addIngredientToBlacklist(new ItemStack(ActuallyBlocks.blockRice.get()));
blacklist.addIngredientToBlacklist(new ItemStack(ActuallyBlocks.blockCanola.get())); // blacklist.addIngredientToBlacklist(new ItemStack(ActuallyBlocks.blockCanola.get()));
blacklist.addIngredientToBlacklist(new ItemStack(ActuallyBlocks.blockFlax.get())); // blacklist.addIngredientToBlacklist(new ItemStack(ActuallyBlocks.blockFlax.get()));
blacklist.addIngredientToBlacklist(new ItemStack(ActuallyBlocks.blockCoffee.get())); // blacklist.addIngredientToBlacklist(new ItemStack(ActuallyBlocks.blockCoffee.get()));
blacklist.addIngredientToBlacklist(new ItemStack(ActuallyBlocks.blockWildPlant.get(), 1, Util.WILDCARD)); // blacklist.addIngredientToBlacklist(new ItemStack(ActuallyBlocks.blockWildPlant.get(), 1, Util.WILDCARD));
blacklist.addIngredientToBlacklist(new ItemStack(ActuallyBlocks.blockColoredLampOn.get(), 1, Util.WILDCARD)); // blacklist.addIngredientToBlacklist(new ItemStack(ActuallyBlocks.blockColoredLampOn.get(), 1, Util.WILDCARD));
// blacklist.addIngredientToBlacklist(new ItemStack(InitItems.itemMisc.get(), 1, TheMiscItems.YOUTUBE_ICON.ordinal())); // // blacklist.addIngredientToBlacklist(new ItemStack(InitItems.itemMisc.get(), 1, TheMiscItems.YOUTUBE_ICON.ordinal()));
//
registry.addRecipeCatalyst(new ItemStack(ActuallyItems.itemCrafterOnAStick.get()), VanillaRecipeCategoryUid.CRAFTING); // registry.addRecipeCatalyst(new ItemStack(ActuallyItems.itemCrafterOnAStick.get()), VanillaRecipeCategoryUid.CRAFTING);
registry.addRecipeCatalyst(new ItemStack(ActuallyBlocks.blockFurnaceDouble.get()), VanillaRecipeCategoryUid.SMELTING); // registry.addRecipeCatalyst(new ItemStack(ActuallyBlocks.blockFurnaceDouble.get()), VanillaRecipeCategoryUid.SMELTING);
registry.addRecipeCatalyst(new ItemStack(ActuallyBlocks.blockGrinder.get()), CrusherRecipeCategory.NAME); // registry.addRecipeCatalyst(new ItemStack(ActuallyBlocks.blockGrinder.get()), CrusherRecipeCategory.NAME);
registry.addRecipeCatalyst(new ItemStack(ActuallyBlocks.blockGrinderDouble.get()), CrusherRecipeCategory.NAME); // registry.addRecipeCatalyst(new ItemStack(ActuallyBlocks.blockGrinderDouble.get()), CrusherRecipeCategory.NAME);
registry.addRecipeCatalyst(new ItemStack(ActuallyBlocks.blockCoffeeMachine.get()), CoffeeMachineRecipeCategory.NAME); // registry.addRecipeCatalyst(new ItemStack(ActuallyBlocks.blockCoffeeMachine.get()), CoffeeMachineRecipeCategory.NAME);
registry.addRecipeCatalyst(new ItemStack(ActuallyBlocks.blockAtomicReconstructor.get()), ReconstructorRecipeCategory.NAME); // registry.addRecipeCatalyst(new ItemStack(ActuallyBlocks.blockAtomicReconstructor.get()), ReconstructorRecipeCategory.NAME);
registry.addRecipeCatalyst(new ItemStack(ActuallyBlocks.blockEmpowerer.get()), EmpowererRecipeCategory.NAME); // registry.addRecipeCatalyst(new ItemStack(ActuallyBlocks.blockEmpowerer.get()), EmpowererRecipeCategory.NAME);
registry.addRecipeCatalyst(new ItemStack(ActuallyItems.itemBooklet.get()), BookletRecipeCategory.NAME); // registry.addRecipeCatalyst(new ItemStack(ActuallyItems.itemBooklet.get()), BookletRecipeCategory.NAME);
// registry.addRecipeCatalyst(new ItemStack(InitBlocks.blockCompost.get()), CompostRecipeCategory.NAME); // // registry.addRecipeCatalyst(new ItemStack(InitBlocks.blockCompost.get()), CompostRecipeCategory.NAME);
} // }
} //}

View file

@ -1,68 +1,68 @@
/* ///*
* This file ("RecipeWrapperWithButton.java") is part of the Actually Additions mod for Minecraft. // * This file ("RecipeWrapperWithButton.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed // * It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at // * under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense // * http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions // * View the source code at https://github.com/Ellpeck/ActuallyAdditions
* // *
* © 2015-2017 Ellpeck // * © 2015-2017 Ellpeck
*/ // */
//
package de.ellpeck.actuallyadditions.mod.jei; //package de.ellpeck.actuallyadditions.mod.jei;
//
import de.ellpeck.actuallyadditions.api.booklet.IBookletPage; //import de.ellpeck.actuallyadditions.api.booklet.IBookletPage;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; //import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.booklet.gui.GuiBooklet; //import de.ellpeck.actuallyadditions.mod.booklet.gui.GuiBooklet;
import de.ellpeck.actuallyadditions.mod.booklet.misc.BookletUtils; //import de.ellpeck.actuallyadditions.mod.booklet.misc.BookletUtils;
import de.ellpeck.actuallyadditions.mod.inventory.gui.TexturedButton; //import de.ellpeck.actuallyadditions.mod.inventory.gui.TexturedButton;
import de.ellpeck.actuallyadditions.mod.util.StringUtil; //import de.ellpeck.actuallyadditions.mod.util.StringUtil;
import net.minecraft.client.Minecraft; //import net.minecraft.client.Minecraft;
//
import javax.annotation.Nullable; //import javax.annotation.Nullable;
import java.util.Collections; //import java.util.Collections;
import java.util.List; //import java.util.List;
//
public abstract class RecipeWrapperWithButton implements IRecipeWr { //public abstract class RecipeWrapperWithButton implements IRecipeWr {
//
protected final TexturedButton theButton; // protected final TexturedButton theButton;
//
public RecipeWrapperWithButton() { // public RecipeWrapperWithButton() {
this.theButton = new TexturedButton(GuiBooklet.RES_LOC_GADGETS, this.getButtonX(), this.getButtonY(), 0, 0, 20, 20, btn -> { // this.theButton = new TexturedButton(GuiBooklet.RES_LOC_GADGETS, this.getButtonX(), this.getButtonY(), 0, 0, 20, 20, btn -> {
}); // });
} // }
//
public abstract int getButtonX(); // public abstract int getButtonX();
//
public abstract int getButtonY(); // public abstract int getButtonY();
//
@Override // @Override
public boolean handleClick(Minecraft minecraft, int mouseX, int mouseY, int mouseButton) { // public boolean handleClick(Minecraft minecraft, int mouseX, int mouseY, int mouseButton) {
if (this.theButton.mousePressed(minecraft, mouseX, mouseY)) { // if (this.theButton.mousePressed(minecraft, mouseX, mouseY)) {
this.theButton.playPressSound(minecraft.getSoundHandler()); // this.theButton.playPressSound(minecraft.getSoundHandler());
//
IBookletPage page = this.getPage(); // IBookletPage page = this.getPage();
if (page != null) { // if (page != null) {
Minecraft.getInstance().displayGuiScreen(BookletUtils.createBookletGuiFromPage(Minecraft.getInstance().currentScreen, page)); // Minecraft.getInstance().displayGuiScreen(BookletUtils.createBookletGuiFromPage(Minecraft.getInstance().currentScreen, page));
return true; // return true;
} // }
} // }
return false; // return false;
} // }
//
public abstract IBookletPage getPage(); // public abstract IBookletPage getPage();
//
@Override // @Override
public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) { // public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) {
this.theButton.drawButton(minecraft, mouseX, mouseY, 0F); // this.theButton.drawButton(minecraft, mouseX, mouseY, 0F);
} // }
//
@Nullable // @Nullable
@Override // @Override
public List<String> getTooltipStrings(int mouseX, int mouseY) { // public List<String> getTooltipStrings(int mouseX, int mouseY) {
if (this.theButton.isMouseOver()) { // if (this.theButton.isMouseOver()) {
return Collections.singletonList(StringUtil.localize("booklet." + ActuallyAdditions.MODID + ".clickToSeeRecipe")); // return Collections.singletonList(StringUtil.localize("booklet." + ActuallyAdditions.MODID + ".clickToSeeRecipe"));
} else { // } else {
return Collections.emptyList(); // return Collections.emptyList();
} // }
} // }
} //}

View file

@ -1,63 +1,63 @@
/* ///*
* This file ("BookletRecipeCategory.java") is part of the Actually Additions mod for Minecraft. // * This file ("BookletRecipeCategory.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed // * It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at // * under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense // * http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions // * View the source code at https://github.com/Ellpeck/ActuallyAdditions
* // *
* © 2015-2017 Ellpeck // * © 2015-2017 Ellpeck
*/ // */
//
package de.ellpeck.actuallyadditions.mod.jei.booklet; //package de.ellpeck.actuallyadditions.mod.jei.booklet;
//
import java.util.ArrayList; //import java.util.ArrayList;
import java.util.List; //import java.util.List;
//
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; //import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.util.StringUtil; //import de.ellpeck.actuallyadditions.mod.util.StringUtil;
import mezz.jei.api.IGuiHelper; //import mezz.jei.api.IGuiHelper;
import mezz.jei.api.gui.IDrawable; //import mezz.jei.api.gui.IDrawable;
import mezz.jei.api.gui.IRecipeLayout; //import mezz.jei.api.gui.IRecipeLayout;
import mezz.jei.api.ingredients.IIngredients; //import mezz.jei.api.ingredients.IIngredients;
import mezz.jei.api.recipe.IRecipeCategory; //import mezz.jei.api.recipe.IRecipeCategory;
import net.minecraft.item.ItemStack; //import net.minecraft.item.ItemStack;
//
public class BookletRecipeCategory implements IRecipeCategory<BookletRecipeWrapper> { //public class BookletRecipeCategory implements IRecipeCategory<BookletRecipeWrapper> {
//
public static final String NAME = "actuallyadditions.booklet"; // public static final String NAME = "actuallyadditions.booklet";
//
private final IDrawable background; // private final IDrawable background;
//
public BookletRecipeCategory(IGuiHelper helper) { // public BookletRecipeCategory(IGuiHelper helper) {
this.background = helper.createBlankDrawable(160, 105); // this.background = helper.createBlankDrawable(160, 105);
} // }
//
@Override // @Override
public String getUid() { // public String getUid() {
return NAME; // return NAME;
} // }
//
@Override // @Override
public String getTitle() { // public String getTitle() {
return StringUtil.localize("container.nei." + NAME + ".name"); // return StringUtil.localize("container.nei." + NAME + ".name");
} // }
//
@Override // @Override
public String getModName() { // public String getModName() {
return ActuallyAdditions.NAME; // return ActuallyAdditions.NAME;
} // }
//
@Override // @Override
public IDrawable getBackground() { // public IDrawable getBackground() {
return this.background; // return this.background;
} // }
//
@Override // @Override
public void setRecipe(IRecipeLayout recipeLayout, BookletRecipeWrapper wrapper, IIngredients ingredients) { // public void setRecipe(IRecipeLayout recipeLayout, BookletRecipeWrapper wrapper, IIngredients ingredients) {
recipeLayout.getItemStacks().init(0, true, 70, -4); // recipeLayout.getItemStacks().init(0, true, 70, -4);
//
List<ItemStack> list = new ArrayList<>(); // List<ItemStack> list = new ArrayList<>();
wrapper.thePage.getItemStacksForPage(list); // wrapper.thePage.getItemStacksForPage(list);
recipeLayout.getItemStacks().set(0, list); // recipeLayout.getItemStacks().set(0, list);
} // }
} //}

View file

@ -1,83 +1,83 @@
/* ///*
* This file ("BookletRecipeWrapper.java") is part of the Actually Additions mod for Minecraft. // * This file ("BookletRecipeWrapper.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed // * It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at // * under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense // * http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions // * View the source code at https://github.com/Ellpeck/ActuallyAdditions
* // *
* © 2015-2017 Ellpeck // * © 2015-2017 Ellpeck
*/ // */
//
package de.ellpeck.actuallyadditions.mod.jei.booklet; //package de.ellpeck.actuallyadditions.mod.jei.booklet;
//
import java.util.ArrayList; //import java.util.ArrayList;
import java.util.List; //import java.util.List;
//
import de.ellpeck.actuallyadditions.api.booklet.IBookletChapter; //import de.ellpeck.actuallyadditions.api.booklet.IBookletChapter;
import de.ellpeck.actuallyadditions.api.booklet.IBookletPage; //import de.ellpeck.actuallyadditions.api.booklet.IBookletPage;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; //import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.jei.RecipeWrapperWithButton; //import de.ellpeck.actuallyadditions.mod.jei.RecipeWrapperWithButton;
import de.ellpeck.actuallyadditions.mod.util.StringUtil; //import de.ellpeck.actuallyadditions.mod.util.StringUtil;
import mezz.jei.api.ingredients.IIngredients; //import mezz.jei.api.ingredients.IIngredients;
import mezz.jei.api.ingredients.VanillaTypes; //import mezz.jei.api.ingredients.VanillaTypes;
import net.minecraft.client.Minecraft; //import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack; //import net.minecraft.item.ItemStack;
import net.minecraft.util.text.TextFormatting; //import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.fluids.FluidStack; //import net.minecraftforge.fluids.FluidStack;
//
public class BookletRecipeWrapper extends RecipeWrapperWithButton { //public class BookletRecipeWrapper extends RecipeWrapperWithButton {
//
public final IBookletPage thePage; // public final IBookletPage thePage;
//
public BookletRecipeWrapper(IBookletPage page) { // public BookletRecipeWrapper(IBookletPage page) {
this.thePage = page; // this.thePage = page;
} // }
//
@Override // @Override
public void getIngredients(IIngredients ingredients) { // public void getIngredients(IIngredients ingredients) {
List<ItemStack> itemList = new ArrayList<>(); // List<ItemStack> itemList = new ArrayList<>();
this.thePage.getItemStacksForPage(itemList); // this.thePage.getItemStacksForPage(itemList);
ingredients.setInputs(VanillaTypes.ITEM, itemList); // ingredients.setInputs(VanillaTypes.ITEM, itemList);
ingredients.setOutputs(VanillaTypes.ITEM, itemList); // ingredients.setOutputs(VanillaTypes.ITEM, itemList);
//
List<FluidStack> fluidList = new ArrayList<>(); // List<FluidStack> fluidList = new ArrayList<>();
this.thePage.getFluidStacksForPage(fluidList); // this.thePage.getFluidStacksForPage(fluidList);
ingredients.setInputs(VanillaTypes.FLUID, fluidList); // ingredients.setInputs(VanillaTypes.FLUID, fluidList);
ingredients.setOutputs(VanillaTypes.FLUID, fluidList); // ingredients.setOutputs(VanillaTypes.FLUID, fluidList);
} // }
//
@Override // @Override
public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) { // public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) {
List<String> header = minecraft.fontRenderer.listFormattedStringToWidth(StringUtil.localize("container.nei." + ActuallyAdditions.MODID + ".booklet.header").replaceAll("<item>", TextFormatting.BLUE + "").replaceAll("<r>", TextFormatting.BLACK + ""), 150); // List<String> header = minecraft.fontRenderer.listFormattedStringToWidth(StringUtil.localize("container.nei." + ActuallyAdditions.MODID + ".booklet.header").replaceAll("<item>", TextFormatting.BLUE + "").replaceAll("<r>", TextFormatting.BLACK + ""), 150);
for (int i = 0; i < header.size(); i++) { // for (int i = 0; i < header.size(); i++) {
minecraft.fontRenderer.drawString(header.get(i), 0, 17 + i * (minecraft.fontRenderer.FONT_HEIGHT + 1), 0, false); // minecraft.fontRenderer.drawString(header.get(i), 0, 17 + i * (minecraft.fontRenderer.FONT_HEIGHT + 1), 0, false);
} // }
//
int maxLines = 4; // int maxLines = 4;
IBookletChapter chapter = this.thePage.getChapter(); // IBookletChapter chapter = this.thePage.getChapter();
String aText = chapter.getAllPages()[0].getInfoText(); // String aText = chapter.getAllPages()[0].getInfoText();
List<String> text = minecraft.fontRenderer.listFormattedStringToWidth(aText != null ? aText : TextFormatting.DARK_RED + StringUtil.localize("container.nei." + ActuallyAdditions.MODID + ".booklet.noText"), 150); // List<String> text = minecraft.fontRenderer.listFormattedStringToWidth(aText != null ? aText : TextFormatting.DARK_RED + StringUtil.localize("container.nei." + ActuallyAdditions.MODID + ".booklet.noText"), 150);
for (int i = 0; i < Math.min(maxLines, text.size()); i++) { // for (int i = 0; i < Math.min(maxLines, text.size()); i++) {
minecraft.fontRenderer.drawString(text.get(i) + (i == maxLines - 1 && text.size() > maxLines ? TextFormatting.RESET + "" + TextFormatting.BLACK + "..." : ""), 0, 16 + 25 + i * (minecraft.fontRenderer.FONT_HEIGHT + 1), 0, false); // minecraft.fontRenderer.drawString(text.get(i) + (i == maxLines - 1 && text.size() > maxLines ? TextFormatting.RESET + "" + TextFormatting.BLACK + "..." : ""), 0, 16 + 25 + i * (minecraft.fontRenderer.FONT_HEIGHT + 1), 0, false);
} // }
minecraft.fontRenderer.drawString(TextFormatting.ITALIC + chapter.getLocalizedName(), 25, 85, 0, false); // minecraft.fontRenderer.drawString(TextFormatting.ITALIC + chapter.getLocalizedName(), 25, 85, 0, false);
minecraft.fontRenderer.drawString(TextFormatting.ITALIC + "Page " + (chapter.getPageIndex(this.thePage) + 1), 25, 95, 0, false); // minecraft.fontRenderer.drawString(TextFormatting.ITALIC + "Page " + (chapter.getPageIndex(this.thePage) + 1), 25, 95, 0, false);
//
super.drawInfo(minecraft, recipeWidth, recipeHeight, mouseX, mouseY); // super.drawInfo(minecraft, recipeWidth, recipeHeight, mouseX, mouseY);
} // }
//
@Override // @Override
public int getButtonX() { // public int getButtonX() {
return 0; // return 0;
} // }
//
@Override // @Override
public int getButtonY() { // public int getButtonY() {
return 84; // return 84;
} // }
//
@Override // @Override
public IBookletPage getPage() { // public IBookletPage getPage() {
return this.thePage; // return this.thePage;
} // }
} //}

View file

@ -1,69 +1,69 @@
/* ///*
* This file ("CoffeeMachineRecipeCategory.java") is part of the Actually Additions mod for Minecraft. // * This file ("CoffeeMachineRecipeCategory.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed // * It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at // * under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense // * http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions // * View the source code at https://github.com/Ellpeck/ActuallyAdditions
* // *
* © 2015-2017 Ellpeck // * © 2015-2017 Ellpeck
*/ // */
//
package de.ellpeck.actuallyadditions.mod.jei.coffee; //package de.ellpeck.actuallyadditions.mod.jei.coffee;
//
import java.util.Arrays; //import java.util.Arrays;
//
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; //import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityCoffeeMachine; //import de.ellpeck.actuallyadditions.mod.tile.TileEntityCoffeeMachine;
import de.ellpeck.actuallyadditions.mod.util.AssetUtil; //import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
import de.ellpeck.actuallyadditions.mod.util.StringUtil; //import de.ellpeck.actuallyadditions.mod.util.StringUtil;
import mezz.jei.api.IGuiHelper; //import mezz.jei.api.IGuiHelper;
import mezz.jei.api.gui.IDrawable; //import mezz.jei.api.gui.IDrawable;
import mezz.jei.api.gui.IRecipeLayout; //import mezz.jei.api.gui.IRecipeLayout;
import mezz.jei.api.ingredients.IIngredients; //import mezz.jei.api.ingredients.IIngredients;
import mezz.jei.api.recipe.IRecipeCategory; //import mezz.jei.api.recipe.IRecipeCategory;
//
public class CoffeeMachineRecipeCategory implements IRecipeCategory<CoffeeMachineRecipeWrapper> { //public class CoffeeMachineRecipeCategory implements IRecipeCategory<CoffeeMachineRecipeWrapper> {
//
public static final String NAME = "actuallyadditions.coffee"; // public static final String NAME = "actuallyadditions.coffee";
//
private final IDrawable background; // private final IDrawable background;
//
public CoffeeMachineRecipeCategory(IGuiHelper helper) { // public CoffeeMachineRecipeCategory(IGuiHelper helper) {
this.background = helper.createDrawable(AssetUtil.getGuiLocation("gui_nei_coffee_machine"), 0, 0, 126, 92); // this.background = helper.createDrawable(AssetUtil.getGuiLocation("gui_nei_coffee_machine"), 0, 0, 126, 92);
} // }
//
@Override // @Override
public String getUid() { // public String getUid() {
return NAME; // return NAME;
} // }
//
@Override // @Override
public String getTitle() { // public String getTitle() {
return StringUtil.localize("container.nei." + NAME + ".name"); // return StringUtil.localize("container.nei." + NAME + ".name");
} // }
//
@Override // @Override
public String getModName() { // public String getModName() {
return ActuallyAdditions.NAME; // return ActuallyAdditions.NAME;
} // }
//
@Override // @Override
public IDrawable getBackground() { // public IDrawable getBackground() {
return this.background; // return this.background;
} // }
//
@Override // @Override
public void setRecipe(IRecipeLayout recipeLayout, CoffeeMachineRecipeWrapper wrapper, IIngredients ingredients) { // public void setRecipe(IRecipeLayout recipeLayout, CoffeeMachineRecipeWrapper wrapper, IIngredients ingredients) {
recipeLayout.getItemStacks().init(0, true, 89, 20); // recipeLayout.getItemStacks().init(0, true, 89, 20);
recipeLayout.getItemStacks().set(0, Arrays.asList(wrapper.ingredient.getInput().getMatchingStacks())); // recipeLayout.getItemStacks().set(0, Arrays.asList(wrapper.ingredient.getInput().getMatchingStacks()));
//
recipeLayout.getItemStacks().init(1, true, 44, 38); // recipeLayout.getItemStacks().init(1, true, 44, 38);
recipeLayout.getItemStacks().set(1, wrapper.cup); // recipeLayout.getItemStacks().set(1, wrapper.cup);
//
recipeLayout.getItemStacks().init(2, true, 1, 38); // recipeLayout.getItemStacks().init(2, true, 1, 38);
recipeLayout.getItemStacks().set(2, Arrays.asList(TileEntityCoffeeMachine.COFFEE.getMatchingStacks())); // recipeLayout.getItemStacks().set(2, Arrays.asList(TileEntityCoffeeMachine.COFFEE.getMatchingStacks()));
//
recipeLayout.getItemStacks().init(3, false, 44, 69); // recipeLayout.getItemStacks().init(3, false, 44, 69);
recipeLayout.getItemStacks().set(3, wrapper.theOutput); // recipeLayout.getItemStacks().set(3, wrapper.theOutput);
} // }
} //}

View file

@ -1,88 +1,88 @@
/* ///*
* This file ("CoffeeMachineRecipeWrapper.java") is part of the Actually Additions mod for Minecraft. // * This file ("CoffeeMachineRecipeWrapper.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed // * It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at // * under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense // * http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions // * View the source code at https://github.com/Ellpeck/ActuallyAdditions
* // *
* © 2015-2017 Ellpeck // * © 2015-2017 Ellpeck
*/ // */
//
package de.ellpeck.actuallyadditions.mod.jei.coffee; //package de.ellpeck.actuallyadditions.mod.jei.coffee;
//
import com.google.common.base.Strings; //import com.google.common.base.Strings;
import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI; //import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI;
import de.ellpeck.actuallyadditions.api.booklet.IBookletPage; //import de.ellpeck.actuallyadditions.api.booklet.IBookletPage;
import de.ellpeck.actuallyadditions.api.recipe.CoffeeIngredient; //import de.ellpeck.actuallyadditions.api.recipe.CoffeeIngredient;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; //import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks; //import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks;
import de.ellpeck.actuallyadditions.mod.booklet.misc.BookletUtils; //import de.ellpeck.actuallyadditions.mod.booklet.misc.BookletUtils;
import de.ellpeck.actuallyadditions.mod.items.ActuallyItems; //import de.ellpeck.actuallyadditions.mod.items.ActuallyItems;
import de.ellpeck.actuallyadditions.mod.jei.RecipeWrapperWithButton; //import de.ellpeck.actuallyadditions.mod.jei.RecipeWrapperWithButton;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityCoffeeMachine; //import de.ellpeck.actuallyadditions.mod.tile.TileEntityCoffeeMachine;
import de.ellpeck.actuallyadditions.mod.util.StringUtil; //import de.ellpeck.actuallyadditions.mod.util.StringUtil;
import mezz.jei.api.ingredients.IIngredients; //import mezz.jei.api.ingredients.IIngredients;
import mezz.jei.api.ingredients.VanillaTypes; //import mezz.jei.api.ingredients.VanillaTypes;
import net.minecraft.client.Minecraft; //import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack; //import net.minecraft.item.ItemStack;
//
import java.util.ArrayList; //import java.util.ArrayList;
import java.util.List; //import java.util.List;
//
public class CoffeeMachineRecipeWrapper extends RecipeWrapperWithButton { //public class CoffeeMachineRecipeWrapper extends RecipeWrapperWithButton {
//
public final CoffeeIngredient ingredient; // public final CoffeeIngredient ingredient;
public final ItemStack theOutput; // public final ItemStack theOutput;
public final ItemStack cup = new ItemStack(ActuallyItems.itemCoffeeCup.get()); // public final ItemStack cup = new ItemStack(ActuallyItems.itemCoffeeCup.get());
//
public CoffeeMachineRecipeWrapper(CoffeeIngredient ingredient) { // public CoffeeMachineRecipeWrapper(CoffeeIngredient ingredient) {
this.ingredient = ingredient; // this.ingredient = ingredient;
//
this.theOutput = new ItemStack(ActuallyItems.itemCoffee); // this.theOutput = new ItemStack(ActuallyItems.itemCoffee);
ActuallyAdditionsAPI.methodHandler.addEffectToStack(this.theOutput, this.ingredient); // ActuallyAdditionsAPI.methodHandler.addEffectToStack(this.theOutput, this.ingredient);
} // }
//
@Override // @Override
public void getIngredients(IIngredients ingredients) { // public void getIngredients(IIngredients ingredients) {
List<ItemStack> list = new ArrayList<>(); // List<ItemStack> list = new ArrayList<>();
for (ItemStack s : this.ingredient.getInput().getMatchingStacks()) { // for (ItemStack s : this.ingredient.getInput().getMatchingStacks()) {
list.add(s); // list.add(s);
} // }
list.add(this.cup); // list.add(this.cup);
for (ItemStack s : TileEntityCoffeeMachine.COFFEE.getMatchingStacks()) { // for (ItemStack s : TileEntityCoffeeMachine.COFFEE.getMatchingStacks()) {
list.add(s); // list.add(s);
} // }
ingredients.setInputs(VanillaTypes.ITEM, list); // ingredients.setInputs(VanillaTypes.ITEM, list);
//
ingredients.setOutput(VanillaTypes.ITEM, this.theOutput); // ingredients.setOutput(VanillaTypes.ITEM, this.theOutput);
} // }
//
@Override // @Override
public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) { // public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) {
if (!Strings.isNullOrEmpty(this.ingredient.getExtraText())) { // if (!Strings.isNullOrEmpty(this.ingredient.getExtraText())) {
minecraft.fontRenderer.drawString(StringUtil.localize("container.nei." + ActuallyAdditions.MODID + ".coffee.special") + ":", 2, 4, StringUtil.DECIMAL_COLOR_GRAY_TEXT, false); // minecraft.fontRenderer.drawString(StringUtil.localize("container.nei." + ActuallyAdditions.MODID + ".coffee.special") + ":", 2, 4, StringUtil.DECIMAL_COLOR_GRAY_TEXT, false);
minecraft.fontRenderer.drawString(this.ingredient.getExtraText(), 2, 16, StringUtil.DECIMAL_COLOR_GRAY_TEXT, false); // minecraft.fontRenderer.drawString(this.ingredient.getExtraText(), 2, 16, StringUtil.DECIMAL_COLOR_GRAY_TEXT, false);
} // }
//
if (this.ingredient.getMaxAmplifier() > 0) { // if (this.ingredient.getMaxAmplifier() > 0) {
minecraft.fontRenderer.drawString(StringUtil.localize("container.nei." + ActuallyAdditions.MODID + ".coffee.maxAmount") + ": " + this.ingredient.getMaxAmplifier(), 2, 28, StringUtil.DECIMAL_COLOR_GRAY_TEXT, false); // minecraft.fontRenderer.drawString(StringUtil.localize("container.nei." + ActuallyAdditions.MODID + ".coffee.maxAmount") + ": " + this.ingredient.getMaxAmplifier(), 2, 28, StringUtil.DECIMAL_COLOR_GRAY_TEXT, false);
} // }
//
super.drawInfo(minecraft, recipeWidth, recipeHeight, mouseX, mouseY); // super.drawInfo(minecraft, recipeWidth, recipeHeight, mouseX, mouseY);
} // }
//
@Override // @Override
public int getButtonX() { // public int getButtonX() {
return 0; // return 0;
} // }
//
@Override // @Override
public int getButtonY() { // public int getButtonY() {
return 68; // return 68;
} // }
//
@Override // @Override
public IBookletPage getPage() { // public IBookletPage getPage() {
return BookletUtils.findFirstPageForStack(new ItemStack(ActuallyBlocks.blockCoffeeMachine)); // return BookletUtils.findFirstPageForStack(new ItemStack(ActuallyBlocks.blockCoffeeMachine));
} // }
} //}

View file

@ -1,68 +1,68 @@
/* ///*
* This file ("CrusherRecipeCategory.java") is part of the Actually Additions mod for Minecraft. // * This file ("CrusherRecipeCategory.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed // * It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at // * under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense // * http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions // * View the source code at https://github.com/Ellpeck/ActuallyAdditions
* // *
* © 2015-2017 Ellpeck // * © 2015-2017 Ellpeck
*/ // */
//
package de.ellpeck.actuallyadditions.mod.jei.crusher; //package de.ellpeck.actuallyadditions.mod.jei.crusher;
//
import java.util.Arrays; //import java.util.Arrays;
//
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; //import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.util.AssetUtil; //import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
import de.ellpeck.actuallyadditions.mod.util.StackUtil; //import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import de.ellpeck.actuallyadditions.mod.util.StringUtil; //import de.ellpeck.actuallyadditions.mod.util.StringUtil;
import mezz.jei.api.IGuiHelper; //import mezz.jei.api.IGuiHelper;
import mezz.jei.api.gui.IDrawable; //import mezz.jei.api.gui.IDrawable;
import mezz.jei.api.gui.IRecipeLayout; //import mezz.jei.api.gui.IRecipeLayout;
import mezz.jei.api.ingredients.IIngredients; //import mezz.jei.api.ingredients.IIngredients;
import mezz.jei.api.recipe.IRecipeCategory; //import mezz.jei.api.recipe.IRecipeCategory;
//
public class CrusherRecipeCategory implements IRecipeCategory<CrusherRecipeWrapper> { //public class CrusherRecipeCategory implements IRecipeCategory<CrusherRecipeWrapper> {
//
public static final String NAME = "actuallyadditions.crushing"; // public static final String NAME = "actuallyadditions.crushing";
//
private final IDrawable background; // private final IDrawable background;
//
public CrusherRecipeCategory(IGuiHelper helper) { // public CrusherRecipeCategory(IGuiHelper helper) {
this.background = helper.createDrawable(AssetUtil.getGuiLocation("gui_grinder"), 60, 13, 56, 79); // this.background = helper.createDrawable(AssetUtil.getGuiLocation("gui_grinder"), 60, 13, 56, 79);
} // }
//
@Override // @Override
public String getUid() { // public String getUid() {
return NAME; // return NAME;
} // }
//
@Override // @Override
public String getTitle() { // public String getTitle() {
return StringUtil.localize("container.nei." + NAME + ".name"); // return StringUtil.localize("container.nei." + NAME + ".name");
} // }
//
@Override // @Override
public String getModName() { // public String getModName() {
return ActuallyAdditions.NAME; // return ActuallyAdditions.NAME;
} // }
//
@Override // @Override
public IDrawable getBackground() { // public IDrawable getBackground() {
return this.background; // return this.background;
} // }
//
@Override // @Override
public void setRecipe(IRecipeLayout recipeLayout, CrusherRecipeWrapper wrapper, IIngredients ingredients) { // public void setRecipe(IRecipeLayout recipeLayout, CrusherRecipeWrapper wrapper, IIngredients ingredients) {
recipeLayout.getItemStacks().init(0, true, 19, 7); // recipeLayout.getItemStacks().init(0, true, 19, 7);
recipeLayout.getItemStacks().set(0, Arrays.asList(wrapper.theRecipe.getInput().getMatchingStacks())); // recipeLayout.getItemStacks().set(0, Arrays.asList(wrapper.theRecipe.getInput().getMatchingStacks()));
//
recipeLayout.getItemStacks().init(1, false, 7, 55); // recipeLayout.getItemStacks().init(1, false, 7, 55);
recipeLayout.getItemStacks().set(1, wrapper.theRecipe.getOutputOne()); // recipeLayout.getItemStacks().set(1, wrapper.theRecipe.getOutputOne());
//
if (StackUtil.isValid(wrapper.theRecipe.getOutputTwo())) { // if (StackUtil.isValid(wrapper.theRecipe.getOutputTwo())) {
recipeLayout.getItemStacks().init(2, false, 31, 55); // recipeLayout.getItemStacks().init(2, false, 31, 55);
recipeLayout.getItemStacks().set(2, wrapper.theRecipe.getOutputTwo()); // recipeLayout.getItemStacks().set(2, wrapper.theRecipe.getOutputTwo());
} // }
} // }
} //}

View file

@ -1,72 +1,72 @@
/* ///*
* This file ("CrusherRecipeWrapper.java") is part of the Actually Additions mod for Minecraft. // * This file ("CrusherRecipeWrapper.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed // * It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at // * under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense // * http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions // * View the source code at https://github.com/Ellpeck/ActuallyAdditions
* // *
* © 2015-2017 Ellpeck // * © 2015-2017 Ellpeck
*/ // */
//
package de.ellpeck.actuallyadditions.mod.jei.crusher; //package de.ellpeck.actuallyadditions.mod.jei.crusher;
//
import de.ellpeck.actuallyadditions.api.booklet.IBookletPage; //import de.ellpeck.actuallyadditions.api.booklet.IBookletPage;
import de.ellpeck.actuallyadditions.api.recipe.CrusherRecipe; //import de.ellpeck.actuallyadditions.api.recipe.CrusherRecipe;
import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks; //import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks;
import de.ellpeck.actuallyadditions.mod.booklet.misc.BookletUtils; //import de.ellpeck.actuallyadditions.mod.booklet.misc.BookletUtils;
import de.ellpeck.actuallyadditions.mod.jei.RecipeWrapperWithButton; //import de.ellpeck.actuallyadditions.mod.jei.RecipeWrapperWithButton;
import de.ellpeck.actuallyadditions.mod.util.StackUtil; //import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import de.ellpeck.actuallyadditions.mod.util.StringUtil; //import de.ellpeck.actuallyadditions.mod.util.StringUtil;
import mezz.jei.api.ingredients.IIngredients; //import mezz.jei.api.ingredients.IIngredients;
import mezz.jei.api.ingredients.VanillaTypes; //import mezz.jei.api.ingredients.VanillaTypes;
import net.minecraft.client.Minecraft; //import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack; //import net.minecraft.item.ItemStack;
//
import java.util.ArrayList; //import java.util.ArrayList;
import java.util.Arrays; //import java.util.Arrays;
import java.util.List; //import java.util.List;
//
public class CrusherRecipeWrapper extends RecipeWrapperWithButton { //public class CrusherRecipeWrapper extends RecipeWrapperWithButton {
//
public final CrusherRecipe theRecipe; // public final CrusherRecipe theRecipe;
//
public CrusherRecipeWrapper(CrusherRecipe recipe) { // public CrusherRecipeWrapper(CrusherRecipe recipe) {
this.theRecipe = recipe; // this.theRecipe = recipe;
} // }
//
@Override // @Override
public void getIngredients(IIngredients ingredients) { // public void getIngredients(IIngredients ingredients) {
ingredients.setInputs(VanillaTypes.ITEM, Arrays.asList(this.theRecipe.getInput().getMatchingStacks())); // ingredients.setInputs(VanillaTypes.ITEM, Arrays.asList(this.theRecipe.getInput().getMatchingStacks()));
//
List<ItemStack> list = new ArrayList<>(); // List<ItemStack> list = new ArrayList<>();
list.add(this.theRecipe.getOutputOne()); // list.add(this.theRecipe.getOutputOne());
if (StackUtil.isValid(this.theRecipe.getOutputTwo())) { // if (StackUtil.isValid(this.theRecipe.getOutputTwo())) {
list.add(this.theRecipe.getOutputTwo()); // list.add(this.theRecipe.getOutputTwo());
} // }
ingredients.setOutputs(VanillaTypes.ITEM, list); // ingredients.setOutputs(VanillaTypes.ITEM, list);
} // }
//
@Override // @Override
public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) { // public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) {
if (StackUtil.isValid(this.theRecipe.getOutputTwo())) { // if (StackUtil.isValid(this.theRecipe.getOutputTwo())) {
minecraft.fontRenderer.drawString(this.theRecipe.getSecondChance() + "%", 60, 60, StringUtil.DECIMAL_COLOR_GRAY_TEXT, false); // minecraft.fontRenderer.drawString(this.theRecipe.getSecondChance() + "%", 60, 60, StringUtil.DECIMAL_COLOR_GRAY_TEXT, false);
} // }
//
super.drawInfo(minecraft, recipeWidth, recipeHeight, mouseX, mouseY); // super.drawInfo(minecraft, recipeWidth, recipeHeight, mouseX, mouseY);
} // }
//
@Override // @Override
public int getButtonX() { // public int getButtonX() {
return -5; // return -5;
} // }
//
@Override // @Override
public int getButtonY() { // public int getButtonY() {
return 26; // return 26;
} // }
//
@Override // @Override
public IBookletPage getPage() { // public IBookletPage getPage() {
return BookletUtils.findFirstPageForStack(new ItemStack(ActuallyBlocks.blockGrinder)); // return BookletUtils.findFirstPageForStack(new ItemStack(ActuallyBlocks.blockGrinder));
} // }
} //}

View file

@ -1,74 +1,74 @@
/* ///*
* This file ("EmpowererRecipeCategory.java") is part of the Actually Additions mod for Minecraft. // * This file ("EmpowererRecipeCategory.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed // * It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at // * under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense // * http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions // * View the source code at https://github.com/Ellpeck/ActuallyAdditions
* // *
* © 2015-2017 Ellpeck // * © 2015-2017 Ellpeck
*/ // */
//
package de.ellpeck.actuallyadditions.mod.jei.empowerer; //package de.ellpeck.actuallyadditions.mod.jei.empowerer;
//
import java.util.Arrays; //import java.util.Arrays;
//
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; //import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.util.AssetUtil; //import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
import de.ellpeck.actuallyadditions.mod.util.StringUtil; //import de.ellpeck.actuallyadditions.mod.util.StringUtil;
import mezz.jei.api.IGuiHelper; //import mezz.jei.api.IGuiHelper;
import mezz.jei.api.gui.IDrawable; //import mezz.jei.api.gui.IDrawable;
import mezz.jei.api.gui.IRecipeLayout; //import mezz.jei.api.gui.IRecipeLayout;
import mezz.jei.api.ingredients.IIngredients; //import mezz.jei.api.ingredients.IIngredients;
import mezz.jei.api.recipe.IRecipeCategory; //import mezz.jei.api.recipe.IRecipeCategory;
//
public class EmpowererRecipeCategory implements IRecipeCategory<EmpowererRecipeWrapper> { //public class EmpowererRecipeCategory implements IRecipeCategory<EmpowererRecipeWrapper> {
//
public static final String NAME = "actuallyadditions.empowerer"; // public static final String NAME = "actuallyadditions.empowerer";
//
private final IDrawable background; // private final IDrawable background;
//
public EmpowererRecipeCategory(IGuiHelper helper) { // public EmpowererRecipeCategory(IGuiHelper helper) {
this.background = helper.createDrawable(AssetUtil.getGuiLocation("gui_nei_empowerer"), 0, 0, 135, 80); // this.background = helper.createDrawable(AssetUtil.getGuiLocation("gui_nei_empowerer"), 0, 0, 135, 80);
} // }
//
@Override // @Override
public String getUid() { // public String getUid() {
return NAME; // return NAME;
} // }
//
@Override // @Override
public String getTitle() { // public String getTitle() {
return StringUtil.localize("container.nei." + NAME + ".name"); // return StringUtil.localize("container.nei." + NAME + ".name");
} // }
//
@Override // @Override
public String getModName() { // public String getModName() {
return ActuallyAdditions.NAME; // return ActuallyAdditions.NAME;
} // }
//
@Override // @Override
public IDrawable getBackground() { // public IDrawable getBackground() {
return this.background; // return this.background;
} // }
//
@Override // @Override
public void setRecipe(IRecipeLayout recipeLayout, EmpowererRecipeWrapper wrapper, IIngredients ingredients) { // public void setRecipe(IRecipeLayout recipeLayout, EmpowererRecipeWrapper wrapper, IIngredients ingredients) {
recipeLayout.getItemStacks().init(0, true, 31, 31); // recipeLayout.getItemStacks().init(0, true, 31, 31);
recipeLayout.getItemStacks().set(0, Arrays.asList(wrapper.theRecipe.getInput().getMatchingStacks())); // recipeLayout.getItemStacks().set(0, Arrays.asList(wrapper.theRecipe.getInput().getMatchingStacks()));
//
recipeLayout.getItemStacks().init(1, true, 1, 31); // recipeLayout.getItemStacks().init(1, true, 1, 31);
recipeLayout.getItemStacks().set(1, Arrays.asList(wrapper.theRecipe.getStandOne().getMatchingStacks())); // recipeLayout.getItemStacks().set(1, Arrays.asList(wrapper.theRecipe.getStandOne().getMatchingStacks()));
//
recipeLayout.getItemStacks().init(2, true, 31, 1); // recipeLayout.getItemStacks().init(2, true, 31, 1);
recipeLayout.getItemStacks().set(2, Arrays.asList(wrapper.theRecipe.getStandTwo().getMatchingStacks())); // recipeLayout.getItemStacks().set(2, Arrays.asList(wrapper.theRecipe.getStandTwo().getMatchingStacks()));
//
recipeLayout.getItemStacks().init(3, true, 61, 31); // recipeLayout.getItemStacks().init(3, true, 61, 31);
recipeLayout.getItemStacks().set(3, Arrays.asList(wrapper.theRecipe.getStandThree().getMatchingStacks())); // recipeLayout.getItemStacks().set(3, Arrays.asList(wrapper.theRecipe.getStandThree().getMatchingStacks()));
//
recipeLayout.getItemStacks().init(4, true, 31, 61); // recipeLayout.getItemStacks().init(4, true, 31, 61);
recipeLayout.getItemStacks().set(4, Arrays.asList(wrapper.theRecipe.getStandFour().getMatchingStacks())); // recipeLayout.getItemStacks().set(4, Arrays.asList(wrapper.theRecipe.getStandFour().getMatchingStacks()));
//
recipeLayout.getItemStacks().init(5, false, 112, 31); // recipeLayout.getItemStacks().init(5, false, 112, 31);
recipeLayout.getItemStacks().set(5, wrapper.theRecipe.getOutput()); // recipeLayout.getItemStacks().set(5, wrapper.theRecipe.getOutput());
} // }
} //}

View file

@ -1,70 +1,70 @@
/* ///*
* This file ("EmpowererRecipeWrapper.java") is part of the Actually Additions mod for Minecraft. // * This file ("EmpowererRecipeWrapper.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed // * It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at // * under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense // * http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions // * View the source code at https://github.com/Ellpeck/ActuallyAdditions
* // *
* © 2015-2017 Ellpeck // * © 2015-2017 Ellpeck
*/ // */
//
package de.ellpeck.actuallyadditions.mod.jei.empowerer; //package de.ellpeck.actuallyadditions.mod.jei.empowerer;
//
import de.ellpeck.actuallyadditions.api.booklet.IBookletPage; //import de.ellpeck.actuallyadditions.api.booklet.IBookletPage;
import de.ellpeck.actuallyadditions.api.recipe.EmpowererRecipe; //import de.ellpeck.actuallyadditions.api.recipe.EmpowererRecipe;
import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks; //import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks;
import de.ellpeck.actuallyadditions.mod.booklet.misc.BookletUtils; //import de.ellpeck.actuallyadditions.mod.booklet.misc.BookletUtils;
import de.ellpeck.actuallyadditions.mod.jei.RecipeWrapperWithButton; //import de.ellpeck.actuallyadditions.mod.jei.RecipeWrapperWithButton;
import mezz.jei.api.ingredients.IIngredients; //import mezz.jei.api.ingredients.IIngredients;
import mezz.jei.api.ingredients.VanillaTypes; //import mezz.jei.api.ingredients.VanillaTypes;
import net.minecraft.item.ItemStack; //import net.minecraft.item.ItemStack;
//
import java.util.ArrayList; //import java.util.ArrayList;
import java.util.List; //import java.util.List;
//
public class EmpowererRecipeWrapper extends RecipeWrapperWithButton { //public class EmpowererRecipeWrapper extends RecipeWrapperWithButton {
//
public final EmpowererRecipe theRecipe; // public final EmpowererRecipe theRecipe;
//
public EmpowererRecipeWrapper(EmpowererRecipe recipe) { // public EmpowererRecipeWrapper(EmpowererRecipe recipe) {
this.theRecipe = recipe; // this.theRecipe = recipe;
} // }
//
@Override // @Override
public void getIngredients(IIngredients ingredients) { // public void getIngredients(IIngredients ingredients) {
List<ItemStack> inputs = new ArrayList<>(); // List<ItemStack> inputs = new ArrayList<>();
for (ItemStack s : this.theRecipe.getInput().getMatchingStacks()) { // for (ItemStack s : this.theRecipe.getInput().getMatchingStacks()) {
inputs.add(s); // inputs.add(s);
} // }
for (ItemStack s : this.theRecipe.getStandOne().getMatchingStacks()) { // for (ItemStack s : this.theRecipe.getStandOne().getMatchingStacks()) {
inputs.add(s); // inputs.add(s);
} // }
for (ItemStack s : this.theRecipe.getStandTwo().getMatchingStacks()) { // for (ItemStack s : this.theRecipe.getStandTwo().getMatchingStacks()) {
inputs.add(s); // inputs.add(s);
} // }
for (ItemStack s : this.theRecipe.getStandThree().getMatchingStacks()) { // for (ItemStack s : this.theRecipe.getStandThree().getMatchingStacks()) {
inputs.add(s); // inputs.add(s);
} // }
for (ItemStack s : this.theRecipe.getStandFour().getMatchingStacks()) { // for (ItemStack s : this.theRecipe.getStandFour().getMatchingStacks()) {
inputs.add(s); // inputs.add(s);
} // }
//
ingredients.setInputs(VanillaTypes.ITEM, inputs); // ingredients.setInputs(VanillaTypes.ITEM, inputs);
ingredients.setOutput(VanillaTypes.ITEM, this.theRecipe.getOutput()); // ingredients.setOutput(VanillaTypes.ITEM, this.theRecipe.getOutput());
} // }
//
@Override // @Override
public int getButtonX() { // public int getButtonX() {
return 2; // return 2;
} // }
//
@Override // @Override
public int getButtonY() { // public int getButtonY() {
return 2; // return 2;
} // }
//
@Override // @Override
public IBookletPage getPage() { // public IBookletPage getPage() {
return BookletUtils.findFirstPageForStack(new ItemStack(ActuallyBlocks.blockEmpowerer)); // return BookletUtils.findFirstPageForStack(new ItemStack(ActuallyBlocks.blockEmpowerer));
} // }
} //}

View file

@ -1,69 +1,69 @@
/* ///*
* This file ("ReconstructorRecipeCategory.java") is part of the Actually Additions mod for Minecraft. // * This file ("ReconstructorRecipeCategory.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed // * It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at // * under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense // * http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions // * View the source code at https://github.com/Ellpeck/ActuallyAdditions
* // *
* © 2015-2017 Ellpeck // * © 2015-2017 Ellpeck
*/ // */
//
package de.ellpeck.actuallyadditions.mod.jei.reconstructor; //package de.ellpeck.actuallyadditions.mod.jei.reconstructor;
//
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; //import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks; //import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks;
import de.ellpeck.actuallyadditions.mod.util.AssetUtil; //import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
import de.ellpeck.actuallyadditions.mod.util.StringUtil; //import de.ellpeck.actuallyadditions.mod.util.StringUtil;
import mezz.jei.api.IGuiHelper; //import mezz.jei.api.IGuiHelper;
import mezz.jei.api.gui.IDrawable; //import mezz.jei.api.gui.IDrawable;
import mezz.jei.api.gui.IRecipeLayout; //import mezz.jei.api.gui.IRecipeLayout;
import mezz.jei.api.ingredients.IIngredients; //import mezz.jei.api.ingredients.IIngredients;
import mezz.jei.api.ingredients.VanillaTypes; //import mezz.jei.api.ingredients.VanillaTypes;
import mezz.jei.api.recipe.IRecipeCategory; //import mezz.jei.api.recipe.IRecipeCategory;
import net.minecraft.client.Minecraft; //import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack; //import net.minecraft.item.ItemStack;
//
public class ReconstructorRecipeCategory implements IRecipeCategory<ReconstructorRecipeWrapper> { //public class ReconstructorRecipeCategory implements IRecipeCategory<ReconstructorRecipeWrapper> {
//
public static final String NAME = "actuallyadditions.reconstructor"; // public static final String NAME = "actuallyadditions.reconstructor";
//
private static final ItemStack RECONSTRUCTOR = new ItemStack(ActuallyBlocks.blockAtomicReconstructor); // private static final ItemStack RECONSTRUCTOR = new ItemStack(ActuallyBlocks.blockAtomicReconstructor);
private final IDrawable background; // private final IDrawable background;
//
public ReconstructorRecipeCategory(IGuiHelper helper) { // public ReconstructorRecipeCategory(IGuiHelper helper) {
this.background = helper.createDrawable(AssetUtil.getGuiLocation("gui_nei_atomic_reconstructor"), 0, 0, 96, 60); // this.background = helper.createDrawable(AssetUtil.getGuiLocation("gui_nei_atomic_reconstructor"), 0, 0, 96, 60);
} // }
//
@Override // @Override
public String getUid() { // public String getUid() {
return NAME; // return NAME;
} // }
//
@Override // @Override
public String getTitle() { // public String getTitle() {
return StringUtil.localize("container.nei." + NAME + ".name"); // return StringUtil.localize("container.nei." + NAME + ".name");
} // }
//
@Override // @Override
public String getModName() { // public String getModName() {
return ActuallyAdditions.NAME; // return ActuallyAdditions.NAME;
} // }
//
@Override // @Override
public IDrawable getBackground() { // public IDrawable getBackground() {
return this.background; // return this.background;
} // }
//
@Override // @Override
public void drawExtras(Minecraft minecraft) { // public void drawExtras(Minecraft minecraft) {
AssetUtil.renderStackToGui(RECONSTRUCTOR, 34, 19, 1.0F); // AssetUtil.renderStackToGui(RECONSTRUCTOR, 34, 19, 1.0F);
} // }
//
@Override // @Override
public void setRecipe(IRecipeLayout recipeLayout, ReconstructorRecipeWrapper wrapper, IIngredients ingredients) { // public void setRecipe(IRecipeLayout recipeLayout, ReconstructorRecipeWrapper wrapper, IIngredients ingredients) {
recipeLayout.getItemStacks().init(0, true, 4, 18); // recipeLayout.getItemStacks().init(0, true, 4, 18);
recipeLayout.getItemStacks().set(0, ingredients.getInputs(VanillaTypes.ITEM).get(0).get(0)); // recipeLayout.getItemStacks().set(0, ingredients.getInputs(VanillaTypes.ITEM).get(0).get(0));
recipeLayout.getItemStacks().init(1, false, 66, 18); // recipeLayout.getItemStacks().init(1, false, 66, 18);
recipeLayout.getItemStacks().set(1, ingredients.getOutputs(VanillaTypes.ITEM).get(0).get(0)); // recipeLayout.getItemStacks().set(1, ingredients.getOutputs(VanillaTypes.ITEM).get(0).get(0));
} // }
} //}

View file

@ -1,98 +1,98 @@
/* ///*
* This file ("ReconstructorRecipeWrapper.java") is part of the Actually Additions mod for Minecraft. // * This file ("ReconstructorRecipeWrapper.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed // * It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at // * under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense // * http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions // * View the source code at https://github.com/Ellpeck/ActuallyAdditions
* // *
* © 2015-2017 Ellpeck // * © 2015-2017 Ellpeck
*/ // */
//
package de.ellpeck.actuallyadditions.mod.jei.reconstructor; //package de.ellpeck.actuallyadditions.mod.jei.reconstructor;
//
import de.ellpeck.actuallyadditions.api.booklet.IBookletPage; //import de.ellpeck.actuallyadditions.api.booklet.IBookletPage;
import de.ellpeck.actuallyadditions.api.recipe.LensConversionRecipe; //import de.ellpeck.actuallyadditions.api.recipe.LensConversionRecipe;
import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks; //import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks;
import de.ellpeck.actuallyadditions.mod.booklet.misc.BookletUtils; //import de.ellpeck.actuallyadditions.mod.booklet.misc.BookletUtils;
import de.ellpeck.actuallyadditions.mod.jei.RecipeWrapperWithButton; //import de.ellpeck.actuallyadditions.mod.jei.RecipeWrapperWithButton;
import de.ellpeck.actuallyadditions.mod.recipe.EnchBookConversion; //import de.ellpeck.actuallyadditions.mod.recipe.EnchBookConversion;
import mezz.jei.api.ingredients.IIngredients; //import mezz.jei.api.ingredients.IIngredients;
import mezz.jei.api.ingredients.VanillaTypes; //import mezz.jei.api.ingredients.VanillaTypes;
import mezz.jei.api.recipe.IRecipeWrapperFactory; //import mezz.jei.api.recipe.IRecipeWrapperFactory;
import net.minecraft.client.Minecraft; //import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.I18n; //import net.minecraft.client.resources.I18n;
import net.minecraft.init.Items; //import net.minecraft.init.Items;
import net.minecraft.item.ItemStack; //import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundNBT; //import net.minecraft.nbt.CompoundNBT;
import net.minecraft.nbt.ListNBT; //import net.minecraft.nbt.ListNBT;
import net.minecraft.nbt.NBTTagString; //import net.minecraft.nbt.NBTTagString;
//
import java.util.Arrays; //import java.util.Arrays;
//
public class ReconstructorRecipeWrapper extends RecipeWrapperWithButton { //public class ReconstructorRecipeWrapper extends RecipeWrapperWithButton {
//
public static final IRecipeWrapperFactory<LensConversionRecipe> FACTORY = (recipe) -> { // public static final IRecipeWrapperFactory<LensConversionRecipe> FACTORY = (recipe) -> {
if (recipe instanceof EnchBookConversion) { // if (recipe instanceof EnchBookConversion) {
return new EnchBookWrapper((EnchBookConversion) recipe); // return new EnchBookWrapper((EnchBookConversion) recipe);
} // }
return new ReconstructorRecipeWrapper(recipe); // return new ReconstructorRecipeWrapper(recipe);
}; // };
//
public final LensConversionRecipe theRecipe; // public final LensConversionRecipe theRecipe;
//
public ReconstructorRecipeWrapper(LensConversionRecipe recipe) { // public ReconstructorRecipeWrapper(LensConversionRecipe recipe) {
this.theRecipe = recipe; // this.theRecipe = recipe;
} // }
//
@Override // @Override
public void getIngredients(IIngredients ingredients) { // public void getIngredients(IIngredients ingredients) {
ingredients.setInputs(VanillaTypes.ITEM, Arrays.asList(this.theRecipe.getInput().getMatchingStacks())); // ingredients.setInputs(VanillaTypes.ITEM, Arrays.asList(this.theRecipe.getInput().getMatchingStacks()));
ingredients.setOutput(VanillaTypes.ITEM, this.theRecipe.getOutput()); // ingredients.setOutput(VanillaTypes.ITEM, this.theRecipe.getOutput());
} // }
//
@Override // @Override
public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) { // public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) {
minecraft.fontRenderer.drawString(this.theRecipe.getEnergyUsed() + " " + I18n.format("actuallyadditions.cf"), 55, 0, 0xFFFFFF, true); // minecraft.fontRenderer.drawString(this.theRecipe.getEnergyUsed() + " " + I18n.format("actuallyadditions.cf"), 55, 0, 0xFFFFFF, true);
super.drawInfo(minecraft, recipeWidth, recipeHeight, mouseX, mouseY); // super.drawInfo(minecraft, recipeWidth, recipeHeight, mouseX, mouseY);
} // }
//
@Override // @Override
public int getButtonX() { // public int getButtonX() {
return 3; // return 3;
} // }
//
@Override // @Override
public int getButtonY() { // public int getButtonY() {
return 40; // return 40;
} // }
//
@Override // @Override
public IBookletPage getPage() { // public IBookletPage getPage() {
return BookletUtils.findFirstPageForStack(new ItemStack(ActuallyBlocks.blockAtomicReconstructor)); // return BookletUtils.findFirstPageForStack(new ItemStack(ActuallyBlocks.blockAtomicReconstructor));
} // }
//
public static class EnchBookWrapper extends ReconstructorRecipeWrapper { // public static class EnchBookWrapper extends ReconstructorRecipeWrapper {
//
private static final ItemStack BOOK = new ItemStack(Items.ENCHANTED_BOOK); // private static final ItemStack BOOK = new ItemStack(Items.ENCHANTED_BOOK);
private static final ItemStack OUT = new ItemStack(Items.ENCHANTED_BOOK); // private static final ItemStack OUT = new ItemStack(Items.ENCHANTED_BOOK);
//
static { // static {
OUT.setStackDisplayName("Split Book"); // OUT.setStackDisplayName("Split Book");
CompoundNBT t = OUT.getTagCompound().getCompoundTag("display"); // CompoundNBT t = OUT.getTagCompound().getCompoundTag("display");
ListNBT l = new ListNBT(); // ListNBT l = new ListNBT();
l.appendTag(new NBTTagString("Book will be split based on enchantments!")); // l.appendTag(new NBTTagString("Book will be split based on enchantments!"));
t.setTag("Lore", l); // t.setTag("Lore", l);
} // }
//
public EnchBookWrapper(EnchBookConversion recipe) { // public EnchBookWrapper(EnchBookConversion recipe) {
super(recipe); // super(recipe);
} // }
//
@Override // @Override
public void getIngredients(IIngredients ingredients) { // public void getIngredients(IIngredients ingredients) {
ingredients.setInput(VanillaTypes.ITEM, BOOK); // ingredients.setInput(VanillaTypes.ITEM, BOOK);
ingredients.setOutput(VanillaTypes.ITEM, OUT); // ingredients.setOutput(VanillaTypes.ITEM, OUT);
} // }
//
} // }
} //}

View file

@ -19,7 +19,7 @@ import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
public class PacketClientToServer implements IMessage { public class PacketClientToServer {
private CompoundNBT data; private CompoundNBT data;
private IDataHandler handler; private IDataHandler handler;

View file

@ -21,7 +21,8 @@ import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.CompoundNBT;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
public final class PacketHandlerHelper { public final class PacketHandlerHelper {
@ -44,7 +45,7 @@ public final class PacketHandlerHelper {
CompoundNBT data = new CompoundNBT(); CompoundNBT data = new CompoundNBT();
PlayerData.getDataFromPlayer(player).writeToNBT(data, false); PlayerData.getDataFromPlayer(player).writeToNBT(data, false);
compound.setTag("Data", data); compound.put("Data", data);
if (player instanceof ServerPlayerEntity) { if (player instanceof ServerPlayerEntity) {
PacketHandler.THE_NETWORK.sendTo(new PacketServerToClient(compound, PacketHandler.SYNC_PLAYER_DATA), (ServerPlayerEntity) player); PacketHandler.THE_NETWORK.sendTo(new PacketServerToClient(compound, PacketHandler.SYNC_PLAYER_DATA), (ServerPlayerEntity) player);
@ -65,11 +66,11 @@ public final class PacketHandlerHelper {
PlayerSave data = PlayerData.getDataFromPlayer(player); PlayerSave data = PlayerData.getDataFromPlayer(player);
if (type == 0) { if (type == 0) {
compound.setTag("Bookmarks", data.saveBookmarks()); compound.put("Bookmarks", data.saveBookmarks());
} else if (type == 1) { } else if (type == 1) {
compound.putBoolean("DidBookTutorial", data.didBookTutorial); compound.putBoolean("DidBookTutorial", data.didBookTutorial);
} else if (type == 2) { } else if (type == 2) {
compound.setTag("Trials", data.saveTrials()); compound.put("Trials", data.saveTrials());
int total = 0; int total = 0;
for (IBookletChapter chapter : ActuallyAdditionsAPI.entryTrials.getAllChapters()) { for (IBookletChapter chapter : ActuallyAdditionsAPI.entryTrials.getAllChapters()) {
@ -96,7 +97,7 @@ public final class PacketHandlerHelper {
compound.putInt("WorldID", tile.getWorld().provider.getDimension()); compound.putInt("WorldID", tile.getWorld().provider.getDimension());
compound.putInt("PlayerID", Minecraft.getInstance().player.getEntityId()); compound.putInt("PlayerID", Minecraft.getInstance().player.getEntityId());
compound.putInt("NumberID", id); compound.putInt("NumberID", id);
compound.setDouble("Number", number); compound.putDouble("Number", number);
PacketHandler.THE_NETWORK.sendToServer(new PacketClientToServer(compound, PacketHandler.GUI_NUMBER_TO_TILE_HANDLER)); PacketHandler.THE_NETWORK.sendToServer(new PacketClientToServer(compound, PacketHandler.GUI_NUMBER_TO_TILE_HANDLER));
} }
} }

View file

@ -10,133 +10,120 @@
package de.ellpeck.actuallyadditions.mod.recipe; package de.ellpeck.actuallyadditions.mod.recipe;
import java.util.ArrayList;
import java.util.List;
import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI;
import de.ellpeck.actuallyadditions.api.recipe.CrusherRecipe;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.config.values.ConfigStringListValues;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.OreDictionary;
import net.minecraftforge.oredict.OreIngredient;
public final class CrusherRecipeRegistry { public final class CrusherRecipeRegistry {
//
public static final ArrayList<SearchCase> SEARCH_CASES = new ArrayList<>(); // public static final ArrayList<SearchCase> SEARCH_CASES = new ArrayList<>();
//
public static void registerFinally() { // public static void registerFinally() {
ArrayList<String> oresNoResult = new ArrayList<>(); // ArrayList<String> oresNoResult = new ArrayList<>();
int recipeStartedAt = ActuallyAdditionsAPI.CRUSHER_RECIPES.size(); // int recipeStartedAt = ActuallyAdditionsAPI.CRUSHER_RECIPES.size();
//
for (String ore : OreDictionary.getOreNames()) { // for (String ore : OreDictionary.getOreNames()) {
if (!hasException(ore)) { // if (!hasException(ore)) {
for (SearchCase theCase : SEARCH_CASES) { // for (SearchCase theCase : SEARCH_CASES) {
if (ore.length() > theCase.theCase.length()) { // if (ore.length() > theCase.theCase.length()) {
if (ore.substring(0, theCase.theCase.length()).equals(theCase.theCase)) { // if (ore.substring(0, theCase.theCase.length()).equals(theCase.theCase)) {
String outputOre = theCase.resultPreString + ore.substring(theCase.theCase.length()); // String outputOre = theCase.resultPreString + ore.substring(theCase.theCase.length());
List<ItemStack> outputs = OreDictionary.getOres(outputOre, false); // List<ItemStack> outputs = OreDictionary.getOres(outputOre, false);
ItemStack output = outputs.isEmpty() ? ItemStack.EMPTY : outputs.get(0).copy(); // ItemStack output = outputs.isEmpty() ? ItemStack.EMPTY : outputs.get(0).copy();
output.setCount(theCase.resultAmount); // output.setCount(theCase.resultAmount);
if (output.isEmpty()) { // if (output.isEmpty()) {
if (!oresNoResult.contains(ore)) { // if (!oresNoResult.contains(ore)) {
oresNoResult.add(ore); // oresNoResult.add(ore);
} // }
} else ActuallyAdditionsAPI.addCrusherRecipe(new OreIngredient(ore), output, StackUtil.getEmpty(), 0); // } else ActuallyAdditionsAPI.addCrusherRecipe(new OreIngredient(ore), output, StackUtil.getEmpty(), 0);
} // }
} // }
} // }
} // }
} // }
//
ArrayList<String> addedRecipes = new ArrayList<>(); // ArrayList<String> addedRecipes = new ArrayList<>();
for (int i = recipeStartedAt; i < ActuallyAdditionsAPI.CRUSHER_RECIPES.size(); i++) { // for (int i = recipeStartedAt; i < ActuallyAdditionsAPI.CRUSHER_RECIPES.size(); i++) {
CrusherRecipe recipe = ActuallyAdditionsAPI.CRUSHER_RECIPES.get(i); // CrusherRecipe recipe = ActuallyAdditionsAPI.CRUSHER_RECIPES.get(i);
addedRecipes.add(recipe.getInput().getMatchingStacks() + " -> " + recipe.getOutputOne()); // addedRecipes.add(recipe.getInput().getMatchingStacks() + " -> " + recipe.getOutputOne());
} // }
ActuallyAdditions.LOGGER.debug("Added " + addedRecipes.size() + " Crusher Recipes automatically: " + addedRecipes); // ActuallyAdditions.LOGGER.debug("Added " + addedRecipes.size() + " Crusher Recipes automatically: " + addedRecipes);
ActuallyAdditions.LOGGER.debug("Couldn't add " + oresNoResult.size() + " Crusher Recipes automatically, either because the inputs were missing outputs, or because they exist already: " + oresNoResult); // ActuallyAdditions.LOGGER.debug("Couldn't add " + oresNoResult.size() + " Crusher Recipes automatically, either because the inputs were missing outputs, or because they exist already: " + oresNoResult);
removeDuplicateRecipes(); // removeDuplicateRecipes();
} // }
//
public static void removeDuplicateRecipes() { // public static void removeDuplicateRecipes() {
ArrayList<CrusherRecipe> usable = new ArrayList<>(); // ArrayList<CrusherRecipe> usable = new ArrayList<>();
ArrayList<CrusherRecipe> removed = new ArrayList<>(); // ArrayList<CrusherRecipe> removed = new ArrayList<>();
for (CrusherRecipe r : ActuallyAdditionsAPI.CRUSHER_RECIPES) { // for (CrusherRecipe r : ActuallyAdditionsAPI.CRUSHER_RECIPES) {
boolean canUse = true; // boolean canUse = true;
if (r.getInput().getMatchingStacks().length == 0) canUse = false; // if (r.getInput().getMatchingStacks().length == 0) canUse = false;
else for (CrusherRecipe re : usable) { // else for (CrusherRecipe re : usable) {
if (re.getInput().apply(r.getInput().getMatchingStacks()[0])) canUse = false; // if (re.getInput().apply(r.getInput().getMatchingStacks()[0])) canUse = false;
} // }
//
if (canUse) usable.add(r); // if (canUse) usable.add(r);
else removed.add(r); // else removed.add(r);
} // }
//
ActuallyAdditionsAPI.CRUSHER_RECIPES.clear(); // ActuallyAdditionsAPI.CRUSHER_RECIPES.clear();
ActuallyAdditionsAPI.CRUSHER_RECIPES.addAll(usable); // ActuallyAdditionsAPI.CRUSHER_RECIPES.addAll(usable);
ActuallyAdditions.LOGGER.debug(String.format("Removed %s crusher recipes that had dupliate inputs, %s remain.", removed.size(), usable.size())); // ActuallyAdditions.LOGGER.debug(String.format("Removed %s crusher recipes that had dupliate inputs, %s remain.", removed.size(), usable.size()));
} // }
//
public static boolean hasBlacklistedOutput(ItemStack output, String[] config) { // public static boolean hasBlacklistedOutput(ItemStack output, String[] config) {
if (StackUtil.isValid(output)) { // if (StackUtil.isValid(output)) {
Item item = output.getItem(); // Item item = output.getItem();
if (item != null) { // if (item != null) {
String reg = item.getRegistryName().toString(); // String reg = item.getRegistryName().toString();
//
for (String conf : config) { // for (String conf : config) {
String confReg = conf; // String confReg = conf;
int meta = 0; // int meta = 0;
//
if (conf.contains("@")) { // if (conf.contains("@")) {
try { // try {
String[] split = conf.split("@"); // String[] split = conf.split("@");
confReg = split[0]; // confReg = split[0];
meta = Integer.parseInt(split[1]); // meta = Integer.parseInt(split[1]);
} catch (Exception e) { // } catch (Exception e) {
ActuallyAdditions.LOGGER.warn("A config option appears to be incorrect: The entry " + conf + " can't be parsed!"); // ActuallyAdditions.LOGGER.warn("A config option appears to be incorrect: The entry " + conf + " can't be parsed!");
} // }
} // }
//
if (reg.equals(confReg) && output.getItemDamage() == meta) { return true; } // if (reg.equals(confReg) && output.getItemDamage() == meta) { return true; }
} // }
//
return false; // return false;
} // }
} // }
return true; // return true;
} // }
//
public static boolean hasException(String ore) { // public static boolean hasException(String ore) {
for (String conf : ConfigStringListValues.CRUSHER_RECIPE_EXCEPTIONS.getValue()) { // for (String conf : ConfigStringListValues.CRUSHER_RECIPE_EXCEPTIONS.getValue()) {
if (conf.equals(ore)) { return true; } // if (conf.equals(ore)) { return true; }
} // }
return false; // return false;
} // }
//
public static CrusherRecipe getRecipeFromInput(ItemStack input) { // public static CrusherRecipe getRecipeFromInput(ItemStack input) {
for (CrusherRecipe recipe : ActuallyAdditionsAPI.CRUSHER_RECIPES) // for (CrusherRecipe recipe : ActuallyAdditionsAPI.CRUSHER_RECIPES)
if (recipe.matches(input)) return recipe; // if (recipe.matches(input)) return recipe;
return null; // return null;
} // }
//
public static class SearchCase { // public static class SearchCase {
//
final String theCase; // final String theCase;
final int resultAmount; // final int resultAmount;
final String resultPreString; // final String resultPreString;
//
public SearchCase(String theCase, int resultAmount) { // public SearchCase(String theCase, int resultAmount) {
this(theCase, resultAmount, "dust"); // this(theCase, resultAmount, "dust");
} // }
//
public SearchCase(String theCase, int resultAmount, String resultPreString) { // public SearchCase(String theCase, int resultAmount, String resultPreString) {
this.theCase = theCase; // this.theCase = theCase;
this.resultAmount = resultAmount; // this.resultAmount = resultAmount;
this.resultPreString = resultPreString; // this.resultPreString = resultPreString;
} // }
} // }
} }