This commit is contained in:
Surya 2021-05-22 20:17:57 +05:30
parent 6fbec1c7fe
commit 3af990b3c3
25 changed files with 418 additions and 290 deletions

View File

@ -2,50 +2,60 @@ package me.bionicbeanie.mods;
import org.lwjgl.glfw.GLFW; import org.lwjgl.glfw.GLFW;
import me.bionicbeanie.mods.api.ICoordinateListHandler;
import me.bionicbeanie.mods.api.ICoordinateSaveHandler;
import me.bionicbeanie.mods.api.IFileStore; import me.bionicbeanie.mods.api.IFileStore;
import me.bionicbeanie.mods.api.IPositionCalculator; import me.bionicbeanie.mods.api.IGui;
import me.bionicbeanie.mods.api.IScreen; import me.bionicbeanie.mods.api.IGuiHandler;
import me.bionicbeanie.mods.gui.CoordinatesGui; import me.bionicbeanie.mods.api.IPlayerLocator;
import me.bionicbeanie.mods.gui.CoordinatesScreen; import me.bionicbeanie.mods.api.IScreenController;
import me.bionicbeanie.mods.impl.CoordinateListHandler; import me.bionicbeanie.mods.gui.ListGuiHandler;
import me.bionicbeanie.mods.impl.CoordinateSaveHandler; import me.bionicbeanie.mods.gui.SaveCoordinatesGui;
import me.bionicbeanie.mods.gui.SaveGuiHandler;
import me.bionicbeanie.mods.gui.ScreenController;
import me.bionicbeanie.mods.impl.FileStore; import me.bionicbeanie.mods.impl.FileStore;
import me.bionicbeanie.mods.impl.PositionCalculator; import me.bionicbeanie.mods.impl.PlayerLocator;
import me.bionicbeanie.mods.model.PlayerRawPosition;
import net.fabricmc.api.ClientModInitializer; import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.options.KeyBinding; import net.minecraft.client.options.KeyBinding;
import net.minecraft.client.util.InputUtil; import net.minecraft.client.util.InputUtil;
public class SaveCoordinatesClient implements ClientModInitializer { public class SaveCoordinatesClient implements ClientModInitializer {
private static IPositionCalculator positionCalculator = new PositionCalculator(); private static IPlayerLocator locator = new PlayerLocator();
@Override @Override
public void onInitializeClient() { public void onInitializeClient() {
KeyBinding keyBinding = KeyBindingHelper.registerKeyBinding(new KeyBinding("key.savecoords.coords", KeyBinding keyBinding = registerKeyBinding();
InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_H, "category.savecoords.generic"));
ClientTickEvents.END_CLIENT_TICK.register(client -> { ClientTickEvents.END_CLIENT_TICK.register(client -> {
while (keyBinding.wasPressed()) { while (keyBinding.wasPressed()) {
PlayerRawPosition rawPosition = positionCalculator.locate(client); IGui gui = CreateModGui(client);
IFileStore fileStore = new FileStore(client.runDirectory.getAbsolutePath()); gui.showDefaultView();
ICoordinateSaveHandler saveHandler = new CoordinateSaveHandler(fileStore);
ICoordinateListHandler listHandler = new CoordinateListHandler(fileStore);
IScreen screen = new IScreen() {
@Override
public void close() {
client.openScreen(null);
}
};
client.openScreen(
new CoordinatesScreen(new CoordinatesGui(rawPosition, saveHandler, screen, listHandler)));
} }
}); });
} }
private KeyBinding registerKeyBinding() {
String translationKey = "key.savecoords.coords";
String category = "category.savecoords.generic";
int keyBind = GLFW.GLFW_KEY_H;
KeyBinding keyBinding = new KeyBinding(translationKey, InputUtil.Type.KEYSYM, keyBind, category);
return KeyBindingHelper.registerKeyBinding(keyBinding);
}
private IGui CreateModGui(MinecraftClient client) {
IGui gui = new SaveCoordinatesGui();
IFileStore fileStore = new FileStore(client.runDirectory.getAbsolutePath());
IGuiHandler saveHandler = new SaveGuiHandler(fileStore, locator, client, gui);
IGuiHandler listHandler = new ListGuiHandler(fileStore, gui, client);
IScreenController screenController = new ScreenController(client);
gui.init(saveHandler, listHandler, screenController);
return gui;
}
} }

View File

@ -1,10 +0,0 @@
package me.bionicbeanie.mods.api;
import java.util.List;
import me.bionicbeanie.mods.model.PlayerPosition;
public interface ICoordinateListHandler {
List<PlayerPosition> list();
}

View File

@ -1,8 +0,0 @@
package me.bionicbeanie.mods.api;
import me.bionicbeanie.mods.model.PlayerPosition;
public interface ICoordinateSaveHandler{
void save(PlayerPosition position);
}

View File

@ -0,0 +1,13 @@
package me.bionicbeanie.mods.api;
public interface IGui {
public void init(IGuiHandler saveHandler, IGuiHandler listHandler, IScreenController screenController);
public void showDefaultView();
public void showListView();
public void close();
}

View File

@ -0,0 +1,7 @@
package me.bionicbeanie.mods.api;
public interface IGuiHandler {
void placeWidgets(IRootGridPanel rootPanel);
}

View File

@ -3,7 +3,7 @@ package me.bionicbeanie.mods.api;
import me.bionicbeanie.mods.model.PlayerRawPosition; import me.bionicbeanie.mods.model.PlayerRawPosition;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
public interface IPositionCalculator { public interface IPlayerLocator {
public PlayerRawPosition locate(MinecraftClient client); public PlayerRawPosition locate(MinecraftClient client);
} }

View File

@ -0,0 +1,13 @@
package me.bionicbeanie.mods.api;
import io.github.cottonmc.cotton.gui.GuiDescription;
import io.github.cottonmc.cotton.gui.widget.WWidget;
public interface IRootGridPanel {
public void add(WWidget widget, int x, int y, int w, int h);
public void validate(GuiDescription gui);
public void reset();
}

View File

@ -1,6 +0,0 @@
package me.bionicbeanie.mods.api;
public interface IScreen {
void close();
}

View File

@ -0,0 +1,10 @@
package me.bionicbeanie.mods.api;
import net.minecraft.client.gui.screen.Screen;
public interface IScreenController {
public void openScreen(Screen screen);
public void closeScreen();
}

View File

@ -1,144 +0,0 @@
package me.bionicbeanie.mods.gui;
import java.util.ArrayList;
import java.util.List;
import java.util.function.BiConsumer;
import io.github.cottonmc.cotton.gui.client.LightweightGuiDescription;
import io.github.cottonmc.cotton.gui.widget.WButton;
import io.github.cottonmc.cotton.gui.widget.WGridPanel;
import io.github.cottonmc.cotton.gui.widget.WListPanel;
import io.github.cottonmc.cotton.gui.widget.WText;
import io.github.cottonmc.cotton.gui.widget.WTextField;
import io.github.cottonmc.cotton.gui.widget.WWidget;
import me.bionicbeanie.mods.api.ICoordinateListHandler;
import me.bionicbeanie.mods.api.ICoordinateSaveHandler;
import me.bionicbeanie.mods.api.IScreen;
import me.bionicbeanie.mods.model.PlayerPosition;
import me.bionicbeanie.mods.model.PlayerRawPosition;
import me.bionicbeanie.mods.util.DimensionSpriteUtil;
import net.minecraft.text.LiteralText;
public class CoordinatesGui extends LightweightGuiDescription {
private WGridPanel root;
private ICoordinateSaveHandler coordinateSaveHandler;
private ICoordinateListHandler coordinateListHandler;
private PlayerRawPosition rawPosition;
private List<WWidget> children;
private IScreen screen;
public CoordinatesGui(PlayerRawPosition rawPosition, ICoordinateSaveHandler onSave, IScreen screen,
ICoordinateListHandler onList) {
this.root = createRootPanel();
this.rawPosition = rawPosition;
this.coordinateSaveHandler = onSave;
this.coordinateListHandler = onList;
this.screen = screen;
this.children = new ArrayList<>();
reset();
initializeDefaultView();
root.validate(this);
}
private void initializeDefaultView() {
WWidget xText = CreateWidgetForCoordinate(rawPosition.getX());
WWidget yText = CreateWidgetForCoordinate(rawPosition.getY());
WWidget zText = CreateWidgetForCoordinate(rawPosition.getZ());
add(xText, 0, 1, 2, 1);
add(yText, 0, 2, 2, 1);
add(zText, 0, 3, 2, 1);
WWidget icon = DimensionSpriteUtil.CreateWorldIcon(rawPosition.getWorldDimension());
add(icon, 4, 0, 1, 1);
WTextField name = CreateNameField();
add(name, 2, 2, 5, 1);
WWidget save = CreateSaveButton(coordinateSaveHandler, rawPosition, name);
add(save, 5, 5, 2, 1);
WWidget list = CreateListButton();
add(list, 0, 5, 2, 1);
}
private void initializeListView(List<PlayerPosition> playerPositions) {
BiConsumer<PlayerPosition, CoordinateListItem> configurator = (PlayerPosition position,
CoordinateListItem panel) -> {
panel.setPosition(position);
};
WListPanel<PlayerPosition, CoordinateListItem> listPanel = new WListPanel<>(playerPositions,
CoordinateListItem::new, configurator);
listPanel.setListItemHeight(2 * 18);
add(listPanel, 0, 0, 7, 7);
}
private void add(WWidget widget, int x, int y, int w, int h) {
root.add(widget, x, y, w, h);
children.add(widget);
}
private void reset() {
children.forEach(root::remove);
children.clear();
}
private WGridPanel createRootPanel() {
WGridPanel panel = new WGridPanel(18);
panel.setSize(7 * 18, 7 * 18);
setRootPanel(panel);
return panel;
}
private WWidget CreateWidgetForCoordinate(long l) {
return new WText(new LiteralText(String.valueOf(l)), 0x3939ac);
}
private WTextField CreateNameField() {
return new WTextField(new LiteralText("name"));
}
private WWidget CreateSaveButton(ICoordinateSaveHandler onSaveHandler, PlayerRawPosition rawPosition,
WTextField textField) {
WButton button = new WButton(new LiteralText("save"));
button.setOnClick(new Runnable() {
@Override
public void run() {
onSaveHandler.save(new PlayerPosition(rawPosition, textField.getText()));
reset();
screen.close();
}
});
return button;
}
private WWidget CreateListButton() {
CoordinatesGui gui = this;
WButton button = new WButton(new LiteralText("list"));
button.setOnClick(new Runnable() {
@Override
public void run() {
reset();
root.validate(gui);
List<PlayerPosition> playerPositions = coordinateListHandler.list();
initializeListView(playerPositions);
root.validate(gui);
}
});
return button;
}
}

View File

@ -8,25 +8,25 @@ import me.bionicbeanie.mods.util.DimensionSpriteUtil;
import net.minecraft.text.LiteralText; import net.minecraft.text.LiteralText;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
public class CoordinateListItem extends WPlainPanel{ public class CoordinatesPanel extends WPlainPanel {
private WLabel coordinates; private WLabel coordinates;
private WLabel location; private WLabel location;
private WSprite icon; private WSprite icon;
public CoordinateListItem() { public CoordinatesPanel() {
this.coordinates = new WLabel("Foo"); this.coordinates = new WLabel("Foo");
this.location = new WLabel("Foo"); this.location = new WLabel("Foo");
this.icon = new WSprite(new Identifier("minecraft:textures/item/ender_eye.png")); this.icon = new WSprite(new Identifier("minecraft:textures/item/ender_eye.png"));
this.add(icon, 0, 0, 1*18, 1*18); this.add(icon, 0, 0, 1 * 18, 1 * 18);
this.add(coordinates, 1*18, 0, 2*18, 1*18); this.add(coordinates, 1 * 18, 0, 2 * 18, 1 * 18);
this.add(location, 0, 1*18, 3*18, 1*18); this.add(location, 0, 1 * 18, 3 * 18, 1 * 18);
this.icon.setSize(1*18, 1*18); this.icon.setSize(1 * 18, 1 * 18);
this.coordinates.setSize(2*18, 1*18); this.coordinates.setSize(2 * 18, 1 * 18);
this.location.setSize(3*18, 1*18); this.location.setSize(3 * 18, 1 * 18);
this.setSize(3*18, 2*18); this.setSize(3 * 18, 2 * 18);
} }
public void setPosition(PlayerPosition position) { public void setPosition(PlayerPosition position) {

View File

@ -0,0 +1,22 @@
package me.bionicbeanie.mods.gui;
import io.github.cottonmc.cotton.gui.widget.WWidget;
import me.bionicbeanie.mods.api.IFileStore;
import me.bionicbeanie.mods.api.IGui;
import me.bionicbeanie.mods.api.IGuiHandler;
import net.minecraft.client.MinecraftClient;
public abstract class GuiHandlerBase implements IGuiHandler {
protected IFileStore fileStore;
protected IGui gui;
protected MinecraftClient client;
protected WWidget panel;
protected GuiHandlerBase(IFileStore fileStore, IGui gui, MinecraftClient client) {
this.fileStore = fileStore;
this.gui = gui;
this.client = client;
}
}

View File

@ -0,0 +1,78 @@
package me.bionicbeanie.mods.gui;
import java.io.IOException;
import java.util.List;
import java.util.function.BiConsumer;
import io.github.cottonmc.cotton.gui.widget.WLabel;
import io.github.cottonmc.cotton.gui.widget.WListPanel;
import io.github.cottonmc.cotton.gui.widget.WPlainPanel;
import io.github.cottonmc.cotton.gui.widget.WSprite;
import me.bionicbeanie.mods.api.IFileStore;
import me.bionicbeanie.mods.api.IGui;
import me.bionicbeanie.mods.api.IRootGridPanel;
import me.bionicbeanie.mods.model.PlayerPosition;
import me.bionicbeanie.mods.util.DimensionSpriteUtil;
import net.minecraft.client.MinecraftClient;
import net.minecraft.text.LiteralText;
import net.minecraft.util.Identifier;
public class ListGuiHandler extends GuiHandlerBase {
public ListGuiHandler(IFileStore fileStore, IGui gui, MinecraftClient client) {
super(fileStore, gui, client);
}
@Override
public void placeWidgets(IRootGridPanel root) {
BiConsumer<PlayerPosition, CoordinatesListItemPanel> configurator = (PlayerPosition position,
CoordinatesListItemPanel panel) -> {
panel.setPosition(position);
};
List<PlayerPosition> positions;
try {
positions = fileStore.list();
} catch (IOException e) {
e.printStackTrace();
return;
}
WListPanel<PlayerPosition, CoordinatesListItemPanel> listPanel = new WListPanel<>(positions,
CoordinatesListItemPanel::new, configurator);
listPanel.setListItemHeight(2 * 18);
root.add(listPanel, 0, 0, 7, 7);
}
public static class CoordinatesListItemPanel extends WPlainPanel {
private WLabel coordinates;
private WLabel location;
private WSprite icon;
public CoordinatesListItemPanel() {
this.coordinates = new WLabel("Foo");
this.location = new WLabel("Foo");
this.icon = new WSprite(new Identifier("minecraft:textures/item/ender_eye.png"));
this.add(icon, 0, 0, 1 * 18, 1 * 18);
this.add(coordinates, 1 * 18, 0, 2 * 18, 1 * 18);
this.add(location, 0, 1 * 18, 3 * 18, 1 * 18);
this.icon.setSize(1 * 18, 1 * 18);
this.coordinates.setSize(2 * 18, 1 * 18);
this.location.setSize(3 * 18, 1 * 18);
this.setSize(3 * 18, 2 * 18);
}
public void setPosition(PlayerPosition position) {
this.icon.setImage(DimensionSpriteUtil.CreateWorldIconIdentifier(position.getWorldDimension()));
this.location.setText(new LiteralText(position.getLocationName()));
this.coordinates.setText(new LiteralText(position.getX() + "," + position.getY() + "," + position.getZ()));
}
}
}

View File

@ -0,0 +1,35 @@
package me.bionicbeanie.mods.gui;
import java.util.ArrayList;
import java.util.List;
import io.github.cottonmc.cotton.gui.widget.WGridPanel;
import io.github.cottonmc.cotton.gui.widget.WWidget;
import me.bionicbeanie.mods.api.IRootGridPanel;
public class RootGridPanel extends WGridPanel implements IRootGridPanel{
private List<WWidget> children;
public RootGridPanel() {
this(18);
}
public RootGridPanel(int gridSize){
super(gridSize);
children = new ArrayList<>();
}
@Override
public void add(WWidget widget, int x, int y, int w, int h) {
super.add(widget, x, y, w, h);
this.children.add(widget);
}
@Override
public void reset() {
children.forEach(this::remove);
children.clear();
}
}

View File

@ -0,0 +1,58 @@
package me.bionicbeanie.mods.gui;
import io.github.cottonmc.cotton.gui.client.LightweightGuiDescription;
import me.bionicbeanie.mods.api.IGui;
import me.bionicbeanie.mods.api.IGuiHandler;
import me.bionicbeanie.mods.api.IRootGridPanel;
import me.bionicbeanie.mods.api.IScreenController;
public class SaveCoordinatesGui extends LightweightGuiDescription implements IGui {
private IRootGridPanel rootGridPanel;
private IGuiHandler saveHandler;
private IGuiHandler listHandler;
private IScreenController screenController;
@Override
public void init(IGuiHandler saveHandler, IGuiHandler listHandler, IScreenController screenController) {
this.rootGridPanel = createRootPanel();
this.saveHandler = saveHandler;
this.listHandler = listHandler;
this.screenController = screenController;
openScreen();
}
@Override
public void showDefaultView() {
showView(saveHandler);
}
@Override
public void showListView() {
showView(listHandler);
}
@Override
public void close() {
screenController.closeScreen();
}
private void openScreen() {
screenController.openScreen(new SaveCoordinatesScreen(this));
}
private IRootGridPanel createRootPanel() {
RootGridPanel panel = new RootGridPanel(18);
panel.setSize(7 * 18, 7 * 18);
setRootPanel(panel);
return panel;
}
private void showView(IGuiHandler handler) {
rootGridPanel.reset();
handler.placeWidgets(rootGridPanel);
rootGridPanel.validate(this);
}
}

View File

@ -3,13 +3,10 @@ package me.bionicbeanie.mods.gui;
import io.github.cottonmc.cotton.gui.GuiDescription; import io.github.cottonmc.cotton.gui.GuiDescription;
import io.github.cottonmc.cotton.gui.client.CottonClientScreen; import io.github.cottonmc.cotton.gui.client.CottonClientScreen;
public class CoordinatesScreen extends CottonClientScreen{ public class SaveCoordinatesScreen extends CottonClientScreen {
public CoordinatesScreen(GuiDescription description) { public SaveCoordinatesScreen(GuiDescription description) {
super(description); super(description);
// TODO Auto-generated constructor stub
} }
} }

View File

@ -0,0 +1,84 @@
package me.bionicbeanie.mods.gui;
import java.io.IOException;
import io.github.cottonmc.cotton.gui.widget.WButton;
import io.github.cottonmc.cotton.gui.widget.WText;
import io.github.cottonmc.cotton.gui.widget.WTextField;
import io.github.cottonmc.cotton.gui.widget.WWidget;
import me.bionicbeanie.mods.api.IFileStore;
import me.bionicbeanie.mods.api.IGui;
import me.bionicbeanie.mods.api.IPlayerLocator;
import me.bionicbeanie.mods.api.IRootGridPanel;
import me.bionicbeanie.mods.model.PlayerPosition;
import me.bionicbeanie.mods.model.PlayerRawPosition;
import me.bionicbeanie.mods.util.DimensionSpriteUtil;
import net.minecraft.client.MinecraftClient;
import net.minecraft.text.LiteralText;
public class SaveGuiHandler extends GuiHandlerBase {
private IPlayerLocator locator;
public SaveGuiHandler(IFileStore fileStore, IPlayerLocator locator, MinecraftClient client, IGui gui) {
super(fileStore, gui, client);
this.locator = locator;
}
@Override
public void placeWidgets(IRootGridPanel root) {
PlayerRawPosition rawPosition = locator.locate(client);
WWidget xText = CreateWidgetForCoordinate(rawPosition.getX());
WWidget yText = CreateWidgetForCoordinate(rawPosition.getY());
WWidget zText = CreateWidgetForCoordinate(rawPosition.getZ());
root.add(xText, 0, 1, 2, 1);
root.add(yText, 0, 2, 2, 1);
root.add(zText, 0, 3, 2, 1);
WWidget icon = DimensionSpriteUtil.CreateWorldIcon(rawPosition.getWorldDimension());
root.add(icon, 4, 0, 1, 1);
WTextField name = CreateNameField();
root.add(name, 2, 2, 5, 1);
WWidget save = CreateSaveButton(rawPosition, name);
root.add(save, 5, 5, 2, 1);
WWidget list = CreateListButton();
root.add(list, 0, 5, 2, 1);
}
private WWidget CreateWidgetForCoordinate(long l) {
return new WText(new LiteralText(String.valueOf(l)), 0x3939ac);
}
private WTextField CreateNameField() {
return new WTextField(new LiteralText("name"));
}
private WWidget CreateSaveButton(PlayerRawPosition rawPosition, WTextField textField) {
WButton button = new WButton(new LiteralText("save"));
button.setOnClick(new Runnable() {
@Override
public void run() {
try {
fileStore.save(new PlayerPosition(rawPosition, textField.getText()));
} catch (IOException e) {
e.printStackTrace();
}
gui.close();
}
});
return button;
}
private WWidget CreateListButton() {
WButton button = new WButton(new LiteralText("list"));
button.setOnClick(gui::showListView);
return button;
}
}

View File

@ -0,0 +1,24 @@
package me.bionicbeanie.mods.gui;
import me.bionicbeanie.mods.api.IScreenController;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Screen;
public class ScreenController implements IScreenController {
private MinecraftClient client;
public ScreenController(MinecraftClient client) {
this.client = client;
}
@Override
public void openScreen(Screen screen) {
client.openScreen(screen);
}
@Override
public void closeScreen() {
client.openScreen(null);
}
}

View File

@ -1,29 +0,0 @@
package me.bionicbeanie.mods.impl;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
import me.bionicbeanie.mods.api.ICoordinateListHandler;
import me.bionicbeanie.mods.api.IFileStore;
import me.bionicbeanie.mods.model.PlayerPosition;
public class CoordinateListHandler implements ICoordinateListHandler{
private IFileStore fileStore;
public CoordinateListHandler(IFileStore fileStore) {
this.fileStore = fileStore;
}
@Override
public List<PlayerPosition> list() {
try {
return fileStore.list();
} catch (IOException e) {
return Collections.emptyList();
}
}
}

View File

@ -1,26 +0,0 @@
package me.bionicbeanie.mods.impl;
import java.io.IOException;
import me.bionicbeanie.mods.api.ICoordinateSaveHandler;
import me.bionicbeanie.mods.api.IFileStore;
import me.bionicbeanie.mods.model.PlayerPosition;
public class CoordinateSaveHandler implements ICoordinateSaveHandler{
private IFileStore fileStore;
public CoordinateSaveHandler(IFileStore fileStore) {
this.fileStore = fileStore;
}
@Override
public void save(PlayerPosition position) {
try {
this.fileStore.save(position);
} catch (IOException e) {
e.printStackTrace();
}
}
}

View File

@ -30,8 +30,8 @@ public class FileStore implements IFileStore {
try { try {
Files.createDirectories(Paths.get(baseDir, DEFAULT_DIR)); Files.createDirectories(Paths.get(baseDir, DEFAULT_DIR));
Files.createFile(this.saveFilePath); Files.createFile(this.saveFilePath);
}catch(FileAlreadyExistsException e) { } catch (FileAlreadyExistsException e) {
//ignore // ignore
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
@ -50,8 +50,8 @@ public class FileStore implements IFileStore {
List<PlayerPosition> playerPositionList = new LinkedList<>(); List<PlayerPosition> playerPositionList = new LinkedList<>();
if(positions != null) { if (positions != null) {
for(int i = 0; i < positions.length; ++i) { for (int i = 0; i < positions.length; ++i) {
playerPositionList.add(positions[i]); playerPositionList.add(positions[i]);
} }
} }

View File

@ -1,11 +1,11 @@
package me.bionicbeanie.mods.impl; package me.bionicbeanie.mods.impl;
import me.bionicbeanie.mods.api.IPositionCalculator; import me.bionicbeanie.mods.api.IPlayerLocator;
import me.bionicbeanie.mods.model.PlayerRawPosition; import me.bionicbeanie.mods.model.PlayerRawPosition;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3d;
public class PositionCalculator implements IPositionCalculator { public class PlayerLocator implements IPlayerLocator {
public PlayerRawPosition locate(MinecraftClient client) { public PlayerRawPosition locate(MinecraftClient client) {
Vec3d pos = client.player.getPos(); Vec3d pos = client.player.getPos();